A. php 注冊頁面 手機驗證碼存到資料庫
簡單的說,手機驗證和手機注冊是差不多的。
手機驗證:
首先你在php代碼中生成一串字元串,可以保存在session裡面,然後在把這串字元串通過簡訊服務(這一步需要去買,找代理,前提你獲得了用戶的正確手機號碼)發給用戶,然後提供一個輸入框給用戶輸入收到的驗證碼在和session中的比對。
手機注冊:
前面的部分都是和上面一樣,多出來的步驟就是驗證成功後把信息存入用戶資料庫而已,最多在存入之前讓用戶再輸入一點用戶其他信息。
以上驗證碼可以擴展一下,比如有效時間,直接在session中設置有效時間,過期作廢的限制就可以了。
你可以去後盾人平台看看,裡面的東西不錯
B. PHP問題如何寫注冊賬號寫入資料庫並判斷驗證碼的代碼
<?php//此處判斷驗證碼與check.php中是一樣的。
error_reporting(0);
$code=$_POST['yzm'];
if($code){
if(strtolower($_SESSION["rand"])==strtolower($code)){
echo"<script>alert('驗證碼正確!');</script>";
}
else{
echo"<script>alert('驗證碼不正確!');history.back();</script>";
}
}
?>
你這里,判斷驗證碼不正確的時候,沒有及時的終止php代碼的運行
似乎很多人會發生這種誤區
php是伺服器端腳本,而js的客戶端腳本
網頁文件的代碼執行順序是先伺服器,後客戶端
也就是說,當你在瀏覽器中看到彈出框的時候,你的php代碼早就執行完成了!
你看到的,只是php運行後發送給瀏覽器的所有信息而已!
哪怕你用php輸出js代碼是在網頁的最開頭,只要你沒有終止代碼的運行,等你看到這個js的時候,你php代碼的所有代碼都已經運行完成,那怕你的代碼有幾萬行!
所以,你這里應該這樣改一下:
echo "<script>alert('驗證碼正確!');</script>";
die;
或者
exit;
來終止程序代碼的繼續運行!
C. 驗證碼怎麼用php實現
<?php
/*
* Filename: authpage.php
*/
srand((double)microtime()*1000000);
//驗證用戶輸入是否和驗證碼一致
if(isset($HTTP_POST_VARS['authinput']))
{
if(strcmp($HTTP_POST_VARS['authnum'],$HTTP_POST_VARS['authinput'])==0)
echo "驗證成功!";
else
echo "驗證失敗!";
}
//生成新的四位整數驗證碼
while(($authnum=rand()%10000)<1000);
?>
<form action=authpage.php method=post>
<table>
請輸入驗證碼:<input type=text name=authinput style="width:
80px"><br>
<input type=submit name="驗證" value="提交驗證碼">
<input type=hidden name=authnum value=<? echo $authnum; ?>>
<img src=authimg.php?authnum=<? echo $authnum; ?>>
</table>
</form>
代碼二:
<?php
/*
* Filename: authimg.php
* Author: hutuworm
* Date: 2003-04-28
* @Copyleft hutuworm.org
*/
//生成驗證碼圖片
Header("Content-type: image/PNG");
srand((double)microtime()*1000000);
$im = imagecreate(58,28);
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
$gray = ImageColorAllocate($im, 200,200,200);
imagefill($im,68,30,$gray);
//將四位整數驗證碼繪入圖片
imagestring($im, 5, 10, 8, $HTTP_GET_VARS['authnum'], $black);
for($i=0;$i<50;$i++) //加入干擾象素
{
imagesetpixel($im, rand()%70 , rand()%30 , $black);
}
ImagePNG($im);
ImageDestroy($im);
?>
D. PHP注冊賬號 怎麼加入驗證碼 求幫助
使用圖片驗證碼,一般注冊機很難識別圖片上的字元。
圖片驗證碼原理:在注冊表單頁上,添加一個表單項,用於提交用戶看到的圖片驗證碼,在適合位置放一個<img,路徑是某一個php程序,例如叫cc.php,這個php產生隨機字元,保存在session,然後使用php的圖片處理相關函數,將剛才產生的隨機字元和指定背景生成一個圖片,php發送頭信息告訴瀏覽器「這是一個圖片」,然後再發頭信息告訴瀏覽器「別緩存」。
追問:
你能幫我弄弄嗎?我不知道在哪加入判斷語句。PHP還沒學會。希望您能留下QQ號
回答:
在提交表單後,保存數據前,判斷表單提交來的驗證碼是否與保存在session里的一樣,不一樣就返回,一樣才通過。
我不
代工
寫代碼,也不教人寫代碼,不好意思。
麻煩採納,謝謝!
E. 我的php代碼中登陸界面加一個驗證碼,如何實現
php登陸頁面+驗證碼的實現,參考如下:
1、首先新建一個php站點;
F. php中用戶登入和驗證碼驗證問題
我一般都用Zend,所以你的代碼沒有看太懂。只是淺淺的注意到裡面有一段代碼:
if (isset($_SESSION['PrevUrl']) && false) {
這里不出意外的話永遠會是false吧。
但好像問題也不再這里。讓我更沒有明白的是你的$_SESSION['yzm']是在這個腳本執行以前就被寫好的嗎?因為我在這個腳本里除了最後一個if裡面看到這個東西以外,就沒有看到了。
G. php實現手機驗證碼驗證注冊功能的邏輯是怎樣的
手機注冊驗證邏輯是這樣的:
首先要找簡訊服務商如:夢網、雲信使、互億無線等等申請簡訊發送介面。
網站實現流程如下:
第一步:用戶注冊時輸入手機號,網站首先要通過JS或者ajax+php驗證這個號碼是不是正確的手機號。
第二步:用戶點擊發送手機驗證碼,通過ajax把手機號傳到php,這時php生成一個隨機的驗證碼保存在session中,然後通過簡訊介面把這個驗證碼發送到這個手機號中。
第三步:用戶輸入手機收到的驗證碼注冊。網站用session中的驗證碼和用戶輸入的驗證碼比較。
H. 如何實現php手機簡訊驗證功能
現在網站在建設網站時為了保證用戶信息的真實性,往往會選擇發簡訊給用戶手機發驗證碼信息,只有通過驗證的用戶才可以注冊,這樣保證了用戶的聯系信息資料的100%的准確性。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" >
<html xmlns>
<head>
<title></title>
<script src="js/jquery-1.4a2.min.js" type="text/javascript"></script>
<script type="text/javascript">
/*-------------------------------------------*/
var InterValObj; //timer變數,控制時間
var count = 60; //間隔函數,1秒執行
var curCount;//當前剩餘秒數
var code = ""; //驗證碼
var codeLength = 6;//驗證碼長度
function sendMessage() {
curCount = count;
var dealType; //驗證方式
tel = $(』#tel』).val();
if(tel!=』』){
//驗證手機有效性
var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+d{8})$/;
if(!myreg.test($(』#tel』).val()))
{
alert(』請輸入有效的手機號碼!』);
return false;
}
tel = $(』#tel』).val();
//產生驗證碼
for (var i = 0; i < codeLength; i++) {
code += parseInt(Math.random() * 9).toString();
}
//設置button效果,開始計時
$("#btnSendCode").attr("disabled", "true");
$("#btnSendCode").val("請在" + curCount + "秒內輸入驗證碼");
InterValObj = window.setInterval(SetRemainTime, 1000); //啟動計時器,1秒執行一次
//向後台發送處理數據
$.ajax({
type: "POST", //用POST方式傳輸
dataType: "text", //數據格式:JSON
url: 』yanzhengma.php』, //目標地址(根據實際地址)
data: "&tel=" + tel + "&code=" + code,
error: function (XMLHttpRequest, textStatus, errorThrown) { },
success: function (msg){ }
});
}else{
alert(』請填寫手機號碼』);
}
}
//timer處理函數
function SetRemainTime() {
if (curCount == 0) {
window.clearInterval(InterValObj);//停止計時器
$("#btnSendCode").removeAttr("disabled");//啟用按鈕
$("#btnSendCode").val("重新發送驗證碼");
code = ""; //清除驗證碼。如果不清除,過時間後,輸入收到的驗證碼依然有效
}
else {
curCount--;
$("#btnSendCode").val("請在" + curCount + "秒內輸入驗證碼");
}
}
</script>
</head>
<body>
<input name="tel" id=tel type="text" />
<input id="btnSendCode" type="button" value="發送驗證碼" onclick="sendMessage()" /></p>
</body>
</html>
第三、調用簡訊伺服器簡訊介面
整理的頁面是yanzhengma.php(具體根據服務商提供信息)
<?php //提交簡訊
$post_data = array();
$post_data[』userid』] =簡訊服務商提供ID;
$post_data[』account』] = 』簡訊服務商提供用戶名』;
$post_data[』password』] = 』簡訊服務商提供密碼』;
// Session保存路徑
$sessSavePath = dirname(__FILE__)."/../data/sessions/";
if(is_writeable($sessSavePath) && is_readable($sessSavePath)){
session_save_path($sessSavePath);
}
session_register(』mobliecode』);
$_SESSION[』mobilecode』] = $_POST["code"];
$content=』簡訊驗證碼:』.$_POST["code"].』【簡訊驗證】』;
$post_data[』content』] = mb_convert_encoding($content,』utf-8』, 』gb2312』); //簡訊內容需要用urlencode編碼下
$post_data[』mobile』] = $_POST["tel"];
$post_data[』sendtime』] = 』』; //不定時發送,值為0,定時發送,輸入格式YYYYMMDDHHmmss的日期值
$url=』http://IP:8888/sms.aspx?action=send』;
$o=』』;
foreach ($post_data as $k=>$v)
{
$o.="$k=".$v.』&』;
}
$post_data=substr($o,0,-1);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //如果需要將結果直接返回到變數里,那加上這句。
$result = curl_exec($ch);
?>
第四:提交表單信息時對簡訊驗證碼驗證
//手機驗證碼開始
session_start();
$svalitel = $_SESSION[』mobilecode』];
$vdcodetel = empty($vdcodetel) ? 』』 : strtolower(trim($vdcodetel));
if(strtolower($vdcodetel)!=$svalitel || $svalitel==』』)
{
ResetVdValue();
//echo "Pageviews=".$vdcodetel;
ShowMsg("手機驗證碼錯誤!", 』-1』);
exit();
}
I. php驗證碼判斷問題
沒明白你的意思, 驗證碼就是這樣, 生成的時候將驗證碼寫進session, 驗證的時候取出來的肯定是上次生成那個.
能詳細說一下你哪裡不明白么?
------------------------------
我想你是沒明白驗證碼的工作原理, 驗證碼多數情況是用來防止機器人自動發貼或注冊而採取的一種驗證手段, 在php中驗證碼多數用session來實現.
舉個例子讓你理解下流程.
1. 用戶訪問注冊頁面a.php
2. a.php輸出了一個驗證碼b.php,實際上等於用戶向b.php發送了一個請求.
3. b.php生成一個隨機數$a, 並將這個隨機數保存到session中, 然後將圖片顯示給用戶
4. 用戶填寫注冊表單並提交到c.php
5. c.php接受用戶注冊信息, 但在注冊之前要從session中取出隨機數$a和你提交上來的驗證碼做一下比較, 這個隨機數$a是在b.php那個請求中生成的, 也就是在a.php中看到的那個圖片. 比較如果相同那麼同意你進行申請, 如果不相同則返回錯誤信息並跳轉回a.php, 然後回到步驟1
這里我覺得你最應該了解的是session的作用,是用來在會話期間內在請求之間傳遞數據.
J. 如何用PHP生成驗證碼
PHP生成驗證碼的原理:使用PHP的GD庫,生成一張帶驗證碼的圖片,並將驗證碼保存在Session中。PHP生成驗證碼的大致流程有:
1、產生一張png的圖片;
2、為圖片設置背景色;
3、設置字體顏色和樣式;
4、產生4位數的隨機的驗證碼;
5、把產生的每個字元調整旋轉角度和位置畫到png圖片上;
6、加入噪點和干擾線防止注冊機器分析原圖片來惡意破解驗證碼;
7、輸出圖片;
8、釋放圖片所佔內存。
session_start();
getCode(4,60,20);
functiongetCode($num,$w,$h){
$code="";
for($i=0;$i<$num;$i++){
$code.=rand(0,9);
}
//4位驗證碼也可以用rand(1000,9999)直接生成
//將生成的驗證碼寫入session,備驗證時用
$_SESSION["helloweba_num"]=$code;
//創建圖片,定義顏色值
header("Content-type:image/PNG");
$im=imagecreate($w,$h);
$black=imagecolorallocate($im,0,0,0);
$gray=imagecolorallocate($im,200,200,200);
$bgcolor=imagecolorallocate($im,255,255,255);
//填充背景
imagefill($im,0,0,$gray);
//畫邊框
imagerectangle($im,0,0,$w-1,$h-1,$black);
//隨機繪制兩條虛線,起干擾作用
$style=array($black,$black,$black,$black,$black,
$gray,$gray,$gray,$gray,$gray
);
imagesetstyle($im,$style);
$y1=rand(0,$h);
$y2=rand(0,$h);
$y3=rand(0,$h);
$y4=rand(0,$h);
imageline($im,0,$y1,$w,$y3,IMG_COLOR_STYLED);
imageline($im,0,$y2,$w,$y4,IMG_COLOR_STYLED);
//在畫布上隨機生成大量黑點,起干擾作用;
for($i=0;$i<80;$i++){
imagesetpixel($im,rand(0,$w),rand(0,$h),$black);
}
//將數字隨機顯示在畫布上,字元的水平間距和位置都按一定波動范圍隨機生成
$strx=rand(3,8);
for($i=0;$i<$num;$i++){
$strpos=rand(1,6);
imagestring($im,5,$strx,$strpos,substr($code,$i,1),$black);
$strx+=rand(8,12);
}
imagepng($im);//輸出圖片
imagedestroy($im);//釋放圖片所佔內存
}