2016-02-25 64 views
0

内image.php创建会话我想创建一个简单的验证码验证形式,它看起来像这样:不能在笨

<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的值,我都会将错误消息显示为“未定义的索引:代码”。如果我用笨的方法userdata()如下:

$this->session->set_userdata($text); 

验证码图片甚至不显示。

+0

我不认为这是加载image.php的正确方法,你必须为图像创建一个控制器 –

回答

1

在Codignitor你需要加载会话库之前设置会话:

$array["code"] = $text; 
$this->session->set_userdata($array); 

当您需要打印:

$this->load->library('session'); 

比你可以通过使用阵列设置会话

$this->session->userdata("code"); 

CI SESSION USER GUIDE

+0

会话库已经加载到autoload.php文件中。如果我进一步加载它在image.php captcha图像消失! –

+0

比你需要'session_start();'in image.Php @ aw-wasi – devpro