PHP 输出session 验证码与图片不同步,图片总是快一步,求解!
本帖最后由 Xdawei 于 2012-04-18 20:07:42 编辑
PHP 输出session 验证码与图片不同步,图片总是快一步,求解!1 | <br /><?<br />session_start();<br /> function random( $len )<br />{<br /> $srcstr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" ;<br />mt_srand();<br /> $strs = "" ;<br /> for ( $i =0; $i < $len ; $i ++){<br /> $strs .= $srcstr [mt_rand(0,35)];<br />}<br /> return strtoupper ( $strs );<br />}<br /> $str =random(4); <br /> $width = 50; <br /> $height = 25; <br />@header( "Content-Type:image/png" );<br /> $_SESSION [ "captcha" ] = $str ;<br />
|
Copier après la connexion
1 | <br /><img src= "/static/imghw/default1.png" data-src= "captcha.php" class = "lazy" style= "max-width:90%" style= "max-width:90%" border= "1" onclick= "this.+Math.random()" style= "cursor: pointer; vertical-align:middle" title= "看不清?点击更换!" / alt= "PHP 输出session 验证码与图片不同步,图片老是快一步,求解" ><br />
|
Copier après la connexion
------解决方案--------------------这个问题很诡异,最好的方法就是分开。
试试这个吧
checkcode.class.php
1 2 3 4 5 6 | <br><?php <br /> <br> class checkcode {<br> //验证码的宽度<br> public $width =130;<br> <br> //验证码的高<br> public $height =50;<br> <br> //设置字体的地址<br> private $font ;<br> <br> //设置字体色<br> public $font_color ;<br> <br> //设置随机生成因子<br> public $charset = 'abcdefghkmnprstuvwyzABCDEFGHKLMNPRSTUVWYZ23456789' ;<br> <br> //设置背景色<br> public $background = '#EDF7FF' ;<br> <br> //生成验证码字符数<br> public $code_len = 4;<br> <br> //字体大小<br> public $font_size = 20;<br> <br> //验证码<br> private $code ;<br> <br> //图片内存<br> private $img ;<br> <br> //文字X轴开始的地方<br> private $x_start ;<br> <br> function __construct( $fontpath ) {<br> $this ->font = $fontpath ;<br> }<br> <br> protected function creat_code() {<br> $code = '' ;<br> $charset_len = strlen ( $this ->charset)-1;<br> for ( $i =0; $icode_len ; $i ++) {<br> $code .= $this ->charset[rand(1, $charset_len )];<br> }<br> $this ->code = $code ;<br> }<br> <br> <br> public function get_code() {<br> return strtolower ( $this ->code);<br> }<br> <br> <br> public function doimage() {<br> $code = $this ->creat_code();<br> $this ->img = imagecreatetruecolor( $this ->width, $this ->height);<br> if (! $this ->font_color) {<div class = "clear" >
</div>
|
Copier après la connexion