廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 2652 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為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.021587 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言