Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 15 von 39
  1. #1
    Luke144 ist offline Mitglied
    registriert
    20-07-2017
    Beiträge
    30

    Lightbulb Google reCAPTCHA v2: JSON Objektabfrage in PHP funkt nicht

    Hallo Leute,

    ich kämpfe seit Tagen mit der Einbindung des Google reCAPTCHA v2 in mein Webformular.
    An sich keine große Sache, würde man meinen.
    Ich habe alles lt. standardisierter Anleitung von Google in mein Formular eingebunden.
    Alle Schritte erscheinen logisch u. plausibel.
    Das Google API liefert folgende Werte zurück:
    https://developers.google.com/recapt...fy#api-request

    Dennoch klappt meine Abfrage des JSON-Objektes in php nicht.
    Entweder bin ich zu blöde od. ich habe etwas übersehen/mißverstanden

    Meine contact.php:
    PHP-Code:
    <?php
    function tohtml($text){
        
    $text=str_replace('ä','&auml;',$text);
        
    $text=str_replace('Ä','&Auml;',$text);
        
    $text=str_replace('ö','&ouml;',$text);
        
    $text=str_replace('Ö','&Ouml;',$text);
        
    $text=str_replace('ü','&uuml;',$text);
        
    $text=str_replace('Ü','&Uuml;',$text);
        
    $text=str_replace('ß','&szlig;',$text);    
        return 
    $text;
    }

    function 
    form_kfwert($kfwert){
        
    $kffehler=form_kfpruef();
        if(isset(
    $_POST['kfsend']) && empty($kffehler)){
            return 
    "";
        }
        else{
            return 
    $kfwert;
        }
    }

    function 
    form_kfpruef(){
        if(empty(
    $_POST['kfmail'])) $kffehler[] = "Email";
        if(empty(
    $_POST['kfnachr'])) $kffehler[] = "Nachricht";
        return 
    $kffehler
    }

    function 
    form_kfcaptcha(){
        
    $secretkey 'xxxxxxxxxx';
        
    $antwortJSON file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secretkey.'&response='.$_POST['g-recaptcha-response']);
        
    $antwortDatenkf json_decode($antwortJSON); 
        
        if(
    $antwortDatenkf->success) {    //###diese Abfrage funktioniert leider nicht###
            
    $kffehlercap="true";  
        }
        else{
            
    $kffehlercap="false";
        }
        return 
    $kffehlercap;
        }                              
    //###-----------------------------------------###

    function form_kfsend($kfmailadresse){
        
    $kfmailinhalt='
    <html>
    Kontaktformular: Nachricht eingegangen am '
    .date("d.m.y, H:i"time()).' Uhr
    <br />
    <br />
    <table>
    <tr>
    <td width="100" height="30">Vorname:</td>
    <td>'
    .tohtml($_POST['kfvname']).'</td>
    </tr>
    <tr>
    <td width="100" height="30">Nachname:</td>
    <td>'
    .tohtml($_POST['kfnname']).'</td>
    </tr>
    <tr>
    <td width="100" height="30">Telefon:</td>
    <td>'
    .$_POST['kftel'].'</td>
    </tr>
    <tr>
    <td width="100" height="30">Email: </td>
    <td>'
    .tohtml($_POST['kfmail']).'</td>
    </tr>
    <tr>
    <td width="100" height="30">Betreff: </td>
    <td>'
    .tohtml($_POST['kfbetr']).'</td>
    </tr>
    <tr>
    <td width="100" height="30">Nachricht: </td>
    <td>'
    .tohtml($_POST['kfnachr']).'</td>
    </tr>
    </table>
    </html>'
    ;

        
    $kfextra "From: ".$kfmailadresse."\n";
          
    $kfextra .= "Content-Type: text/html\n Content-Transfer-Encoding: 8bit\n";
        
    mail($kfmailadresse'Nachricht Kontaktformular'$kfmailinhalt$kfextra);
    }

    if(isset(
    $_POST['kfsend'])){
        
    $kffehler=form_kfpruef();
        
    $kffehlercap=form_kfcaptcha();
        if(empty(
    $kffehler) && ($kffehlercap == "true")){
            
    form_kfsend('mail@mail.net');
            
    $kfhinweis="Vielen Dank für Ihre Nachricht.<br /><br />";
            
    $kfhinweis2=$kffehlercap;
        }
        else{
            
    $kfhinweis="Bitte füllen Sie alle mit * gekennzeichneten Felder aus und lösen Sie das CAPTCHA.";
            
    $kfhinweis2=$kffehlercap;
        }
    }

    ?>


    <script type="text/javascript" src='https://www.google.com/recaptcha/api.js'>
    function see(formfeld) {
        formfeld.setAttribute("class", "form_see");
    }
    function hide(formfeld) {
        formfeld.setAttribute("class", "form_hide");
    }
    </script>

    <div style="margin-left:30px;">
      <h2>Hinterlassen Sie eine Nachricht</h2></div>
    <br />

    <table cellpadding="3" border="0" align="center">
        <form method="post" target="_self">
          <tr>
            <td colspan="4" height="40" align="center"><div style="margin-left:100px;"><b>K O N T A K T F O R M U L A R</b></div></td>
          </tr>
          <tr>
            <td width="100">Vorname</td>
            <td width="150"><input type="text" name="kfvname" class="form_hide" style="width:100%; height:17px;" onFocus="see(this)" onBlur="hide(this)" value="<?php echo form_kfwert($_POST['kfvname']); ?>" /></td>
            <td width="130" align="right">Nachname</td>
            <td width="144"><input type="text" name="kfnname" class="form_hide" style="width:100%; height:17px;" onFocus="see(this)" onBlur="hide(this)" value="<?php echo form_kfwert($_POST['kfnname']); ?>" /></td>
          </tr>
          <tr>
            <td width="100">eMail*</td>
            <td width="150"><input type="text" name="kfmail" class="form_hide" style="width:100%; height:17px;" onFocus="see(this)" onBlur="hide(this)" value="<?php echo form_kfwert($_POST['kfmail']); ?>" /></td>
            <td width="130" align="right">Telefon</td>
            <td width="144"><input type="text" name="kftel" class="form_hide" style="width:100%; height:17px;" onFocus="see(this)" onBlur="hide(this)" value="<?php echo form_kfwert($_POST['kftel']); ?>" /></td>
          </tr>
          <tr>
            <td width="100">Betreff</td>
            <td colspan="3"><div><input type="text" name="kfbetr" class="form_hide" style="width:100%; height:17px;" onFocus="see(this)" onBlur="hide(this)" value="<?php echo form_kfwert($_POST['kfbetr']); ?>" /></td>
          </tr>
          <tr>
            <td width="100" height="160" valign="top">Nachricht*</td>
            <td colspan="3"><textarea class="textarea-box" name="kfnachr" cols="8" rows="10"><?php echo form_kfwert($_POST['kfnachr']); ?></textarea></td>
          </tr>
          <tr>
            <td height="66">&nbsp;</td>
            <td>&nbsp;</td>
            <td colspan="2" align="right"><div class="g-recaptcha" data-sitekey="xxxxxxxxxx"></div></td>
          <tr>
            <td width="100" height="35">&nbsp;</td>
            <td>&nbsp;</td>
            <td colspan="2" align="right"><button type="submit" class="form_see" name="kfsend">Nachricht absenden</button></td>
      </form>
      <tr>
          <td height="20" colspan="4" align="right"><div style="color:#ff7800; font-weight:bold;"><?php if(isset($kfhinweis)) echo $kfhinweis$kfhinweis2;?></div></td>
      </tr>
    </table>
    <br />
    Könnt ihr mir da weiterhelfen?
    Ich bin leider ratlos...

    Gruß Luke
    Geändert von mikdoe (16-06-2018 um 09:28 Uhr) Grund: Gelöst gesetzt

  2. #2
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.643

    AW: Google reCAPTCHA v2: JSON Objekt in PHP abfragen funkt nicht

    Welche Fehlermeldung hast du denn in der Console?
    Das deutsche Javascript Forum http://forum.jswelt.de http://forum.jswelt.de/images/logoJsWeltForumV4_32x22.png
    Sorry wenn ich manchmal ohne Hallo und nur klein schreibe! Dann bin ich nicht unfreundlich sondern mit nervigem kleinem Touch Tablet zugange

  3. #3
    Luke144 ist offline Mitglied
    registriert
    20-07-2017
    Beiträge
    30

    AW: Google reCAPTCHA v2: JSON Objekt in PHP abfragen funkt nicht

    Hmm, also ich lade das file stets direkt via ftp auf den webserver hoch.
    Dreamweaver zeigt mir weder einen lokalen Syntaxfehler, noch kommt ein Fehler im Browser.

  4. #4
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.643

    AW: Google reCAPTCHA v2: JSON Objekt in PHP abfragen funkt nicht

    Dann heißt es debuggen Zeile für Zeile. Zumindest wüsste ich von hier aus ohne den zugehörigen Server auf Anhieb nicht, was ich dazu sagen sollte.
    Das deutsche Javascript Forum http://forum.jswelt.de http://forum.jswelt.de/images/logoJsWeltForumV4_32x22.png
    Sorry wenn ich manchmal ohne Hallo und nur klein schreibe! Dann bin ich nicht unfreundlich sondern mit nervigem kleinem Touch Tablet zugange

  5. #5
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.685

    AW: Google reCAPTCHA v2: JSON Objekt in PHP abfragen funkt nicht

    Mach' mal ein var_dump($antwortDatenkf); und var_dump($antwortJSON);.

  6. #6
    Luke144 ist offline Mitglied
    registriert
    20-07-2017
    Beiträge
    30

    AW: Google reCAPTCHA v2: JSON Objekt in PHP abfragen funkt nicht

    Die echo-Ausgabe beider Variablen lautet:

    var_dump($antwortJSON); NULL
    var_dump($antwortDatenkf); NULL


    D.h. es gibt bereits an dieser Stelle ein Problem:
    PHP-Code:
    $antwortJSON file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secretkey.'&response='.$_POST['g-recaptcha-response']); 
    Egal, ob ich das Captcha löse (grünes Häkchen) oder nicht: Das Google API liefert (zumindest für php) den Wert NULL
    ???
    Geändert von Luke144 (23-05-2018 um 15:26 Uhr)

  7. #7
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.685

    AW: Google reCAPTCHA v2: JSON Objekt in PHP abfragen funkt nicht

    Funktioniert denn der Link, wenn du ihn im Browser eingibst?
    Es kann natürlich auch sein, dass file_get_contents() auf deinem Server für URLs deaktiviert ist (https://secure.php.net/manual/en/fil...llow-url-fopen). Schon mal curl probiert?

  8. #8
    Luke144 ist offline Mitglied
    registriert
    20-07-2017
    Beiträge
    30

    AW: Google reCAPTCHA v2: JSON Objekt in PHP abfragen funkt nicht

    Funktioniert denn der Link, wenn du ihn im Browser eingibst?
    Ja.
    Ich habe folgenden Link eingegeben:
    https://www.google.com/recaptcha/api/siteverify?secret="xxxxxxxxxx"

    Google Ergebnis im Browser:
    Code:
    {
      "success": false,
      "error-codes": [
        "missing-input-response"
      ]
    }
    file_get_contents() auf deinem Server für URLs deaktiviert
    Ich habe diesbezüglich vom Webhoster folg. Antwort erhalten:
    "Externe Verbindungen sind grundsätzlich aus Sicherheitsgründen nur über Port 443 möglich, wenn ich auch Port 80 für ein externes Ziel freischalten soll, übermitteln Sie mir bitte die öffentliche, statische IP oder URL des Ziels, damit ich eine Freischaltung einrichten kann."
    Anm.: Bei den PHP-Einstellungen (v5.6) im Webaccount ist file_get_contents() nicht aufgelistet.
    PhP-Einstellungen.jpg

    Schon mal curl probiert?
    Nein. Wie baue ich das ein?
    PHP: CURL Kontextoptionen - Manual hat mir nicht wirklich weitergeholfen.

    Noch eine Sache ist mir beim Testen aufgefallen:
    Wenn ich das Formular über den SUBMIT Button abschicke, generiert PHP keine Mail (zumindest erhalte ich keine).
    Ich möchte bei der Formularauswertung in derselben php-datei (contact.php) bleiben.
    Die Logik dazu sieht folgendermaßen aus (vollständiges Script siehe Eröffnungsthread):
    1.
    HTML-Code:
    <form method="post" target="_self">
    2.
    HTML-Code:
    <button type="submit" name="kfsend">Nachricht absenden</button>
    3.
    PHP-Code:
    if(isset($_POST['kfsend'])){
        
    $kffehler=form_kfpruef();
        
    $kffehlercap=form_kfcaptcha();
        if(empty(
    $kffehler) && ($kffehlercap == "true")){ //wenn das Formular vollständig ausgefüllt wurde, kommt php wie erwartet in diese Anweisung (ich erhalte auch den positiven Hinweis), nur Mail kommt keine bei mir an
            
    form_kfsend('mail@mail.net');
            
    $kfhinweis="Vielen Dank für Ihre Nachricht.<br /><br />";
            
    $kfhinweis2=$kffehlercap;
        }
        else{
            
    $kfhinweis="Bitte füllen Sie alle mit * gekennzeichneten Felder aus und lösen Sie das CAPTCHA.";
            
    $kfhinweis2=$kffehlercap;
        }

    Ich habe endlos herumprobiert und gegoogelt. Leider komme ich nicht dahinter. .
    Geändert von Luke144 (25-05-2018 um 15:34 Uhr) Grund: Code Tags

  9. #9
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.685

    AW: Google reCAPTCHA v2: JSON Objekt in PHP abfragen funkt nicht

    Ich meine nicht die CURL-Kontextoptionen sondern das: PHP: cURL Funktionen - Manual - suche da einfach mal nach einem Tutorial. Ist nicht zu schwer zu verstehen.

    Zu der Mail: wenn das Captcha nicht als gelöst eingestuft wird, soll doch auch gar keine Mail gesendet werden, oder?

  10. #10
    Luke144 ist offline Mitglied
    registriert
    20-07-2017
    Beiträge
    30

    AW: Google reCAPTCHA v2: JSON Objekt in PHP abfragen funkt nicht

    Zu der Mail: wenn das Captcha nicht als gelöst eingestuft wird, soll doch auch gar keine Mail gesendet werden, oder?
    Das ist richtig. Nehme ich die Captcha-Abfrage testweise heraus, sendet mir php dennoch keine Mail obwohl es die If-Abfrage durchläuft und die Funktion form_kfsend(); ausführt. (gestestet mit Echoausgaben)
    Lasse ich alle Abfragen beiseite und möchte mir nur eine einfache mail von php schicken lassen, funkt es auch nicht. Ich weiß echt nicht woran es liegt
    Kann es mit der Seitennavigation oder mit dem Submit-Aufruf im Form zusammenhängen? Ich bleibe im selben Script (kein action) u. übergebe an kein weiteres php.
    HTML-Code:
    <form method="post" target="_self">
    ???

    Seitennavi (index.php):
    PHP-Code:
    <?php
    include "engine.php";
    #Seitennavigation
    if(isset($_GET['go']) && is_numeric($_GET['go'])) $go=(int)$_GET['go'];
    elseif(isset(
    $_GET['go'])) $go=$_GET['go'];
    else 
    $go='start';
    if(isset(
    $_GET['to'])) $to=(int)$_GET['to'];
    else 
    $to=0;
    if(empty(
    $link[$go][$to]) && $to==0$to=1;
    if(empty(
    $link[$go][$to])){
        
    $go='welcome';
        
    $to=0;
    }
    ?>
    HTML-Code:
    <body>
    <div class="div-main"> <!-- BEGINN zentrierter div-hauptcontainer -->
    <div id="div-menu"><?php include 'menu.php'; ?></div>
    <div id="div-content"><?php include $link[$go][$to]; ?></div>
    </div> <!-- ENDE zentrierter div-hauptcontainer -->

    engine.php
    PHP-Code:
    <?php

    $link
    ['welcome'][0]="home.php";

    $link[0][0]='home.php';
    $link[1][0]='aktuelles.php';
    $link[2][0]='aktiv.php';
    $link[3][0]='ueberuns.php';
    $link[4][0]='anmeldung.php';
    $link[5][0]='kontaktinfo.php';
    $link[6][0]='links.php';

    ?>
    Geändert von Luke144 (28-05-2018 um 09:22 Uhr)

  11. #11
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.685

    AW: Google reCAPTCHA v2: JSON Objekt in PHP abfragen funkt nicht

    Was ist denn der Rückgabewert von mail(...)? True oder false?
    Geändert von kkapsner (05-06-2018 um 23:21 Uhr)

  12. #12
    Luke144 ist offline Mitglied
    registriert
    20-07-2017
    Beiträge
    30

    AW: Google reCAPTCHA v2: JSON Objekt in PHP abfragen funkt nicht

    Leider kein Rückgabewert. Die Variable hat keinen Inhalt.
    Die Ausgabe im Browser ist leer.
    Lt. Google haben viele das Problem, dass Sie den Returnvalue (true/false) von mail nicht abfragen können.

    Ich frage wie folgt ab, klappt leider auch nicht:
    PHP-Code:
    $mail=mail($kfmailadresse'Nachricht Kontaktformular'$kfmailinhalt$kfextra);
    global 
    $mailinhalt;
    $mailinhalt=var_dump($mail);
    echo 
    $mailinhalt
    Eine wichtige Ergänzung an dieser Stelle:
    Ich habe gestern testweise im html form mit action="contact2.php" an eine zweite php-datei übergeben und dort mein Coding hineinkopiert. Siehe da, ich erhalte eine Mail von php! Das Scripting funktioniert also grundsätzlich.
    Es funktioniert nur nicht, wenn ich in derselben php-datei bleibe.
    Deshalb habe ich die PHP-Seitennavigation gepostet. Handelt es sich um ein Reload Problem welches ich nicht erkenne?

    ad curl
    Ich habe mir deinen Link ausführlich angesehen und mich mit curl_init, curl_setopt, etc. beschäftigt.
    Nachdem ich ein paar Tutorials durchgespielt habe, verstehe ich zwar curl etwas besser, es harpert jedoch an der Umsetzung in meinem Anwendungsfall.

    Ansatz:
    PHP-Code:
    $ch curl_init('https://www.google.com/recaptcha/api/siteverify?secret='.$secretkey.'&response='.$_POST['g-recaptcha-response']);
        
    $antwortDaten curl_setopt($ch); 
        
    $result curl_exec ($antwortDaten);
            
    curl_close ($ch);
            return 
    $result//$result liefert leider keine Werte des Google API Response Objekts 
    Anmerkung:
    Lt. phpinfo(); sieht die Config meines Hosters wie folgt aus:
    curl support: enabled
    mail: enabled
    json support: enabled
    file_get_contents: nicht gefunden
    Geändert von Luke144 (29-05-2018 um 13:51 Uhr)

  13. #13
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.685

    AW: Google reCAPTCHA v2: JSON Objekt in PHP abfragen funkt nicht

    Du musst dem curl_setopt() schon auch Optionen mit geben (bei dir wäre auf jeden Fall CURLOPT_RETURNTRANSFER sinnvoll).

    Zu dem Mail-Problem: wie sieht denn dein Test aus, bei dem du eine Mail bekommst? Hast du das wirklich 1 zu 1 kopiert?

  14. #14
    Luke144 ist offline Mitglied
    registriert
    20-07-2017
    Beiträge
    30

    AW: Google reCAPTCHA v2: JSON Objekt in PHP abfragen funkt nicht

    Zu dem Mail-Problem: wie sieht denn dein Test aus, bei dem du eine Mail bekommst? Hast du das wirklich 1 zu 1 kopiert?
    Ja. 1:1 kopiert. Das Script funkt wenn ich an eine zweite php über den action-tag im form übergebe. Ich erhalte eine Mail.
    Bleibe ich im selben php-file, funkt es nicht. Ich erhalte keine Mail.
    Ich vermute, dass deswegen auch die Captcha-Abfrage nicht funkt.
    Kannst du dir meine contact.php (siehe Eröffnungsthread) kurz ansehen? Fällt dir eventuell ein Fehler auf, welchen ich übersehe?
    Geändert von Luke144 (06-06-2018 um 00:35 Uhr)

  15. #15
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.685

    AW: Google reCAPTCHA v2: JSON Objekt in PHP abfragen funkt nicht

    Ich sehe jetzt nichts offensichtliches. Wird denn das "Vielen Dank für Ihre Nachricht." angezeigt?

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

  1. Google Maps Übergabe JSON funktioniert nicht
    Von seppwert im Forum JavaScript
    Antworten: 5
    Letzter Beitrag: 25-08-2013, 23:47
  2. [JSON] - Objekt in Datei speichern
    Von MatzeWagner im Forum JavaScript
    Antworten: 5
    Letzter Beitrag: 19-11-2012, 01:17
  3. AJAX und JSON - ein Array Object der JSON laden nicht alle
    Von kleene-chris85 im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 24-07-2012, 01:57
  4. JSON Objekt zu Javascript-Array?
    Von Veyrne im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 14-10-2011, 15:59
  5. Array in Json-Objekt einfügen
    Von freakyBOi im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 29-05-2011, 21:31

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •