标题: 验证码
mayongzhan
PHPEye Developer
Rank: 8Rank: 8


UID 136
精华 2
积分 20
帖子 41
翻译 18
原创 1
阅读权限 1
注册 2007-6-30
状态 离线
发表于 2007-11-30 09:35  资料  短消息  加为好友 
验证码

<!-- 代码如下,显示一个验证码框,有个问题.为什么图里的session要到提交以后才可以得到???比如我现在直接把这个图放在一个页里,然后输出session,是空,但是刷新一下就有了.就是得到的是旧的session,不过这样正好达到了验证的目的. -->
<?php
/**
* @name checkcode.php
* @date Thu Nov 29 23:57:56 CST 2007
* @copyright 马永占(MyZ)
* @author 马永占(MyZ)
* @link http://blog.csdn.net/mayongzhan/
*/
header('Content-Type:text/html;charset=utf-8');
session_start();
$str = "ABCDEFGHIJKLMNPQRSTWXY13456789"; //36个中的30个,去掉了很多不容易分辨的比如2Z0OUV
$n = 4; //多少位的
$code = "";
for ($i = 0; $i < $n; $i++) {
       $code .= substr($str, mt_rand(0, 29), 1);
}
$_SESSION['checkcode'] = $code;
@header("Content-Type:image/png");
$width = 50; //图宽
$height = 20; //图宽
$im = imagecreate($width, $height); //创造图像
$bg = imagecolorallocate($im, 0xFF, 0xFF, 0xFF); //背景颜色 FFFFFF白色
$font = imagecolorallocate($im, 0x00, 0x00, 0x00); //文字颜色 000000黑色
$color = array(imagecolorallocate($im, 0xC1, 0xC5, 0xFF),
                            imagecolorallocate($im, 0xC6, 0xFF, 0xC1),
                            imagecolorallocate($im, 0xFF, 0xFF, 0xC1),
                            imagecolorallocate($im, 0xE1, 0xC1, 0xFF),
                            imagecolorallocate($im, 0xFF, 0xC1, 0xC2)
                            );
//$pix=imagecolorallocate($im,0x99,0xFF,0xFF);
for($i=0;$i<1000;$i++)
{
imagesetpixel($im,mt_rand(0,$width),mt_rand(0,$height),$color[$i%5]); //画点,随即点
}
imagestring($im, 5, 7, 2,$code, $font); //字
imagerectangle($im,0,0,$width-1,$height-1, $font); //边框
imagepng($im);
imagedestroy($im);
?>





顶部
wps2000
新手上路
Rank: 1



UID 34
精华 0
积分 0
帖子 73
翻译 0
原创 0
阅读权限 10
注册 2007-5-20
状态 离线
发表于 2007-11-30 17:00  资料  短消息  加为好友 
ls的理解什么是session么?

理所当然是这样了
假设你的这个页面时 A.php ,验证码是 B.php
你请求 A.php 后,浏览器根据 <img 标签的 src 属性 才会请求 B.php(这个时候 $_SESSION['checkcode'] 才被产生)
你觉得你可以在 A.php中取得在他之后才产生的 $_SESSION['checkcode']  吗?

PS:你想你的验证码怎么验证的?难道不是提交后才验证的?想放到客户端JS验证





顶部
mayongzhan
PHPEye Developer
Rank: 8Rank: 8


UID 136
精华 2
积分 20
帖子 41
翻译 18
原创 1
阅读权限 1
注册 2007-6-30
状态 离线
发表于 2007-12-26 15:48  资料  短消息  加为好友 
顺序问题..图加载是在最后加载的.当然输出不出来东西.





顶部
 


PHPEye社区--LAMP开源技术社区


当前时区 GMT+8, 现在时间是 2008-8-29 01:42

    Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
Processed in 0.015244 second(s), 6 queries , Gzip enabled

清除 Cookies - 联系我们 - PHPEye开源社区 - Archiver