Ik krijg geen response na het verzenden mail met reCaptcha V3

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java Ontwikkelaar

Opdrachtbeschrijving Het scrumteam houdt zich bezig met boeiend en zichtbaar werk waarin allerlei kanten van de IT aan bod komen zoals gebruikersinteractie, belastingdienst java ontwikkelstraat, databases en koppelvlakken. Dit team ontwikkelt verschillende applicaties voor Dienstverlening waaronder GID(Generiek Informaten Desktop). Dit is een applicatie die de medewerkers van de Belastingtelefoon gebruiken voor het beantwoorden van vragen. Tevens werkt het team aan de ontwikkeling van bestaande en nieuwe formulieren voor verschillende portalen (Douane, Zakelijke en Burger) en diverse generieke voorzieningen.Performance en security zijn vanzelfsprekend uitermate belangrijke aspecten. In het team wordt bovendien veel aandacht besteed aan kwaliteit, onder andere door middel van

Bekijk vacature »

Edwin Sabel

Edwin Sabel

22/03/2020 16:29:35
Quote Anchor link
Ik weet niet wat ik fout doe, als ik een mail verstuur krijg ik wel de mail binnen maar geen melding. Hetzelfde type script gebruik ik voor een terugbelverzoek en deze werkt wel. (is een kleinere versie).
Wie kan mij op weg helpen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php
define( "RECAPTCHA_V3_SECRET_KEY", 'XXXXXXXXXXXXXXXXXXXXXXXXXxxxxxxxxxx' );

if ( isset( $_POST[ 'email' ] ) && $_POST[ 'email' ] ) {
  $email = filter_var( $_POST[ 'email' ], FILTER_SANITIZE_STRING );
}
else {
  // set error message and redirect back to form...
  // echo "<script> alert('Je bericht kon niet worden verzonden.')</script>";

  exit;
}


    $token = $_POST[ 'token' ];
    $action = $_POST[ 'action' ];
// Sender's Name
    $name = $_POST[ "name" ];

// call curl to POST request
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, "https://www.google.com/recaptcha/api/siteverify" );
curl_setopt( $ch, CURLOPT_POST, 1 );
curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( array( 'secret' => RECAPTCHA_V3_SECRET_KEY, 'response' => $token ) ) );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$response = curl_exec( $ch );
curl_close( $ch );
$arrResponse = json_decode( $response, true );

// verify the response
if ( $arrResponse[ "success" ] == '1' && $arrResponse[ "action" ] == $action && $arrResponse[ "score" ] >= 0.7 ) {
  echo "Uw CAPTCHA response was verkeerd";
  exit;
}
else {

// controle op lege velden..
  if ( $_POST[ "email" ] == "" ) {
    echo "Niet alle velden zijn ingevuld";
  }
else {

// Check if the "Sender's Email" input field is filled out
    $email = $_POST[ "email" ];

// Sanitize E-mail Address
    $email = filter_var( $email, FILTER_SANITIZE_EMAIL );

// Validate E-mail Address
    $email = filter_var( $email, FILTER_VALIDATE_EMAIL );
    if ( !$email ) {
      echo "<script> alert('foutief emailadres')</script>";
    }
else {
      $to = "ixxx@xxxxding.nl";
      $subject = "Website formulier";
      $message = "Afzender: " . $_POST[ "name" ] . "\r\n" . "Email: " . $_POST[ "email" ] . "\r\n" ."Bericht: " . $_POST[ "message" ];
      $headers = "From:" . $email . "\r\n";

// Message lines should not exceed 70 characters (PHP rule), so wrap it
      $message = wordwrap( $message, 70, "\r\n" );

// Send Mail By PHP Mail Function
      if ( mail( $to, $subject, $message, $headers ) ) {
        echo "<script> alert('$name bedank voor uw bericht. Wij zullen u zo snel mogelijk antwoorden.');
                            window.location.href='index.html';
                            </script>"
;
      }
else {
        echo "<script> alert('Je bericht kon niet worden verzonden. Verander je e-mailadres of neem contact op met $to.')</script>";
        exit;
      }
    }
  }
}

?>
Gewijzigd op 22/03/2020 16:58:34 door Edwin Sabel
 
PHP hulp

PHP hulp

31/03/2020 22:12:38
 
Frank Nietbelangrijk

