PHP met google reCAPTCHA werkt niet goed

Pagina: 1
Acties:
  • 566 views

Vraag


Acties:
  • 0 Henk 'm!

  • snellius777
  • Registratie: Oktober 2016
  • Laatst online: 24-07 14:49
is er iemand bereid om naar de onderstaande php code te kijken? ik ben niet heel erg ervaren met PHP maar wil graag dat mijn formulier de google reCAPTCHA bevat.
ik heb hem kunnen toevoegen. zonder de reCAPTCHA werkte het formulier maar na het toevoegen hiervan werkt het niet meer.

ik hoor dat iemand hier even naar zou willen kijken!
Volgens mij loopt het met name stuk op >>>>>>>header('location: contact.php?CaptchaPass=True');
>>>>>>>header('location: contact.php?CaptchaFail=True');

Alvast onwijs bedankt voor de hulp


<?php
if(isset($_POST['Verzenden'])){

$url = 'https://www.google.com/recaptcha/api/siteverify';
$privatekey = "---PrivateKEY---";

$response = file_get_contents($url."?secret=".$privatekey."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']);

$data = json_decode($response);

if(isset($data->succes) AND $data->succes==true){


$email_to = "test@test.nl";
$email_subject = "bericht vanaf de website";


$name = $_POST["name"];
$company = $_POST["company"];
$email_from = $_POST["email"];
$phonenumber = $_POST["phonenumber"];
$locatie = $_POST["locatie"];
$message = $_POST["message"];


if(!filter_var($email_from, FILTER_VALIDATE_EMAIL)) {
die("Het e-mail adres is niet juist.");
}


$headers = "From: " . $email_from . "\r\n";
$headers .= "Reply-To: " . $email_from . "\r\n";


$message = "Naam: ". $name . "\r\nMail-Adres: " . $email_from . "\r\nBedrijfsnaam: " . $company . "\r\nTelefoon Nr: " . $phonenumber . "\r\nGewenste Vlieglocatie: " . $locatie . "\r\nBericht/vraag: " . $message;


ini_set("sendmail_from", $email_from);


$sent = mail($email_to, $email_subject, $message, $headers, "-f" . $email_from);


}else{
header('location: contact.php?CaptchaPass=True');
header('location: contact.php?CaptchaFail=True');


}
}

?>

<!doctype html>
<!--[if lt IE 7]> <html class="ie6 oldie"> <![endif]-->
<!--[if IE 7]> <html class="ie7 oldie"> <![endif]-->
<!--[if IE 8]> <html class="ie8 oldie"> <![endif]-->
<!--[if gt IE 8]><!-->
<html class="">
<!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<link rel="icon" type="image/png" href="O-Transparant.png" sizes="16x16">
<link rel="icon" type="image/png" href="O-Transparant.png" sizes="32x32">
<link href="css/boilerplate.css" rel="stylesheet" type="text/css">
<link href="css/responsive.css" rel="stylesheet" type="text/css">
<link href="SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css">
<link href="SpryAssets/SpryValidationTextarea.css" rel="stylesheet" type="text/css">

<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

<script src="SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
<script src="SpryAssets/SpryValidationTextarea.js" type="text/javascript"></script>
<script src='https://www.google.com/recaptcha/api.js'></script>
</head>
<body>
<div class="gridContainer clearfix">
<div id="Header"><a href="index.html"><img src="../logo2.PNG"></a></div>
<div id="menu"><a href="About-Us.html"><img src="../Aboutus3.png" name="mabout" id="mabout"></a><a href="Portfolio.html"><img src="../Portfolio3.png" name="mportfolio" id="mportfolio"></a><a href="Contact.html"><img src="../contact3.png" name="mcontact" id="mcontact"></a></div>
<div id="Div1ContactTekst"> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."</p></div>
<div id="Div2ContactFormulier"><form action="contact.php" method="post" id="contactformulier">
<?php if(isset($_GET['CaptchaPass'])){ ?>
<div class="Div1Contactverzonden">Uw berciht is verzonden</div>
<?php } ?>
<?php if(isset($_GET['CaptchaFail'])){ ?>
<div class="Div1Contactverzonden">Uw berciht is NIET verzonden</div>
<?php } ?>
<p>Naam:*
<br>
<input name="name" type="text" />
<p>E-mail adres:*<br>
<span id="sprytextfield3">
<input name="email" type="text" />
<span class="textfieldRequiredMsg"></span><span class="textfieldInvalidFormatMsg"></span></span>
<p>Bedrijfsnaam:
<br>
<input name="company" type="text" id="company" />
<p>Telefoonnummer:*<br>
<span id="sprytextfield4">
<input name="phonenumber" type="text" id="phonenumber" />
<span class="textfieldInvalidFormatMsg"></span><span class="textfieldRequiredMsg"></span></span>
<p>Gewenste vlieglocatie:<br>
<input type="text" name="locatie" id="locatie">
<p>Uw bericht/vraag:*<br />
<textarea name="message" rows="15" cols="40"></textarea><p>
<div class="g-recaptcha" data-sitekey="---DATA-SITEKEY---"></div>
<input name="Verzenden" type="submit" id="Verzenden" value="Verzenden"/>
</form></div>
<div id="footer"><img src="../bar1.png"></div>
<script type="text/javascript">
var sprytextfield3 = new Spry.Widget.ValidationTextField("sprytextfield3", "email");
var sprytextfield4 = new Spry.Widget.ValidationTextField("sprytextfield4", "phone_number", {format:"phone_custom", validateOn:["change"], pattern:"0000000000"});
</script>
</body>
</html>

Alle reacties


Acties:
  • 0 Henk 'm!

  • V-rg
  • Registratie: Juni 2007
  • Laatst online: 10-10 20:26
Het is beter als je je code even in een code tag plaatst, maakt het iets overzichterlijker

Als ik even snel kijk naar de code van andere personen zie ik dat deze header regel: "header('location: contact.php?CaptchaPass=True');" geplaatst wordt na de succes variabele. Echter zie ik ook andere weer deze header functie compleet niet gebruiken.... dus kan zijn dat het misschien werkt als je het helemaal weghaald.

Edit: Zover ik zie is de header functie inderdaad niet nodig, want ga vanuit dat het bedoelt is als je een if($_GET['CaptchaPass'] == true) gebruikt in je code, aangezien ik nergens een verwijzing zie naar deze key. Ik zou gewoon bij de else onderaan je error message echo'en of iets dergelijks. De code hieronder is dus nog voor deze edit met de header functie.

Probeer dit eens:

code:
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php
if(isset($_POST['Verzenden'])){

$url = 'https://www.google.com/recaptcha/api/siteverify';
$privatekey = "---PrivateKEY---";

$response = file_get_contents($url."?secret=".$privatekey."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']);

$data = json_decode($response);

if(isset($data->succes) AND $data->succes==true){
header('location: contact.php?CaptchaPass=True');   

$email_to = "test@test.nl"; 
$email_subject = "bericht vanaf de website"; 


$name = $_POST["name"];
$company = $_POST["company"];
$email_from = $_POST["email"];
$phonenumber = $_POST["phonenumber"];
$locatie = $_POST["locatie"];
$message = $_POST["message"];


if(!filter_var($email_from, FILTER_VALIDATE_EMAIL)) {
die("Het e-mail adres is niet juist.");
}


$headers = "From: " . $email_from . "\r\n";
$headers .= "Reply-To: " . $email_from . "\r\n";    


$message = "Naam: ". $name . "\r\nMail-Adres: " . $email_from . "\r\nBedrijfsnaam: " . $company . "\r\nTelefoon Nr: " . $phonenumber . "\r\nGewenste Vlieglocatie: " . $locatie . "\r\nBericht/vraag: " . $message;


ini_set("sendmail_from", $email_from);


$sent = mail($email_to, $email_subject, $message, $headers, "-f" . $email_from);


}else{
header('location: contact.php?CaptchaFail=True');   


}
}

?>

<!doctype html>
<!--[if lt IE 7]> <html class="ie6 oldie"> <![endif]-->
<!--[if IE 7]> <html class="ie7 oldie"> <![endif]-->
<!--[if IE 8]> <html class="ie8 oldie"> <![endif]-->
<!--[if gt IE 8]><!-->
<html class="">
<!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<link rel="icon" type="image/png" href="O-Transparant.png" sizes="16x16">
<link rel="icon" type="image/png" href="O-Transparant.png" sizes="32x32">
<link href="css/boilerplate.css" rel="stylesheet" type="text/css">
<link href="css/responsive.css" rel="stylesheet" type="text/css">
<link href="SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css">
<link href="SpryAssets/SpryValidationTextarea.css" rel="stylesheet" type="text/css">

<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

<script src="SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
<script src="SpryAssets/SpryValidationTextarea.js" type="text/javascript"></script>
<script src='https://www.google.com/recaptcha/api.js'></script>
</head>
<body>
<div class="gridContainer clearfix">
<div id="Header"><a href="index.html"><img src="../logo2.PNG"></a></div>
<div id="menu"><a href="About-Us.html"><img src="../Aboutus3.png" name="mabout" id="mabout"></a><a href="Portfolio.html"><img src="../Portfolio3.png" name="mportfolio" id="mportfolio"></a><a href="Contact.html"><img src="../contact3.png" name="mcontact" id="mcontact"></a></div>
<div id="Div1ContactTekst"> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."</p></div>
<div id="Div2ContactFormulier"><form action="contact.php" method="post" id="contactformulier"> 
<?php if(isset($_GET['CaptchaPass'])){ ?>
<div class="Div1Contactverzonden">Uw berciht is verzonden</div>
<?php } ?>
<?php if(isset($_GET['CaptchaFail'])){ ?>
<div class="Div1Contactverzonden">Uw berciht is NIET verzonden</div>
<?php } ?>
<p>Naam:* 
<br>
<input name="name" type="text" />
<p>E-mail adres:*<br>
<span id="sprytextfield3">
<input name="email" type="text" />
<span class="textfieldRequiredMsg"></span><span class="textfieldInvalidFormatMsg"></span></span>
<p>Bedrijfsnaam:
<br>
<input name="company" type="text" id="company" /> 
<p>Telefoonnummer:*<br>
<span id="sprytextfield4">
<input name="phonenumber" type="text" id="phonenumber" />
<span class="textfieldInvalidFormatMsg"></span><span class="textfieldRequiredMsg"></span></span>
<p>Gewenste vlieglocatie:<br>
<input type="text" name="locatie" id="locatie"> 
<p>Uw bericht/vraag:*<br /> 
<textarea name="message" rows="15" cols="40"></textarea><p>
<div class="g-recaptcha" data-sitekey="---DATA-SITEKEY---"></div>   
<input name="Verzenden" type="submit" id="Verzenden" value="Verzenden"/>
</form></div>
<div id="footer"><img src="../bar1.png"></div>
<script type="text/javascript">
var sprytextfield3 = new Spry.Widget.ValidationTextField("sprytextfield3", "email");
var sprytextfield4 = new Spry.Widget.ValidationTextField("sprytextfield4", "phone_number", {format:"phone_custom", validateOn:["change"], pattern:"0000000000"});
</script>
</body>
</html>

[ Voor 3% gewijzigd door V-rg op 04-10-2016 14:09 . Reden: Nog niet tevreden helemaal met mn comment ]


Acties:
  • 0 Henk 'm!

  • snellius777
  • Registratie: Oktober 2016
  • Laatst online: 24-07 14:49
Allereerst heel erg bedankt voor je reactie!

ik heb zojuist je code geprobeerd.

maar na het invullen van het formulier krijg ik nog steeds "Uw berciht is NIET verzonden" terug.

en ik krijg ook daadwerkelijk geen mailtje.

Acties:
  • 0 Henk 'm!

  • V-rg
  • Registratie: Juni 2007
  • Laatst online: 10-10 20:26
snellius777 schreef op dinsdag 04 oktober 2016 @ 14:22:
Allereerst heel erg bedankt voor je reactie!

ik heb zojuist je code geprobeerd.

maar na het invullen van het formulier krijg ik nog steeds "Uw berciht is NIET verzonden" terug.

en ik krijg ook daadwerkelijk geen mailtje.
Had je al geprobeerd zonder die headers? (kan zijn dat door header location dat hij de $data->succes niet meer pakt). Heb trouwens ook de Remote IP gedeelte weggehaald, dat is niet nodig zover ik het begrijp.

Dus het volgende code:

code:
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php
if(isset($_POST['Verzenden'])){

$url = 'https://www.google.com/recaptcha/api/siteverify';
$privatekey = "---PrivateKEY---";

$response = file_get_contents($url."?secret=".$privatekey."&response=".$_POST['g-recaptcha-response']);

$data = json_decode($response);

if(isset($data->succes) AND $data->succes==true){

$email_to = "test@test.nl"; 
$email_subject = "bericht vanaf de website"; 


$name = $_POST["name"];
$company = $_POST["company"];
$email_from = $_POST["email"];
$phonenumber = $_POST["phonenumber"];
$locatie = $_POST["locatie"];
$message = $_POST["message"];


if(!filter_var($email_from, FILTER_VALIDATE_EMAIL)) {
die("Het e-mail adres is niet juist.");
}


$headers = "From: " . $email_from . "\r\n";
$headers .= "Reply-To: " . $email_from . "\r\n";    


$message = "Naam: ". $name . "\r\nMail-Adres: " . $email_from . "\r\nBedrijfsnaam: " . $company . "\r\nTelefoon Nr: " . $phonenumber . "\r\nGewenste Vlieglocatie: " . $locatie . "\r\nBericht/vraag: " . $message;


ini_set("sendmail_from", $email_from);


$sent = mail($email_to, $email_subject, $message, $headers, "-f" . $email_from);


}else{

echo "Helaas pindakaas, Captcha is niet goed";


}
}

?>

<!doctype html>
<!--[if lt IE 7]> <html class="ie6 oldie"> <![endif]-->
<!--[if IE 7]> <html class="ie7 oldie"> <![endif]-->
<!--[if IE 8]> <html class="ie8 oldie"> <![endif]-->
<!--[if gt IE 8]><!-->
<html class="">
<!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<link rel="icon" type="image/png" href="O-Transparant.png" sizes="16x16">
<link rel="icon" type="image/png" href="O-Transparant.png" sizes="32x32">
<link href="css/boilerplate.css" rel="stylesheet" type="text/css">
<link href="css/responsive.css" rel="stylesheet" type="text/css">
<link href="SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css">
<link href="SpryAssets/SpryValidationTextarea.css" rel="stylesheet" type="text/css">

<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

<script src="SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
<script src="SpryAssets/SpryValidationTextarea.js" type="text/javascript"></script>
<script src='https://www.google.com/recaptcha/api.js'></script>
</head>
<body>
<div class="gridContainer clearfix">
<div id="Header"><a href="index.html"><img src="../logo2.PNG"></a></div>
<div id="menu"><a href="About-Us.html"><img src="../Aboutus3.png" name="mabout" id="mabout"></a><a href="Portfolio.html"><img src="../Portfolio3.png" name="mportfolio" id="mportfolio"></a><a href="Contact.html"><img src="../contact3.png" name="mcontact" id="mcontact"></a></div>
<div id="Div1ContactTekst"> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."</p></div>
<div id="Div2ContactFormulier"><form action="contact.php" method="post" id="contactformulier"> 
<?php if(isset($_GET['CaptchaPass'])){ ?>
<div class="Div1Contactverzonden">Uw berciht is verzonden</div>
<?php } ?>
<?php if(isset($_GET['CaptchaFail'])){ ?>
<div class="Div1Contactverzonden">Uw berciht is NIET verzonden</div>
<?php } ?>
<p>Naam:* 
<br>
<input name="name" type="text" />
<p>E-mail adres:*<br>
<span id="sprytextfield3">
<input name="email" type="text" />
<span class="textfieldRequiredMsg"></span><span class="textfieldInvalidFormatMsg"></span></span>
<p>Bedrijfsnaam:
<br>
<input name="company" type="text" id="company" /> 
<p>Telefoonnummer:*<br>
<span id="sprytextfield4">
<input name="phonenumber" type="text" id="phonenumber" />
<span class="textfieldInvalidFormatMsg"></span><span class="textfieldRequiredMsg"></span></span>
<p>Gewenste vlieglocatie:<br>
<input type="text" name="locatie" id="locatie"> 
<p>Uw bericht/vraag:*<br /> 
<textarea name="message" rows="15" cols="40"></textarea><p>
<div class="g-recaptcha" data-sitekey="---DATA-SITEKEY---"></div>   
<input name="Verzenden" type="submit" id="Verzenden" value="Verzenden"/>
</form></div>
<div id="footer"><img src="../bar1.png"></div>
<script type="text/javascript">
var sprytextfield3 = new Spry.Widget.ValidationTextField("sprytextfield3", "email");
var sprytextfield4 = new Spry.Widget.ValidationTextField("sprytextfield4", "phone_number", {format:"phone_custom", validateOn:["change"], pattern:"0000000000"});
</script>
</body>
</html>

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Voor het plaatsen van code hebben we, inderdaad, code tags. Maar we zitten hier niet om voor jan-en-alleman code reviews te doen (Kan iemand even...?). Als je concrete(!) vragen hebt over een (stukje!) code, plaats dan de relevante(!) code met je concrete vraag. Datzelfde geldt overigens ook als je hulp nodig hebt bij debuggen (Debuggen: Hoe doe ik dat?); enkel relevante(!) code en een conrete(!) vraag a.u.b. Complete lappen code voorzien van commentaar is niet de bedoeling hier, noch dat wij code voor je gaan debuggen.

[ Voor 21% gewijzigd door RobIII op 04-10-2016 15:07 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Dit topic is gesloten.