php實現註冊登陸驗證
歡迎介面很簡單,直接放上程式碼
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>php入門</title>
<style type="text/css">
h1{
color:BLUE;
}
c{
color:#FC3;
}
i{
float: right;
}
</style>
</head>
<body background=" [email protected]_1l_2o_100sh.jpg">
<h1>歡迎光臨我的小窩</h1>
<i>
<form method="post" action="dengluhouduan.php">
<input type="submit" value="登陸" />
</form>
<form method="post" action="Untitled-2.php">
<input type="submit" value="註冊" />
</form>
</i>
<br />
<br />
<br />
<img src="http://i1.bvimg.com/666989/6d164213b04944a6.jpg" alt="載入失敗" title="圖片" width="473" height="258"/>
<form>
<a href="mailto: [email protected]">電子郵件</a>
</body>
</html>
放上效果圖
然後是註冊部分的程式碼
這一部分也很簡單,都是基本語法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>php入門</title>
<style type="text/css">
h1{
color:BLUE;
}
c{
color:#FC3;
}
</style>
</head>
<body background=" [email protected]_1l_2o_100sh.jpg">
<h1>使用者註冊</h1>
<form method="post" action="new 2.php">
<label for="usename" ><c>使用者名稱:</c> </label>
<input type="text" name="usename" />
<br />
<br />
<label for="pass"><c>密碼:</c> </label>
<input type="password" name="pass" />
<br />
<br />
<label for="aa" ><c>確認密碼:</c></label>
<input type="password" name="pass2"/>
<br />
<hr />
<input type="submit" value="確定" />
<input type="reset" value="清除" />
</form>
<br />
<br />
<br />
<img src="http://i1.bvimg.com/666989/6d164213b04944a6.jpg" alt="載入失敗" title="圖片" width="473" height="258"/>
<form>
<a href="mailto:[email protected]">電子郵件</a>
</body>
</html>
使用者輸入註冊資訊後,需要對資訊進行判斷是否滿足要求
我們可以通過$_POST['usename']
函式來接受使用者註冊時輸入的資訊
其中usename就是
<input type="text" name="usename" />
中name的值;具體用法參考PHP使用手冊
判斷使用者名稱是否合法
規定使用者名稱首字母必須是英文且長度必須在5-12個字元之間
1.取首字母有兩種方法
(1)
$str="abcdef";
$str_first=$str{0};
(2)
使用substr(string $str,int $start[,int $length]);
函式求子串,start為起始位置,length為字串長度
$first_usename=substr($usename,0,1);
詳情參考php使用手冊
2.判斷首字母合法,可以使用ASCII表
通過 $ascii_usename=ord($first_usename);//第一個字母轉換為ASCII值
獲得使用者名稱第一個量的值
ord()
函式的用法也可以參考php使用手冊
使用if判斷是否合法,不合法終止程式,並提示重新返回註冊
if(!(($ascii_usename>=65&&$ascii_usename<=90)||($ascii_usename>=97&&$ascii_usename<=122)))
{
exit('使用者名稱首字母不合法.<a href="Untitled-2.php">重新註冊</a>');
}
判斷長度是否合法
檢視字串長度使用函式strlen($str);
if(!(strlen($usename)>=5&&strlen($usename)<=12))
{
exit('使用者名稱長度不合法.<a href="Untitled-2.php">重新註冊</a>');
}
判斷密碼是否合法
與使用者名稱合法類似
if(!(strlen($passname)>=5&&strlen($passname)<=12))
{
exit('密碼長度不合法.<a href="Untitled-2.php">重新註冊</a>');
}
if(!($passname==$passname2))
{
exit('兩次密碼不一致.<a href="Untitled-2.php">重新註冊</a>');
}
如若註冊成功,返回登陸
最後新建一個檔案,用來儲存註冊資訊
用#把使用者名稱和密碼連線起來,方便登陸時判斷,這個方法,emmmm…很簡陋,應為我小白一個,只能想到這個;
新建檔案和寫入檔案通過一下程式碼實現
$myfile = fopen("username.txt", "a") or die("Unable to open file!");//新建資料夾用來儲存username
fwrite($myfile, $usename."#".$passname."#");//把註冊的使用者名稱和密碼寫入檔案
其中,fopen()既可以新建也可以開啟,前面的引數時檔名,後面的引數意思是增加,詳情見手冊。
發出完整程式碼
<?php
header("Content-type: text/html; charset=utf-8");
//接收資料
$usename=$_POST['usename']; //接受使用者名稱
$passname=$_POST['pass'];//接受密碼
$passname2=$_POST['pass2'];//接受密碼
//判斷使用者名稱是否合法
$first_usename=substr($usename,0,1);//取出使用者名稱第一個字母
$ascii_usename=ord($first_usename);//第一個字母轉換為ASCII值
if(!(($ascii_usename>=65&&$ascii_usename<=90)||($ascii_usename>=97&&$ascii_usename<=122)))
{
exit('使用者名稱首字母不合法.<a href="Untitled-2.php">重新註冊</a>');
}
if(!(strlen($usename)>=5&&strlen($usename)<=12))
{
exit('使用者名稱長度不合法.<a href="Untitled-2.php">重新註冊</a>');
}
if(!(strlen($passname)>=5&&strlen($passname)<=12))
{
exit('密碼長度不合法.<a href="Untitled-2.php">重新註冊</a>');
}
if(!($passname==$passname2))
{
exit('兩次密碼不一致.<a href="Untitled-2.php">重新註冊</a>');
}
$myfile = fopen("username.txt", "a") or die("Unable to open file!");//新建資料夾用來儲存username
fwrite($myfile, $usename."#".$passname."#");//把註冊的使用者名稱和密碼寫入檔案
exit('註冊成功.<a href="dengluhouduan.php">返回登陸</a>');
?>
效果如下
然後開始登陸介面了
前端介面很簡單
直接放程式碼吧
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>php入門</title>
<style type="text/css">
h1{
color:BLUE;
}
c{
color:#FC3;
}
</style>
</head>
<body background="[email protected]_1l_2o_100sh.jpg">
<h1>使用者登陸</h1>
<form method="post" action="DL-houduan.php">
<label for="usename" ><c>使用者名稱:</c> </label>
<input type="text" name="usename" />
<br />
<br />
<label for="pass"><c>密碼:</c> </label>
<input type="password" name="pass" />
<hr />
<input type="submit" value="確定" />
<input type="reset" value="清除" />
</form>
<form method="post" action="welcome.php">
<input type="submit" value="返回歡迎介面" />
</form>
<form method="post" action="Untitled-2.php">
<input type="submit" value="註冊" />
</form>
<br />
<br />
<br />
<img src="http://i1.bvimg.com/666989/6d164213b04944a6.jpg" alt="載入失敗" title="圖片" width="473" height="258"/>
<form>
<a href="mailto:[email protected]">電子郵件</a>
</body>
</html>
同樣的,使用POST傳輸資料,再使用file_get_contents('username.txt')
把檔案內容讀成字串,然後使用strpos($userpassfile,$userpass);
查詢輸入的使用者名稱密碼是否為檔案內容的字串,若是,則登陸成功,否則,返回註冊,關於file_get_contents和strpos的具體用法,也可以在使用手冊找到
放出完整程式碼
<?php
/**
* Created by PhpStorm.
* User: lenovo
* Date: 2018/11/3
* Time: 19:05
*/
header("Content-type: text/html; charset=utf-8");
$myfile = fopen("username.txt", "r") or die("Unable to open file!");//開啟username檔案
$usename=$_POST['usename']; //接受使用者名稱
$passname=$_POST['pass'];//接受密碼
$userpass=$usename."#".$passname."#";
$userpassfile=file_get_contents('username.txt');//把檔案中的內容讀取為字串
echo "<br/>";
//fread($myfile,filesize("webdictionary.txt"));
$DL=strpos($userpassfile,$userpass);
if($DL===false)
{
exit('使用者不存在.<a href="Untitled-2.php">重新註冊</a>');
}
else{
exit('登陸成功.<a href="zhuye.php">開始旅行</a>');
}
?>
今天再加上驗證碼驗證的環節
首先要產生一個四位的隨機數字字母組合的字串,使用{}擷取字串的功能,加上mt_rand()函式,可以產生一個隨機字元,迴圈四次即可,為了美觀,加上css樣式,使用rgb顏色模式,可以產生隨機顏色;通過&_post可以獲取輸入資訊,二隨機產生的資訊可以使用隱藏域實現,由於我們添加了css樣式,在隨機產生的字串和輸入的字串做對比時,會有影響,所以必須過濾掉樣式,可以使用函式strip-tags();
他的作用時從字串中刪除HTML和PHP標記,詳情見手冊
1.php
<from method="post",action="2.php">
<?php
$w="12345";
?>
<input type="hidden" name="w" value="$w"/>
</from>
2.php
<?php
$w1=$_POST['w'];
echo $w1;
?>
<?php
$yanzheng="zbcdefghijklmnopqrstuvwxyz0123456789";
$put='';
for ($i=0;$i<4;$i++)
{
$YZ = $yanzheng{mt_rand(0, strlen($yanzheng) - 1)};
$put.= '<span style="color:rgb(' . mt_rand(0, 255) . ',' . mt_rand(0, 255) . ',' . mt_rand(0, 255) . ')">' . $yanzheng{mt_rand(0, strlen($yanzheng) - 1)} . '</span>';
}