验证码不显示是什么原因?
为什么我的验证码不显示 报错说是session的问题 代码和老师的一模一样 求解
为什么我的验证码不显示 报错说是session的问题 代码和老师的一模一样 求解
2017-05-06
题主给的信息比较少哦,如果是session问题的话,或许可能是session_start()没有开启,或许是没有把随机生成的字符存储到$_session['verify'],其实这个老师的验证码貌似是有一点问题的,所以我自己重新写了一个,意思是差不做的,你可以试试看,使用我的这一段代码,就是把老师的verifyImage()方法里面的内容换一换
//通过GD库做验证码 function verifyImage() { session_start(); //验证码 /* * - 画布(浅色、随机) - 干扰(随机出现的线,随机出现的点) - 输出文字 - 展示 - 释放资源 */ //画布(浅色、随机) $img = imagecreatetruecolor(80, 40); //创建画布的背景色 $bgcolor = imagecolorallocate($img, rand(200, 255), rand(200, 255), rand(200, 255)); //填充画布 imagefill($img, 0, 0, $bgcolor); //- 干扰(随机出现的线,随机出现的点) for ($i = 0; $i < 50; $i++) { $color = imagecolorallocate($img, rand(100, 200), rand(100, 200), rand(100, 200)); imagesetpixel($img, rand(1, 79), rand(1, 29), $color); } //随机10条线 for ($i = 0; $i < 10; $i++) { $color = imagecolorallocate($img, rand(100, 200), rand(100, 200), rand(100, 200)); imageline($img, rand(1, 79), rand(1, 29), rand(1, 79), rand(1, 29), $color); } //- 输出文字 $codes = "0123456789abcdefghijklmnopqrstuvwxyz"; //规定验证码的长度 $length = 4; //定义一个将存储在session中的字符串变量 $words = ""; //从 库字符串 随机截取 每次截取一个字符 for ($i = 0; $i < $length; $i++) { $color = imagecolorallocate($img, rand(0, 100), rand(0, 100), rand(0, 100)); $str = substr($codes, rand(0, strlen($codes) - 1), 1); $words .= $str; $x = (80 / $length) * $i + 5; $y = rand(10, 20); imagestring($img, 5, $x, $y, $str, $color); } //将验证码上的文字保存到session中 $_SESSION['verify'] = $words; //- 展示 header("Content-Type:image/png"); imagepng($img); //- 释放资源 imagedestroy($img); }
举报