1. Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!
    Information ausblenden

<a><button> geht nicht

Dieses Thema im Forum "HTML, XHTML & CSS" wurde erstellt von Timer, 5 Dezember 2017.

  1. Timer

    Timer Mitglied

    Registriert seit:
    2 August 2017
    Beiträge:
    38
    Punkte für Erfolge:
    6
    Hey,
    ich habe jetzt ne Bezahlfunktion entwickelt, bei der man beim Drücken auf Spenden auf PayPal weitergeleitet werden soll und gleichzeitig die Daten auf dem Server gespeichert werden sollen. Dabei habe ich nun mit <a href="..."><button>... versucht eine Weiterleitung und gleichzeitig das Speichern der Daten zu erreichen. Leider werden die Daten nur gespeichert, jedoch wird man nicht weitergeleitet. Warum?
    Seite: timer.bplaced.net/spenden.php
    Code (text):
    1. <form id="spenden-popup" method="get">
    2.                 <h1 id="spenden-title">Spenden</h1>
    3.                 <fieldset id="spenden-radio">
    4.                     <label>
    5.                         <input type="radio" id="uberweisen" name="spenden" value="v-uberweisen" onclick="spenden_func('div-uberweisen', 'uberweisen')" class="option-buttons">
    6.                         <img src="bilder/ec.jpg" alt="Fehler 404" class="spenden-img"><br>
    7.                     </label>
    8.                     <label>
    9.                         <input type="radio" id="kreditkarte" name="spenden" value="v-kreditkarte" onclick="spenden_func('div-kreditkarte', 'kreditkarte')" class="option-buttons">
    10.                         <img src="bilder/kredit.jpg" alt="Fehler 404" class="spenden-img"><br>
    11.                     </label>
    12.                     <label>
    13.                         <input type="radio" id="paypal" name="spenden" value="v-paypal" onclick="spenden_func('div-paypal', 'paypal')" class="option-buttons">
    14.                         <img src="bilder/paypal.jpg" alt="Fehler 404" class="spenden-img"><br>
    15.                     </label>
    16.                     <label>
    17.                         <input type="radio" id="paysafecard" name="spenden" value="v-paysafecard" onclick="spenden_func('div-paysafecard', 'paysafecard')" class="option-buttons">
    18.                         <img src="bilder/paysafecard.jpg" alt="Fehler 404" class="spenden-img"><br>
    19.                     </label>
    20.                     <label>
    21.                         <input type="radio" id="steamcard" name="spenden" value="v-steamcard" onclick="spenden_func('div-steamcard', 'steamcard')" class="option-buttons">
    22.                         <img src="bilder/steam.jpg" alt="Fehler 404" class="spenden-img"><br>
    23.                     </label>
    24.                     <div id="close-div" onClick="close_spenden_popup()">
    25.                         &#10006;
    26.                     </div>
    27.                 </fieldset>
    28.                 <div id="spenden-right-side" action="">
    29.                     <div id="betrag">
    30.                         <input type="text" placeholder="Vor- und Nachname" name="name-input" id="name-input" class="spenden-inputs">
    31.                         <input type="email" placeholder="E-Mail Adresse" name="email-input" id="email-input" class="spenden-inputs">
    32.                         <input type="text" placeholder="Steam Name" name="steam-name" id="steam-name" class="spenden-inputs">
    33.                         <input type="number" placeholder="Betrag eingeben" name="betrag-input" id="betrag-input" class="spenden-inputs" style="margin-bottom: 10px">€
    34.                         <input type="number" placeholder="PaySafeCard Code" name="paysafecard-input" id="paysafecard-input" class="spenden-inputs" maxlength="16">
    35.                         <input type="number" placeholder="Steam Card Code" name="steam-input" id="steam-input" class="spenden-inputs">
    36.                     </div>
    37.                     <div id="spenden-choose">
    38.                         <div id="div-uberweisen" class="spenden-div">
    39.                             <a href="https://paypal.me/oblivioncomunity/<?php echo $_GET['betrag-input'] ?>" target="_blank"><button type="submit" class="spenden-betrag-button">Spenden</button></a><br>
    40.                             Beim Klicken auf den Spenden Button wirst du auf die PayPal Seite weitergeleitet. Um dort mit einer EC Karte zu bezahlen, braucht man nicht zwingend einen PayPal Account.<br><br>
    41.                             <importa style="font-weight: bold; text-decoration: underline">Wichtig: </importa><br>Bitte ändern Sie den oben angegebenen Betrag nicht mehr nachträglich auf der PayPal Seite, da wir den hier angegebenen Betrag zur Einschätzung unserer Spendeneinnahmen benutzen. Danke
    42.                         </div>
    43.                         <div id="div-kreditkarte" class="spenden-div">
    44.                             <a href="https://paypal.me/oblivioncomunity/<?php echo $_GET['betrag-input'] ?>" target="_blank"><button type="submit" class="spenden-betrag-button">Spenden</button></a><br>
    45.                             Beim Klicken auf den Spenden Button wirst du auf die PayPal Seite weitergeleitet. Um dort mit einer Kreditkarte zu bezahlen, braucht man nicht zwingend einen PayPal Account.<br><br>
    46.                             <importa style="font-weight: bold; text-decoration: underline">Wichtig: </importa><br>Bitte ändern Sie den oben angegebenen Betrag nicht mehr nachträglich auf der PayPal Seite, da wir den hier angegebenen Betrag zur Einschätzung unserer Spendeneinnahmen benutzen. Danke
    47.                         </div>
    48.                         <div id="div-paypal" class="spenden-div">
    49.                             <a href="https://paypal.me/oblivioncomunity/<?php echo $_GET['betrag-input'] ?>" target="_blank"><button type="submit" class="spenden-betrag-button">Spenden</button></a>
    50.                             <br><br>
    51.                             <importa style="font-weight: bold; text-decoration: underline">Wichtig: </importa><br>Bitte ändern Sie den oben angegebenen Betrag nicht mehr nachträglich auf der PayPal Seite, da wir den hier angegebenen Betrag zur Einschätzung unserer Spendeneinnahmen benutzen. Danke
    52.                         </div>
    53.                         <div id="div-paysafecard" class="spenden-div">
    54.                             <button type="submit" class="spenden-betrag-button">Spenden</button>
    55.                             <br><br>
    56.                             <importa style="font-weight: bold; text-decoration: underline">Wichtig: </importa><br>Unabhängig des oben eingegebenen Betrags wird das gesamte Guthaben der angegebenen PaySafeCard abgehoben. Der oben angegebene Betrag dient nur zur Einschätzung unserer Spendeneinnahmen und sollte im Idealfall nicht zu stark von dem Betrag des Guthabens der PaySafeCard abweichen.
    57.                         </div>
    58.                         <div id="div-steamcard" class="spenden-div">
    59.                             <button type="submit" class="spenden-betrag-button">Spenden</button>
    60.                             <br><br>
    61.                             <importa style="font-weight: bold; text-decoration: underline">Wichtig: </importa><br>Unabhängig des oben eingegebenen Betrags wird das gesamte Guthaben der angegebenen Steam Card abgehoben. Der oben angegebene Betrag dient nur zur Einschätzung unserer Spendeneinnahmen und sollte im Idealfall nicht zu stark von dem Betrag des Guthabens der Steam Card abweichen.
    62.                         </div>
    63.                     </div>
    64.                 </div>
    65.             </form>
    66.             <?php
    67.                 if($_GET['name-input'] != "")
    68.                 {
    69.                     if($_GET['email-input'] != "")
    70.                     {
    71.                         if($_GET['steam-name'] != "")
    72.                         {
    73.                             if($_GET['betrag-input'] != "")
    74.                             {
    75.                                 $zahlmethode = $_GET['spenden'];
    76.                                 if ($zahlmethode == "v-paysafecard")
    77.                                 {
    78.                                     if($_GET['paysafecard-input'] != "")
    79.                                     {
    80.                                         $handle = fopen("spenden.txt", "a");
    81.                                         fwrite ($handle, $_GET['name-input']." | ".$_GET['email-input']." | ".$_GET['steam-name']." | ".$_GET['betrag-input']." | ".$_GET['paysafecard-input']." | PaySafeCard \n");
    82.                                         echo "Ihre E-Mail-Adresse wurde gespeichert";
    83.                                     }
    84.                                 }
    85.                                 else if ($zahlmethode == "v-steamcard")
    86.                                 {
    87.                                     if($_GET['steam-input'] != "")
    88.                                     {
    89.                                         $handle = fopen("spenden.txt", "a");
    90.                                         fwrite ($handle, $_GET['name-input']." | ".$_GET['email-input']." | ".$_GET['steam-name']." | ".$_GET['betrag-input']." | ".$_GET['steam-input']." | SteamCard \n");
    91.                                         echo "Ihre E-Mail-Adresse wurde gespeichert";
    92.                                     }
    93.                                 }
    94.                                 else
    95.                                 {
    96.                                     $handle = fopen("spenden.txt", "a");
    97.                                     fwrite ($handle, $_GET['name-input']." | ".$_GET['email-input']." | ".$_GET['steam-name']." | ".$_GET['betrag-input']." | PayPal \n");
    98.                                 }
    99.                             }
    100.                         }
    101.                     }
    102.                 }
    103.             ?>
    MfG
    Timer
     
    Werbung:

    Jetzt registrieren, damit diese Werbung verschwindet
  2. Aaron3219

    Aaron3219 Aktives Mitglied

    Registriert seit:
    6 Oktober 2015
    Beiträge:
    516
    Punkte für Erfolge:
    43
    Das kommt, weil dein Form dein Button ein Absenden des Forms auslöst, der für ein Neuladen der Seite sorgt, anstatt einer Weiterleitung.
    Du hat nun 2 Möglichkeiten:
    • Du benutzt einen Ajax-Request um das neuladen der Seite zu verhindern
    • Du schreibst in dein PHP-File beim Absenden rein, dass eine neue Seite geöffnet werden soll. Jedoch ist ein einem der letzten Threads dabei aufgefallen, dass es ab und zu von manchen Browsern als Popup blockiert wird. Variante 1 hätte das nicht.
     
  3. Timer

    Timer Mitglied

    Registriert seit:
    2 August 2017
    Beiträge:
    38
    Punkte für Erfolge:
    6
    Ok danke. Ich setze es gerade um und melde mich danach wieder
     
  4. Timer

    Timer Mitglied

    Registriert seit:
    2 August 2017
    Beiträge:
    38
    Punkte für Erfolge:
    6
    Ich habe da jetzt ein bisschen was umgeschrieben (alles zu JavaScript umgewandelt und mehr) und habe nun sehr lange gesucht, wie ich in eine Datei schreiben kann. Wenn ich Ajax Request suche, kommt nur eine Möglichkeit, wie ich eine Datei öffnen kann jedoch nicht wie ich reinschreiben kann. Kann mir da jemand eine Funktion oder ein Tutorial schicken (für JavaScript)?
    Oder gibt es eine Möglichkeit, PHP im JavaScript aufzurufen und dort mit fopen und fwrite in die Datei zu schreiben? (da habe ich auch nichts gutes gefunden, was gut funktioniert)
     
  5. Sempervivum

    Sempervivum Aktives Mitglied

    Registriert seit:
    18 Oktober 2016
    Beiträge:
    763
    Punkte für Erfolge:
    43
  6. Aaron3219

    Aaron3219 Aktives Mitglied

    Registriert seit:
    6 Oktober 2015
    Beiträge:
    516
    Punkte für Erfolge:
    43
    Also @Timer ein Ajax-Request führt das PHP-File aus und verhindert ein neuladen der Seite.
    Alles was du also mit den Daten in der Form machen willst, muss in diesem PHP-File gemacht werden.
    Mit PHP kannst du alles mit Dateien machen, also auch reinschreiben.
    Ich hab mich das erste mal auch mit Ajax schwer getan, deswegen hier ein Beispielcode:

    Code (text):
    1.  
    2. function ajaxSendData()
    3. {
    4.     //Jedes input muss eine ID haben. Die trägst du hier ein:
    5.     var name = document.getElementById('name').value;
    6.     var eMail = document.getElementById('eMail').value;
    7.     var termin = document.getElementById('termin').value;
    8.     var message = document.getElementById('message').value;
    9.     //Auch hier tat ich mir das erste mal schwer. Aber falls du ein Google-Recaptcha als kleinen Spamschutz benutzt, funktioniert das so:
    10.     var grecaptcharesponse = document.getElementById('g-recaptcha-response').value;
    11.  
    12.     //Das hier ist der dataString. Ich empfehle die ID genauso wie die Variable oben zu nennen.
    13.     var dataString = 'name=' + name + '&eMail=' + eMail + '&termin=' + termin + '&message=' + message + '&grecaptcharesponse=' + grecaptcharesponse;
    14.     $.ajax({
    15.         type: "post",
    16.         //Hier der Name des PHP-Files, bzw. der Pfad dorthin:
    17.         url: "./php/sendform.php",
    18.         data: dataString,
    19.         cache: false,
    20.         //Wenn durch PHP z.B. ein echo ausgegeben wird (Falls ein Feld leer ist z.B.) dann soll es bei einem Element mit der ID msg ausgegeben werden (optional).
    21.         success: function (html) {
    22.             document.getElementById('msg').html(html);
    23.         }
    24.     });
    25. }
    26.  

    Wichtige Info:

    Du benutzt oben in deinem Form als method="get". Benutze am besten method="post".

    Aber du kannst auch Sempervivum's Vorschlag in Angriff nehmen.

    Edit:
    Vergiss nicht Jquery als Script in deinen Header-Tag einzubinden!!
     
    Zuletzt bearbeitet: 5 Dezember 2017
  7. Timer

    Timer Mitglied

    Registriert seit:
    2 August 2017
    Beiträge:
    38
    Punkte für Erfolge:
    6
    Ich hatte leider erst Zeit, es gestern zu ändern. Gestern hat auch alles wunderbar funktioniert und ich habe bisher nichts mehr geändert. Leider funktioniert es heute plötzlich nicht mehr. Beim klicken des Spenden Buttons kommt folgender Fehler:
    Code (text):
    1. Uncaught TypeError: Cannot read property 'html' of null
    2.     at Object.success (spenden.php:201)
    3.     at i (jquery.min.js:2)
    4.     at Object.fireWith [as resolveWith] (jquery.min.js:2)
    5.     at A (jquery.min.js:4)
    6.     at XMLHttpRequest.<anonymous> (jquery.min.js:4)
    Zeile 201 ist folgende:
    document.getElementById('msg').html(html);
     
  8. Aaron3219

    Aaron3219 Aktives Mitglied

    Registriert seit:
    6 Oktober 2015
    Beiträge:
    516
    Punkte für Erfolge:
    43
    Hast du in deinem Dokument überhaupt ein HTML-Element mit der ID "msg"?
     
  9. Timer

    Timer Mitglied

    Registriert seit:
    2 August 2017
    Beiträge:
    38
    Punkte für Erfolge:
    6
    Oh fail. Ich hab gerade nur beim Fehler gelesen, dass da was mit html falsch ist und hab mir den Befehl gar nicht durchgelesen. Danke ^^
     
  10. Timer

    Timer Mitglied

    Registriert seit:
    2 August 2017
    Beiträge:
    38
    Punkte für Erfolge:
    6
    Ich habe die Seite gerade von meinem billig Webserver auf meinen Root Server gezogen. Leider werden dort die Daten nicht in die txt File geschrieben. Ich habe alle Berechtigungen genau übernommen. Woran liegt das?
     
  11. Aaron3219

    Aaron3219 Aktives Mitglied

    Registriert seit:
    6 Oktober 2015
    Beiträge:
    516
    Punkte für Erfolge:
    43
    Ist der Local oder richtig ein Webserver?
     
  12. Timer

    Timer Mitglied

    Registriert seit:
    2 August 2017
    Beiträge:
    38
    Punkte für Erfolge:
    6
    Root Server auf den ich Apache 2 installiert habe (Host: 1blu)
     
  13. m.scatello

    m.scatello Aktives Mitglied

    Registriert seit:
    15 Februar 2017
    Beiträge:
    378
    Punkte für Erfolge:
    28
    :cool:

    @Timer
    Zeige uns deine PHP-Script und sieh' mal in die Log-Files
     
  14. Timer

    Timer Mitglied

    Registriert seit:
    2 August 2017
    Beiträge:
    38
    Punkte für Erfolge:
    6
    Code (text):
    1. <?php
    2.     if($_POST['zahlmethode'] == "paysafecard") {
    3.         $handle = fopen("spenden.txt", "a");
    4.         fwrite ($handle, $_POST['name']." | ".$_POST['email']." | ".$_POST['steamname']." | ".$_POST['betrag']." | ".$_POST['paysafecard']." | PaySafeCard \n");
    5.         echo "Ihre E-Mail-Adresse wurde gespeichert";
    6.     }
    7.     else if($_POST['zahlmethode'] == "steamcard") {
    8.         $handle = fopen("spenden.txt", "a");
    9.         fwrite ($handle, $_POST['name']." | ".$_POST['email']." | ".$_POST['steamname']." | ".$_POST['betrag']." | ".$_POST['steamcard']." | SteamCard \n");
    10.     }
    11.     else {
    12.         $handle = fopen("spenden.txt", "a");
    13.         fwrite ($handle, $_POST['name']." | ".$_POST['email']." | ".$_POST['steamname']." | ".$_POST['betrag']." | PayPal \n");
    14.     }
    15. ?>
    Code (text):
    1. [Sun Dec 10 20:02:26.609409 2017] [core:error] [pid 20922:tid 140715963127552] (13)Permission denied: [client 95.91.249.232:32753] AH00132: file permissions deny server access: /var/www/html/spenden.txt
    2.  
     
  15. m.scatello

    m.scatello Aktives Mitglied

    Registriert seit:
    15 Februar 2017
    Beiträge:
    378
    Punkte für Erfolge:
    28
    Das sagt doch alles aus!

    Warum speicherst du die Daten nicht in Datenbank?
     
  16. Timer

    Timer Mitglied

    Registriert seit:
    2 August 2017
    Beiträge:
    38
    Punkte für Erfolge:
    6
    Ich hab auch schon gesucht, jedoch nichts gefunden. Ich habe bei Berechtigungen von spenden.txt auf jeden Fall schreiben zugelassen.
     
  17. m.scatello

    m.scatello Aktives Mitglied

    Registriert seit:
    15 Februar 2017
    Beiträge:
    378
    Punkte für Erfolge:
    28
    Da vertraue ich PHP mehr als dir. Die Fehlermeldung lässt da keine Zweifel offen.

    So sieht das auch schöner aus:
    PHP:
    1. <?php
    2.     if (isset($_POST['zahlmethode']))
    3.     {
    4.        switch ($_POST['zahlmethode'])
    5.        {
    6.           case "paysafecard":
    7.                 $output = $_POST['name'] . " | " .
    8.                           $_POST['email'] . " | " .
    9.                           $_POST['steamname'] . " | " .
    10.                           $_POST['betrag'] . " | " .
    11.                           $_POST['paysafecard'] . " | PaySafeCard \n";
    12.                 break;
    13.           case "steamcard":
    14.                 $output = $_POST['name'] . " | " .
    15.                           $_POST['email'] . " | " .
    16.                           $_POST['steamname'] . " | " .
    17.                           $_POST['betrag'] . " | " .
    18.                           $_POST['steamcard'] . " | SteamCard \n";
    19.                 break;
    20.           default:
    21.                 $output = $_POST['name'] . " | " .
    22.                           $_POST['email'] . " | " .
    23.                           $_POST['steamname'] . " | " .
    24.                           $_POST['betrag'] . " | PayPal \n";
    25.                 break;
    26.        }
    27.      
    28.        $handle = @fopen("spenden.txt", "a");
    29.      
    30.        if ($handle)
    31.        {
    32.          fwrite ($handle,$output);
    33.          fclose($handle);
    34.       }
    35.       else
    36.         die ("File open error");
    37.    }
    38. ?>
    39.  
     
  18. Timer

    Timer Mitglied

    Registriert seit:
    2 August 2017
    Beiträge:
    38
    Punkte für Erfolge:
    6
    Bringt leider auch nichts.
    PS:
    Die richtige Webseite ist auf http://oblivion-gaming.de
    Falls du es selber ausprobieren willst.
     
  19. m.scatello

    m.scatello Aktives Mitglied

    Registriert seit:
    15 Februar 2017
    Beiträge:
    378
    Punkte für Erfolge:
    28
    Ich behaupte ja nicht, dass mein Script das Problem löst. Fakt ist, dass die Rechte der Datei nicht passen.
     
  20. Timer

    Timer Mitglied

    Registriert seit:
    2 August 2017
    Beiträge:
    38
    Punkte für Erfolge:
    6
    Ich habe bei der spenden.txt und bei jedem Ordner, wo die Datei drin ist, die Berechtigungen testweise auf 777 gestellt. Das hats auch nicht gelöst