session_start();
//隨機碼的個數
$_rnd_code = 4;
//建立隨機碼
for($i=0;$i<$_rnd_code;$i++){
$_nmsg .= dechex(mt_rand(0,15));
}
//儲存在session裡
$_SESSION['code']=$_nmsg;
//設定長和高
$_width=75;
$_height=25;
//建立一張映像
$_img = imagecreatetruecolor($_width,$_height);
//白色
$_white = imagecolorallocate($_img,255,255,255);
//填充
imagefill($_img,0,0,$_white);
//黑色邊框
$_black = imagecolorallocate($_img,0,0,0);
imagerectangle($_img,0,0,$_width-1,$_height-1,$_black);
//隨機六個線條
for($i=0;$i<6;$i++){
$_rnd_color = imagecolorallocate($_img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
imageline($_img,rand(0,$_width),rand(0,$_height),rand(0,$_width),rand(0,$_height),$_rnd_color);
}
//輸出驗證碼
for($i=0;$iimagestring($_img,5,$i*$_width/$_rnd_code+mt_rand(1,10),mt_rand(1,$_height/2),$_SESSION['code']['$i'],$_black);
}
做了個驗證碼 結果輸出的4個字元全是一樣的 你們看一下是怎麼回事
回複討論(解決方案)
imagestring($_img,5,$i*$_width/$_rnd_code+mt_rand(1,10),mt_rand(1,$_height/2),$_SESSION['code'][ '$i'],$_black);
應該這樣
imagestring($_img,5,$i*$_width/$_rnd_code+mt_rand(1,10),mt_rand(1,$_height/2),$_SESSION['code'][ $i],$_black);
( ! ) Notice: Undefined variable: _nmsg in \demo.php on line 10
Call Stack
# Time Memory Function Location
1 0.0006 146856 {main}( ) ..\demo.php:0
( ! ) Warning: Illegal string offset '$i' in \demo.php on line 42
Call Stack
# Time Memory Function Location
1 0.0006 146856 {main}( ) ..\demo.php:0
( ! ) Warning: Illegal string offset '$i' in \demo.php on line 42
Call Stack
# Time Memory Function Location
1 0.0006 146856 {main}( ) ..\demo.php:0
( ! ) Warning: Illegal string offset '$i' in \demo.php on line 42
Call Stack
# Time Memory Function Location
1 0.0006 146856 {main}( ) ..\demo.php:0
( ! ) Warning: Illegal string offset '$i' in \demo.php on line 42
Call Stack
# Time Memory Function Location
1 0.0006 146856 {main}( ) ..\demo.php:0
改成這樣就可以了
謝謝了啦 發錢了