文件名 global_func.php
- PHP code
function _code(){ //运行验证码 //随记码个数 $_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); $_flag=false; if($_flag){ //黑色,边框 $_black=imagecolorallocate($_img, 0,0,0); imagerectangle($_img, 0,0, $_width-1,$_height-1,$_black); } //画出6个线条 for($i=0;$i<6;$i++){ $_rnd_color=imagecolorallocate($_img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); imageline($_img,mt_rand(0,$_width),mt_rand(0,$_height),mt_rand(0,$_width),mt_rand(0,$_height), $_rnd_color); } //随即雪花 for($i;$i<100;$i++){ $_rnd_color=imagecolorallocate($_img,mt_rand(200,255), mt_rand(200,255), mt_rand(200,255)); imagestring($_img,1, mt_rand(1, $_width),mt_rand(1,$_height), '*', $_rnd_color); } //输出验证码 for($i=0;$i<strlen($_SESSION['code']);$i++){ $_rnd_color=imagecolorallocate($_img, mt_rand(0, 100), mt_rand(0, 150), mt_rand(0, 200)); imagestring($_img,5,$i*$_width/$_rnd_code+mt_rand(1,10), mt_rand(1,$_height/2),$_SESSION['code'][$i],$_rnd_color); } //输出图像 header('Content-Type:image/png'); imagepng($_img); //销毁 imagedestroy($_img); }
这个我要是调用 global_func.php 这个文件下的 function _code(); 就出错是一个红叉。
code.php
- PHP code
_code();
这个是我直接写在code.php中就能够使用。
code.php
- PHP code
//随记码个数 $_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); $_flag=false; if($_flag){ //黑色,边框 $_black=imagecolorallocate($_img, 0,0,0); imagerectangle($_img, 0,0, $_width-1,$_height-1,$_black); } //画出6个线条 for($i=0;$i<6;$i++){ $_rnd_color=imagecolorallocate($_img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); imageline($_img,mt_rand(0,$_width),mt_rand(0,$_height),mt_rand(0,$_width),mt_rand(0,$_height), $_rnd_color); } //随即雪花 for($i;$i<100;$i++){ $_rnd_color=imagecolorallocate($_img,mt_rand(200,255), mt_rand(200,255), mt_rand(200,255)); imagestring($_img,1, mt_rand(1, $_width),mt_rand(1,$_height), '*', $_rnd_color); } //输出验证码 for($i=0;$i<strlen($_SESSION['code']);$i++){ $_rnd_color=imagecolorallocate($_img, mt_rand(0, 100), mt_rand(0, 150), mt_rand(0, 200)); imagestring($_img,5,$i*$_width/$_rnd_code+mt_rand(1,10), mt_rand(1,$_height/2),$_SESSION['code'][$i],$_rnd_color); } //输出图像 header('Content-Type:image/png'); imagepng($_img); //销毁 imagedestroy($_img);
这段验证码我直接运行不封装成函数的形式可以使用验证码一切正常。
但是我用function _code() 之后 在调用 _code() 在html中显示的是一个红叉。不知道是为什么
------解决方案--------------------
会不会是 header('Content-Type:image/png'); 的原因,
BOM头会影响到浏览器预期的文件类型
------解决方案--------------------
即使是写成函数,调用也是没有问题的。
- PHP code
<?php function _code(){ //运行验证码 } ?>
------解决方案--------------------