我正在尝试将验证码添加到我的注册表单中。除了会话变量总是为空之外,图像渲染得很好,因此根本不起作用..
我正在使用以下课程:http://www.ejeliot.com/pages/php-captcha
根据文档,我必须制作一个包含以下内容的php文件:
<?php
require('classes/PhpCaptcha.php');
$aFonts = array('fonts/VeraBd.ttf', 'fonts/VeraIt.ttf', 'fonts/Vera.ttf');
$oVisualCaptcha = new PhpCaptcha($aFonts, 200, 60);
$oVisualCaptcha->SetBackgroundImages('captchaimgbg.jpg');
$oVisualCaptcha->Create();
?>
并将其作为图像包含在内。
现在我调查了Create();函数,在这个函数中另一个名为GenerateCode()的函数;被调用,负责生成字母并将其放入会话变量中。
代码如下:
function GenerateCode() {
// reset code
$this->sCode = '';
// loop through and generate the code letter by letter
for ($i = 0; $i < $this->iNumChars; $i++) {
if (count($this->aCharSet) > 0) {
// select random character and add to code string
$this->sCode .= $this->aCharSet[array_rand($this->aCharSet)];
} else {
// select random character and add to code string
$this->sCode .= chr(rand(65, 90));
}
}
// save code in session variable
if ($this->bCaseInsensitive) {
$_SESSION[CAPTCHA_SESSION_ID] = strtoupper($this->sCode);
} else {
$_SESSION[CAPTCHA_SESSION_ID] = $this->sCode;
}
}
CAPTCHA_SESSION_ID定义在类文件的顶部。 在我的索引中我有session_start(); ,我仔细检查了这个,这不是问题。
无论我尝试什么,$ _SESSION总是空的,即使我在create()中手动添加$ _SESSION ['bla'] ='bla';功能,它没有出现。
有没有人知道造成这种情况的原因,或者我做错了什么?
谢谢!
答案 0 :(得分:6)
<?php
session_start();
require('classes/PhpCaptcha.php');
$aFonts = array('fonts/VeraBd.ttf', 'fonts/VeraIt.ttf', 'fonts/Vera.ttf');
$oVisualCaptcha = new PhpCaptcha($aFonts, 200, 60);
$oVisualCaptcha->SetBackgroundImages('captchaimgbg.jpg');
$oVisualCaptcha->Create();
?>
您需要在访问/设置session_start()
个变量的所有网页上的代码顶部以$_SESSION
开始会话。