不知道下面代码有什么错,在本地都是正确的 放到服务器上,出来的结果不是想要的了. 似乎$_SESSION 数据有问题.<?php
@session_start();
$rand = $_SESSION['verifycode'];
$_REQUEST['c'] && $rand = '';
!$rand && $rand = "".rand(1000, 9999);
$_SESSION['verifycode'] = $rand;
$verifycode = '0000000';
$verifycode[0] = $rand[0];
$verifycode[1] = chr(rand(65,122));
$verifycode[2] = $rand[1];
$verifycode[3] = chr(rand(65,122));
$verifycode[4] = $rand[2];
$verifycode[5] = chr(rand(65,122));
$verifycode[6] = $rand[3];
$verifycode[7] = chr(rand(65,122));
$image = imagecreatetruecolor(80, 20);
imagefill($image , 0 , 0 , imagecolorallocate($image, 255, 255, 255));
$digital = imagecolorallocate($image, 255, 0, 0);
$letter = imagecolorallocate($image, 0, 0, 0);
for($i = 0 ; $i < 8 ; $i++)
{
imagettftext($image, 12, 0, 3 + $i * 8 ,17, ord($verifycode[$i]) > 64 ? $letter : $digital , dirname(__FILE__).'/resource/simsun.ttc', $verifycode[$i]);
}
header('content-type:image/jpg');
echo imagejpeg($image);?>http://www.yangxianxueya.com/verifyimage.php 这个是网站上的路径.不过你们访问不了... 生成图的本意是 8个字符 其中4个是红色的数字. 到了服务器上.$_SESSION 取出的值变了...
服务器是 W2003 的 我本地是 LAMP...
@session_start();
$rand = $_SESSION['verifycode'];
$_REQUEST['c'] && $rand = '';
!$rand && $rand = "".rand(1000, 9999);
$_SESSION['verifycode'] = $rand;
$verifycode = '0000000';
$verifycode[0] = $rand[0];
$verifycode[1] = chr(rand(65,122));
$verifycode[2] = $rand[1];
$verifycode[3] = chr(rand(65,122));
$verifycode[4] = $rand[2];
$verifycode[5] = chr(rand(65,122));
$verifycode[6] = $rand[3];
$verifycode[7] = chr(rand(65,122));
$image = imagecreatetruecolor(80, 20);
imagefill($image , 0 , 0 , imagecolorallocate($image, 255, 255, 255));
$digital = imagecolorallocate($image, 255, 0, 0);
$letter = imagecolorallocate($image, 0, 0, 0);
for($i = 0 ; $i < 8 ; $i++)
{
imagettftext($image, 12, 0, 3 + $i * 8 ,17, ord($verifycode[$i]) > 64 ? $letter : $digital , dirname(__FILE__).'/resource/simsun.ttc', $verifycode[$i]);
}
header('content-type:image/jpg');
echo imagejpeg($image);?>http://www.yangxianxueya.com/verifyimage.php 这个是网站上的路径.不过你们访问不了... 生成图的本意是 8个字符 其中4个是红色的数字. 到了服务器上.$_SESSION 取出的值变了...
服务器是 W2003 的 我本地是 LAMP...
你这样的设计会有很多漏洞的!!介意你写一个自己设计的SESSION类!!!那个更好!!!
我刚才查到问题所在了..服务器 开了 register_global$verify_code 把 $_Session 中的 值顶掉了...晕死..这不是很危险么...
php.ini中的register_globals决定是否将 EGPCS(Environment,GET,POST,Cookie,Server)变量注册为全局变量。
PHP » 4.2.0 开始,本选项默认为 off。想知道你的是什么时候打开的 --!