注意:未定义的变量:第11行的C:wamp\projects\ServiceAdmin\login\loginauth.php中的验证码 [英] Notice: Undefined variable: captcha in C:\wamp\projects\ServiceAdmin\login\loginauth.php on line 11

查看:98
本文介绍了注意:未定义的变量:第11行的C:wamp\projects\ServiceAdmin\login\loginauth.php中的验证码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在为一个项目创建登录脚本,但尝试引入验证码已证明存在问题;

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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