广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 2657 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
xxx1474 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x15
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[PHP][讨论] [解决了^^]遇到一个脑筋转不过来的问题...(附上解决办法)
之前的方法似乎没什么效果~后来去翻了跟人家借的书~可以查到关于验证码的基础范例~
我就把它拿来改了改~

制作PHP的验证码

首先一定要去检查%WINDOWS%里面的php.ini
要启用这个
extension=php_gd2.dll(就是要把原来前面的分号去掉重新启动APACHE啦)
为什么要这个呢?因为它能够让你画图片~怎么说呢?
往下看就知道!
准备三个档:分别叫做 scue.php secure.php security.php(不用我说吧会改的自己改啰 表情 )
好了贴吧你!放到自己网页中最好的位置 表情 (都拿掉排版了~阅读上可能要自己努力了 表情 )

以下是scue.php(验证完成后的结果网页)
复制程式
if(isset($HTTP_POST_VARS['authinput'])) 
{ 
if(strcmp($HTTP_POST_VARS['authnum'],$HTTP_POST_VARS['authinput'])==0) 
{
echo("<td class=\"row1\" width=\"100%\">
认证成功!
</td>
</tr>
</table>"); 
}
else 
{
echo("认证码输入错误!认证失败!");
}

以下是secure.php(这个看不懂的请不要乱改,这是产生图片验证码形式的程式)
复制程式
<?php
Header("Content-type: image/PNG"); 
srand((double)microtime()*1000000); 
$img_height=68;
$img_width=32;
$im = imageCreate($img_height,$img_width);
$rndcolor = ImageColorAllocate($im,rand(20,255),rand(20,255),rand(20,255)); //rand(20,255)改20更大一点上视觉上更能清楚看到颜色中的数字
$black = ImageColorAllocate($im, 0,0,0); 
$white = ImageColorAllocate($im, 255,255,255); 
$gray = ImageColorAllocate($im, 200,200,200);
imagefill($im,68,30,$rndcolor); 

imagestring($im, 5, 10, 8, $HTTP_GET_VARS['authnum'], $black); 

for($i=0;$i<200;$i++)
{ 
$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255)); 
imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);  
} 
ImagePNG($im); 
ImageDestroy($im); 
?>

以下是security.php(验证码输入的画面)
复制程式
echo ("<form action=scue.php method=post>
验证码:<input type=text name=authinput size=\"14\" maxlength=\"4\"> 
<input type=\"submit\" id=\"submit\" value=\"验证\">
<div align=\"center\">
<input type=hidden name=authnum value="); echo $authnum; echo("> 
</div>
<img src=secure.php?authnum=");echo $authnum; echo("> 
</form>");

有问题就来吧~
这是可以产生4位数的验证码的PHP程式~其中验证码是使用php_gd2.dll中的imageCreate产生.PNG形式的图片而且还附有乱数干扰的颗粒(随机颜色)及随机变换的背景颜色~算是比较完善的了@@
不过我没用SESSION(学的不精~还不是很会那部份~)~把这两天做的程式逛想给大家~让其他人也能查到这些资讯^^


[ 此文章被xxx1474在2005-09-14 19:22重新编辑 ]



献花 x0 回到顶端 [楼 主] From:台湾中华电信 | Posted:2005-09-14 03:31 |
aa 手机 会员卡 葫芦墩家族
个人文章 个人相簿 个人日记 个人地图 个人商品
特殊贡献奖 社区建设奖
头衔:            
站长
级别: 站长 该用户目前不上站
推文 x1964 鲜花 x5260
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

复制程式
function scode($num){

srand((double)microtime()*1000000);
for($i=$num;$i>0;$i--)
{
       $srval=rand(0,9);
       printf("<img src=\"./images/num/%s.gif\">",$srval);
       $reval=$reval.$srval; //纪录变数
}       
return $reval;
}
在 login.php 及 banner.php 中用
复制程式
$reval=scode(4);


献花 x0 回到顶端 [1 楼] From:台湾新世纪资通 | Posted:2005-09-14 09:45 |
xxx1474 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x15
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用aa于2005-09-14 09:45发表的 :
[code]function scode($num){

srand((double)microtime()*1000000);
for($i=$num;$i>0;$i--)
{
.......
大大可能误会我的意思~@@
目前是banner中可以使用$reval的值~
可是我现在要在login中要取得这个rand的结果@@...

我也有想过要用全域变数~但是好像不能跨档案...还是另有方法? 表情


献花 x0 回到顶端 [2 楼] From:台湾中华电信 | Posted:2005-09-14 11:01 |
aa 手机 会员卡 葫芦墩家族
个人文章 个人相簿 个人日记 个人地图 个人商品
特殊贡献奖 社区建设奖
头衔:            
站长
级别: 站长 该用户目前不上站
推文 x1964 鲜花 x5260
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

因为我不太了解你程式的流程
你在 login.php 有没有 include banner.php
如果有就可以直接取用
如果 login.php 跟 banner.php 是独立的两个程式
那你就要用 cookie 或是 session 去传这个变数了
一般是建议用 session


献花 x0 回到顶端 [3 楼] From:台湾新世纪资通 | Posted:2005-09-14 11:21 |
xxx1474 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x15
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用aa于2005-09-14 11:21发表的 :
因为我不太了解你程式的流程
你在 login.php 有没有 include banner.php
如果有就可以直接取用
如果 login.php 跟 banner.php 是独立的两个程式
那你就要用 cookie 或是 session 去传这个变数了
.......

banner.php是有帐密输入的画面~同时也是呼叫scode()的程式
login.php需要将banner执行过scode的结果取用并且在lgoin中判断~
换句话说~在login中include banner会让$reval变数内容被更动@@
还是说有其它方式可以重写? 表情


献花 x0 回到顶端 [4 楼] From:台湾中华电信 | Posted:2005-09-14 11:51 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.020513 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言