Примечание: неопределенная переменная: captcha в C: \ wamp \ projects \ ServiceAdmin \ login \ loginauth.php в строке 11

В настоящее время я создаю сценарий входа в систему для проекта, но при попытке ввести капчу уже есть проблемы; в котором я не совсем уверен.

Страница авторизации:

Форма:

введите описание изображения здесь

Код формы:

    <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";
}
?>

Независимо от того, что, несмотря на то, что капча заполнена, она не будет распознана как введенная, и будет выдана ошибка как таковая:

( ! ) Notice: Undefined variable: captcha in C:\wamp\projects\ServiceAdmin\login\loginauth.php on line 11

Если у кого-то есть какие-либо идеи относительно причины этой проблемы, помощь будет оценена обильно.

0

Решение

PHP выдает уведомления, если вы ссылаетесь на переменную, которая еще не была создана, хотя код все еще «работает».

В этом случае, $captcha никогда не создается, потому что ваш код никогда не достигает строки, которая его создает

if(isset($_POST['g-recaptcha-response'])){
$captcha = $_POST['g-recaptcha-response'];
}

Общее исправление — объявить $captcha с ложным или нулевым значением, прежде чем использовать / ссылаться на него в строке 11.

1

Другие решения

Попробуйте увидеть эту ссылку: http://php.net/manual/en/function.isset.php

Определите, установлена ​​ли переменная и не имеет ли значение NULL.

Если переменная была сброшена с помощью unset (), она больше не будет установлена. isset () вернет FALSE, если тестирует переменную, для которой установлено значение NULL. Также обратите внимание, что байт NULL («\ 0») не эквивалентен константе PHP NULL.

Если задано несколько параметров, то isset () вернет TRUE, только если все параметры установлены. Оценка идет слева направо и останавливается, как только встречается неустановленная переменная.

Я бы написал, если (isset ($ captcha))

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector