我想创建一个简单的验证码验证表单,它看起来像这样:
<form>
<br/>Captcha :<img class="captcha" src="<?php echo base_url('application/views/captcha/image.php')?>">
<br/><br/><input type="username" required class="i" name="captcha" id="i7" size="25"/>
<br><br><input type="submit" name="Submit" id="submit" value="Register"/>
</form>
这是image.php文件:
<?php
session_start();
header("Content-Type: image/png");
$text = rand(1000,100000);
$_SESSION['code'] = $text;
$img = imagecreatefromjpeg("bg.jpg");
$font = "arial.ttf";
$R = rand(0,100);
$G = rand(0,100);
$B = rand(0,100);
$TxtColor = imagecolorallocate($img,$R,$G,$B);
imagettftext($img,rand(40,45),rand(0,1),rand(10,70),rand(38,50),$TxtColor,$font$text);
imagepng($img);
imagedestroy($img);
?>
它在Codeigniter之外正常工作。在Codeigniter中,每当我尝试从会话中检索$text
的值时,我都会收到一条错误消息&#34; Undefined index:code&#34;。如果我使用Codeigniter的userdata()
方法如下:
$this->session->set_userdata($text);
验证码图像甚至无法显示。
答案 0 :(得分:2)
在Codignitor中,您需要在设置会话之前加载会话库:
$this->load->library('session');
您可以使用数组设置会话:
$array["code"] = $text;
$this->session->set_userdata($array);
当您需要打印时:
$this->session->userdata("code");