我正在尝试进行验证码验证,但我的一个变量没有定义。这是我的验证码生成器代码:
<?php
$num = rand(1,3);
switch($num) {
case 1:
$img = "";
$answer = "nov 18th";
break;
case 2:
$img = "";
$answer = "jan 19th";
break;
case 3:
img = "";
$answer = "school bad";
break;
}
?>
现在,这是我检查验证码输入是否正确输入的脚本代码:
<?php
ini_set('display_errors',1);
print "<br /><br />";
$captcha = $_POST['captcha-verif'];
if ($captcha == $answer) {
header('Location: recommend-action.php');
}
else {
print "Incorrect Captcha. <a href='music.php'>Try Again</a>";
}
?>
我不断收到这条消息:
注意:未定义的变量:在第 9 行的/var/www/tts/recommendation-verify-captcha.php 中回答
你需要一个会话变量:
<?php
// start session here
session_start();
$num = rand(1,3);
switch($num) {
case 1:
$img = "";
// store answer in session variables.
$_SESSION['answer'] = "nov 18th";
break;
case 2:
$img = "";
$_SESSION['answer'] = "jan 19th";
break;
case 3:
$img = "";
$_SESSION['answer'] = "school bad";
break;
}
?>
在第二个代码段中,请确保再次启动会话。
<?php
// restart session
session_start();
ini_set('display_errors',1);
print "<br /><br />";
$captcha = $_POST['captcha-verif'];
// compare $captcha against answer stored in the session
if ($captcha == $_SESSION['answer']) {
header('Location: recommend-action.php');
}
else {
print "Incorrect Captcha. <a href='music.php'>Try Again</a>";
}
?>
你没有在recommend-verify-captcha.php
中声明答案变量,所以这个变量不存在。
根据您的代码,我看到您想要的答案来自
<?php
$num = rand(1,3);
switch($num) {
case 1:
$img = "";
$answer = "nov 18th";
break;
case 2:
$img = "";
$answer = "jan 19th";
break;
case 3:
$img = "";
$answer = "school bad";
break;
}?>
所以你可以这样做
function getCapcha(){
$num = rand(1,3);
switch($num) {
case 1:
$img = "";
$answer = "nov 18th";
break;
case 2:
$img = "";
$answer = "jan 19th";
break;
case 3:
$img = "";
$answer = "school bad";
break;
}
}
然后在您的recommend-verify-captcha.php
文件中使用此函数,可能像
<?php
ini_set('display_errors',1);
print "<br /><br />";
$captcha = $_POST['captcha-verif'];
$answer = getCapcha();
if ($captcha == $answer) {
header('Location: recommend-action.php');
}
else {
print "Incorrect Captcha. <a href='music.php'>Try Again</a>";
}
?>