Frank Nietbelangrijk

22/03/2020 16:32:07
Quote Anchor link
Wat voor melding verwacht je?
 
- Ariën -
Beheerder

- Ariën -

22/03/2020 16:33:18
Quote Anchor link
Ik raad aan om je mailadres hier even uit je code te halen, voordat deze door spambotjes wordt opgespoord.
Bedoel je verder dat de mail leeg is?
Gewijzigd op 22/03/2020 16:33:36 door - Ariën -
 
Edwin Sabel

Edwin Sabel

22/03/2020 17:00:43
Quote Anchor link
Ik verwacht een alert met de melding "$name bedank voor uw bericht. Wij zullen u zo snel mogelijk antwoorden.". Het email bericht wordt volledig opgemaakt gestuurd met alle info.
Ik krijg wel een bericht bij het terugbel script met de melding en de mogelijkheid om ok te klikken en dan ga je terug naar index.html
Gewijzigd op 22/03/2020 17:02:16 door Edwin Sabel
 
- Ariën -
Beheerder

- Ariën -

22/03/2020 17:02:43
Quote Anchor link
Maar wat zie je dan wel? En waarom eigenlijk een alert, en niet gewoon direct op het scherm tonen?
 
Edwin Sabel

Edwin Sabel

22/03/2020 17:03:40
Quote Anchor link
Overigens ik krijg nu al spam binnen via dit webformulier??
 
- Ariën -
Beheerder

- Ariën -

22/03/2020 17:06:50
Quote Anchor link
Maar wat zie je nu dan?

Als je spam tegen wilt houden, dan is reCaptcha een goede oplossing:
https://stevencotterill.com/articles/adding-google-recaptcha-v3-to-a-php-form
Gewijzigd op 22/03/2020 17:07:00 door - Ariën -
 
Edwin Sabel

Edwin Sabel

22/03/2020 17:11:56
Quote Anchor link
Als je kijkt op de website dieetbegeleiding.nl kun je een terugbel verzoek doen en krijg je een alert, onderaan bij het mailform gaat hij naar de submit.php pagina en blijft daar hangen.
Ik vind dit een mooie oplossing vandaar dat ik dit zo gemaakt heb.
Probeer maar eens.
Gewijzigd op 22/03/2020 17:12:24 door Edwin Sabel
 
- Ariën -
Beheerder

- Ariën -

22/03/2020 17:14:18
Quote Anchor link
Alert vind ik persoonlijk niet echt bedoeld voor zulke dingen. Maar wat bedoel je: Blijft hangen?
Wat gebeurt er precies? Blijft hij zoeken naar een bepaalde URL? Of zie je een leeg scherm na het volledig laden?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

22/03/2020 17:15:02
Quote Anchor link
Ik zie overigens ook helemaal geen HTML? en een <script> blok met een alert(); hoort toch wel in een <body> blok thuis welke op zijn beurt weer in een <html> blok hoort.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<!doctype>
<html>
    <head>
        <title>hallo</title>
    </head>
    <body>
        <script>
            alert('test');
        </script>
    </body>
</html>
 
Edwin Sabel

Edwin Sabel

22/03/2020 17:15:58
Quote Anchor link
- Ariën - op 22/03/2020 17:06:50:
Maar wat zie je nu dan?

Als je spam tegen wilt houden, dan is reCaptcha een goede oplossing:
https://stevencotterill.com/articles/adding-google-recaptcha-v3-to-a-php-form


Ik gebruik juist reCaptcha V3, maar ben blijkbaar nog niet goed bezig.
 
- Ariën -
Beheerder

- Ariën -

22/03/2020 17:18:30
Quote Anchor link
Misschien moet je de response even uitlezen (ergens loggen), en kijken welke score Google die meegeeft?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

22/03/2020 17:19:25
Quote Anchor link
>> Ik gebruik juist reCaptcha V3, maar ben blijkbaar nog niet goed bezig.

Dat je nog geen alert krijgt hoeft niet te betekenen dat je reCaptcha niet goed werkt. Het zijn twee verschillende dingen. Heb je mijn laatste post gelezen? Anders moet je gewoon debuggen. Stap voor stap door je code heenlopen en met een simpele echo 'WERKT'; in een if statement uitvogelen of een if statement wordt uitgevoerd of overgeslagen.
 
