这段代码出了什么问题。无论我是否勾选reCAPTCHA,它都会进入else子句。
<?php
// This is added for Google Captcha
$url = 'https://www.google.com/recaptcha/api/siteverify';
$privatekey = '6LdBjyATAAAAABZe1O-DKBEQnOIzanoVLGEvsvyu';
$response = file_get_contents($url."?secret=".$privatekey."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']);
$data = json_decode($response);
if($response.success==false){
echo "<h2>Spam Spam go away</h2><p>And if you're not spam, we apologise. Please go back and tick the reCAPTCHA box.</p><p>Thank you</p>";
die();
} else {
// do loads of clever stuff
}
答案 0 :(得分:2)
在PHP中,点.
运算符用于附加字符串
因为PHP的弱键入,你可以将字符串附加到所有内容。
这行代码:
if($response.success==false){
会在$ response stdClass
附加'成功'
如果启用通知,则会触发通知,因为该字符串不在引号内。
在这种情况下,输出字符串为success
,在PHP中为not false
。
你想要的是这样的:
if($response->success==false){
您需要将其作为stdClass
的属性进行访问。