1. 程式人生 > >php實現註冊登陸驗證

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>&nbsp; &nbsp;</label> <input type="text" name="usename" /> <br /> <br /> <label for="pass"><c>密碼:</c> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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>&nbsp; &nbsp;</label>
    <input type="text" name="usename" />
    <br />
    <br />
    <label for="pass"><c>密碼:</c> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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_contentsstrpos的具體用法,也可以在使用手冊找到
放出完整程式碼

<?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>';


    }

ok