注意:未定义的变量:第11行的C:wamp\projects\ServiceAdmin\login\loginauth.php中的验证码 [英] Notice: Undefined variable: captcha in C:\wamp\projects\ServiceAdmin\login\loginauth.php on line 11
问题描述
我目前正在为一个项目创建登录脚本,但尝试引入验证码已证明存在问题;
I am currently creating a login script for a project, yet trying to introduce a captcha has proven issues with it; of which I am not entirely certain of.
登录页面:
表单:
格式代码:
<div class="col-lg-8">
<script src="https://www.google.com/recaptcha/api.js"></script>
<form class="form-signin" method="post" action="loginauth.php">
<h2 class="form-signin-heading">Sign in to ServiceAdmin</h2><br>
<label class="sr-only">Email address</label>
<input name="email" type="email" class="form-control" placeholder="Email address" required autofocus>
<label class="sr-only">Password</label>
<input name="password" type="password" class="form-control" placeholder="Password" required><br>
</div>
<div class="col-lg-4">
<div class="g-recaptcha" style="margin-top: 115px; margin-left: 20px;" data-sitekey="REDACTED"></div>
<?php if($_SESSION['login.captcha']){
echo '<font color="red"><p style="margin-left:27px;">Please tick this checkbox to verify your security.</p></font>';
unset($_SESSION['login.captcha']);
} else {
echo '<p style="margin-left:27px;">Please tick this checkbox to verify your security.</p>';
} ?>
</div><br><br>
<input class="btn btn-lg btn-primary btn-block" type="submit" value="Sign in">
</form>
登录后端代码(loginauth.php):
<?php
error_reporting(E_ALL);
$email = $password = $captcha = NULL;
if(isset($_POST['email'])){
$email = $_POST['email'];
}
if(isset($_POST['password'])){
$password = $_POST['password'];
}
if(isset($_POST['g-recaptcha-response'])){
$captcha = $_POST['g-recaptcha-response'];
}
if(!$captcha){
echo "captcha error";
exit;
}
$response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=REDACTED&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']);
if($response.success==false){
"captcha error bot";
} else {
"success";
}
?>
无论如何,尽管填写了验证码,但它不会被识别为已输入,并且会出现这样的错误:
No matter what, despite the captcha being filled in, it will not be recognized as entered, and will come up with error as such:
( ! ) Notice: Undefined variable: captcha in C:\wamp\projects\ServiceAdmin\login\loginauth.php on line 11
如果有人对
推荐答案
如果您引用的变量尚未创建,PHP会发出通知
PHP throws notices if you reference a variable that hasn't been created yet, although the code still "works".
在这种情况下, $ captcha
永远不会实例化,因为您的代码永远不会到达创建它的行
In this case, $captcha
is never instantiated because your code never reaches the line that creates it
if(isset($ _ POST ['g-recaptcha-response'])){
$ captcha = $ _POST ['g-recaptcha-response'];
}
常见的解决方法是使用声明 $ captcha
在第11行上使用/引用它之前,返回false或null值。
The common fix is to declare $captcha
with a false or null value before you use/reference it on line 11.
这篇关于注意:未定义的变量:第11行的C:wamp\projects\ServiceAdmin\login\loginauth.php中的验证码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!