Edwin Sabel

Edwin Sabel

22/03/2020 17:32:35
Quote Anchor link
Frank Nietbelangrijk op 22/03/2020 17:15:02:
Ik zie overigens ook helemaal geen HTML? en een <script> blok met een alert(); hoort toch wel in een <body> blok thuis welke op zijn beurt weer in een <html> blok hoort.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<!doctype>
<html>
    <head>
        <title>hallo</title>
    </head>
    <body>
        <script>
            alert('test');
        </script>
    </body>
</html>


Dit snap ik niet helemaal, bij mijn terugbel verzoek werkt het wel en heb ik ook geen html blok, alleen de alert functie in mijn php pagina.
 
- Ariën -
Beheerder

- Ariën -

22/03/2020 17:41:43
Quote Anchor link
Hoe krijg ik een alert, zie een lege site erachter, en ik ga weer terug.
Kan je dit niet via een AJAX-request doen?

Verstuur het formulier via AJAX
- Controleer de invoer (waarom mag ik 'test' invullen?)
- Verstuur deinvoer
- Toon onderin een melding met: "Je verzoek is verstuurd, we bellen je snel mogelijk terug"

Veel netter :-)
 
Frank Nietbelangrijk

Frank Nietbelangrijk

22/03/2020 17:50:54
Quote Anchor link
>> Dit snap ik niet helemaal, bij mijn terugbel verzoek werkt het wel en heb ik ook geen html blok, alleen de alert functie in mijn php pagina.

Misschien dat een browser het wel oppakt maar het is niet zoals het zou moeten. Dan blijft debuggen dus over!
 
Edwin Sabel

Edwin Sabel

22/03/2020 17:51:14
Quote Anchor link
Ik ben niet bekend met AJAX, en vond dit al knap van mezelf.
Er is geen check op veldinhoud, alleen of deze leeg is. (moet ik nog kijken hoe dat werkt)
Maar blijft waarom de ene wel werkt en de andere niet.
Dit is de wel werkende.
<!--script terugbellen-->
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
define( "RECAPTCHA_V3_SECRET_KEY", 'xxxxxxxxxxxxxxxxxxxxxxxxxxx' );

if ( isset( $_POST[ 'phone' ] ) && $_POST[ 'phone' ] ) {
  $email = filter_var( $_POST[ 'phone' ], FILTER_SANITIZE_STRING );
}
else {
  // set error message and redirect back to form...
  //header('location: index.html');

  exit;
}


$token = $_POST[ 'token' ];
$action = $_POST[ 'action' ];

// call curl to POST request
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, "https://www.google.com/recaptcha/api/siteverify" );
curl_setopt( $ch, CURLOPT_POST, 1 );
curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( array( 'secret' => RECAPTCHA_V3_SECRET_KEY, 'response' => $token ) ) );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$response = curl_exec( $ch );
curl_close( $ch );
$arrResponse = json_decode( $response, true );

// verify the response
if ( $arrResponse[ "success" ] == '1' && $arrResponse[ "action" ] == $action && $arrResponse[ "score" ] >= 0.5 ) {
  echo "Uw CAPTCHA response was verkeerd.";
  exit;
}
else {
  // controle op lege velden..
  if ( $_POST[ "phone" ] == "" ) {
    echo "Uw telefoonnummer is niet ingevuld";
  }
else {
    $to = "sabelmobiel@ziggo.nl";
    $subject = "Terugbel formulier";
    $message = $_POST[ "phone" ];
    $headers = "From:ixxxa@xxxxxiding.nl";

    // Send Mail By PHP Mail Function
    if ( mail( $to, $subject, $message, $headers ) ) {
      echo "<script> alert('Bedank voor uw bericht. Wij bellen u terug op nummer $message');
                            window.location.href='index.html';
                            </script>"
;
    }
else {
      echo "<script> alert ('Je bericht kon niet worden verzonden. Probeer het later nog eens.')</script>";
      exit;
    }
  }
}

?>
Gewijzigd op 22/03/2020 17:52:32 door Edwin Sabel
 
Frank Nietbelangrijk

Frank Nietbelangrijk

22/03/2020 17:53:48
Quote Anchor link
Dat weten we nu nog niet maar doe eens een echo $arrResponse['score']; ?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.