时间:2021-07-01 10:21:17 帮助过:23人阅读
1)在header("Content-type:image/png");前加如下一段代码
本人就是由上面的问题造成。
- ini_set('display_errors', 'Off');
附上生成验证码的图片的代码
- <!--?php
- ini_set('display_errors', 'Off');
- header("Content-type:image/png");
- session_start();
- $_SESSION['code'] = 'null';
- //初始化
- $width = '58';
- $height = '22';
- //$code = '';
- $tmptext ='';
- $bordercolor= '';
- for($i=0;$i<4;$i++)
- {
- $tmptext = rand(0,9);
- $code .= $tmptext;
- }
- $_SESSION['code'] = $code;
- //以下三句诗让浏览器不缓存
- @header("Expires:-1");
- @header("Cache-Control:no-store,private,posc-check=0,pre-check=0,max-age=0",FALSE);
- @header("Pragma:no-cache");
- if(function_exists('imagecreate') && function_exists('imagecolorset') && function_exists('imagecopyresized')
- && function_exists('imagecolorallocate') && function_exists('imagesetpixel')
- && function_exists('imagechar') && function_exists('imagecreatefromgif')
- && function_exists('imagepng')
- )
- {
- $im = imagecreate($width, $height);
- $backgroundcolor = imagecolorallocate($im, 255, 255, 255);
- $numorder = array(1,2,3,4);
- /**shuffle将数组打乱*/
- shuffle($numorder);
- /**array_flip返回一个被反转的数组,键值被处理值*/
- $numorder = array_flip($numorder);
- $x='';
- $y='';
- $text_color = '';
- for($i=1;$i<=4;$i++)
- {
- $x = $numorder[$i] * 13 + mt_rand(0,4) -2;
- $y = mt_rand(0,3);
- $text_color = imagecolorallocate($im, mt_rand(50,255), mt_rand(50,255), mt_rand(50,255));
- /**将字符画在$im图中,5表示字体的大小 $x+5 */
- imagechar($im, 5, $x+5, $y+3, $code[$numorder[$i]], $text_color);
- }
- $linenums = mt_rand(10,32);
- for($i=0;$i<=$linenums;$i++)
- {
- $linecolor = imagecolorallocate($im, 255, mt_rand(0,255), mt_rand(0,255));
- $linex = mt_rand(0,255);
- $liney = mt_rand(0,255);
- imageline($im, $linex, $liney, $linex+mt_rand(0,4)-2, $liney+mt_rand(0,4)-2, $linecolor);
- }
- for($i=0;$i<40;$i++)
- {
- $pointcolor = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
- imagesetpixel($im, mt_rand(0,$width), mt_rand(0,$height), $pointcolor);
- }
- $bordercolor = imagecolorallocate($im, 150, 150, 150);
- imagerectangle($im, 0, 0, $width-1, $height-1, $bordercolor);
- imagepng($im);
- imagedestroy($im);
- }?-->
2)变量没初始化
3)在header("Content-type:image/png");前加入
ob_clean();
第二三中方法不确保可以解决问题,仅供参考。