用PHP制作登錄和注冊頁面,一共6個頁面,三個可視頁面:登錄、注冊、主頁,三個處理頁面:驗證、添加用戶、清除退出
注冊
<!--這是注冊頁面d&z-2-z.php,用戶可以提交用戶名和密碼進行注冊,點擊注冊按鈕提交給d&z-4-add.php頁面處理--> <!doctype html> <html> <head> <meta charset="utf-8"> <title>無標題文檔</title> </head> <body> <h1>注冊</h1> <form action="d&z-4-add.php" method="post"> <!--from表單指定數據的接收文件為d&z-4-add.php,指定數據傳輸方式為post--> <div><label for="users">用戶名</label><input type="text" name="users" id="users"></div><!--用戶名欄--> <div><label for="pwd">密碼</label><input type="password" name="pwd" id="pwd"></div><!--密碼欄--> <div><label for="pwd2">確認密碼</label><input type="password" name="pwdag" id="pwd2"></div><!--再次確認密碼欄--> <input type="submit" value="注冊" id="tj" onClick="return tiJiao()"><!--注冊按鈕,添加了點擊事件,用來驗證兩次密碼是否輸入的相同--> </form> </body> <script type="text/javascript"> var pwd = document.getElementById("pwd"); //分別獲取密碼和確認密碼的表單元素 var pwd2 = document.getElementById("pwd2"); var bool = false; //設置一個為非的變量 /* tiJiao()函數用來判斷兩次密碼輸入的內容是否相同,相同則返回是,不同則輸出提示並返回非 */ function tiJiao(){ if(pwd.value==pwd2.value){ bool = true; }else{ alert("兩次密碼輸入不同!"); } return bool; } </script> </html>
用戶添加
<?php //這里是d&z-4-add.php,是d&z-2-z.php頁面提交后跳轉到的處理頁面,處理結果又兩種,添加數據成功則跳轉到登錄頁面d&z-1-d.php,失敗則輸出提示“注冊失敗!” require_once("./DBDA.class.php"); //引入數據庫連接類 $db = new DBDA(); //實例化數據連接 $users = $_POST["users"]; //接收傳過來的用戶名和密碼數據 $pwd = $_POST["pwd"]; $arr = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","i","s","t","u","v","w","x","y","z","1","2","3","4","5","6","7","8","9","0","*","#","@","$","%","&");//這是一個自定義的字符串數組 $sjs0 = rand(0,41); //設置變量從0到9取10個隨機數, $sjs1 = rand(0,41); $sjs2 = rand(0,41); $sjs3 = rand(0,41); $sjs4 = rand(0,41); $sjs5 = rand(0,41); $sjs6 = rand(0,41); $sjs7 = rand(0,41); $sjs8 = rand(0,41); $sjs9 = rand(0,41); //設置秘鑰,秘鑰是用來提高加密級別的,是由以上自定義字符串數組中隨機取出的10個字符組成的字符串, $miyao = "{$arr[$sjs0]}{$arr[$sjs1]}{$arr[$sjs2]}{$arr[$sjs3]}{$arr[$sjs4]}{$arr[$sjs5]}{$arr[$sjs6]}{$arr[$sjs7]}{$arr[$sjs8]}{$arr[$sjs9]}" ; $pwdjm = md5($pwd.$miyao); //將秘鑰拼接在傳入的密碼后面,然后用MD5方法進行加密 $sql = "insert into d_z values('{$users}','{$pwdjm}','{$miyao}')"; //sql語句為:將用戶名、加密后的MD5碼、秘鑰存入數據庫 $result = $db->query($sql,1); //執行sql語句,增語句加上第二參數1,用$result接收結果 if($result){ //執行成功,跳轉到登錄頁面d&z-1-d.php echo "<script type='text/javascript'> window.location.href='d&z-1-d.php'; </script>"; }else{ //執行失敗,輸出提示“注冊失敗!” echo "注冊失敗!"; }
登錄
<!--這是登錄的主頁面d&z-1-d.php,用戶可以輸入用戶名和密碼,點擊登錄時跳轉到d&z-5-yan.php做驗證處理,還可以點擊注冊按鈕去跳轉到注冊頁面d&z-2-z.php--> <!doctype html> <html> <head> <meta charset="utf-8"> <title>無標題文檔</title> </head> <body> <h1>登錄</h1> <form action="d&z-5-yan.php" method="post"><!--from表單指定數據接收頁面為d&z-5-yan.php,數據的傳輸方式為post--> <div><label for="users">用戶名</label><input type="text" name="users" id="users"></div><!--用戶名欄--> <div><label for="pwd">密碼</label><input type="password" name="pwd" id="pwd"></div><!--密碼欄--> <input type="submit" value="登錄"><!--登錄按鈕--> <a href="d&z-2-z.php"><input type="button" value="注冊"></a><!--注冊按鈕,添加a標簽並指定跳轉頁面為d&z-2-z.php的注冊頁面--> </form> </body> </html>
驗證
<?php //這里是d&z-5-yan.php,是登錄頁面d&z-1-d.php點擊登錄后跳轉過來的處理頁面 session_start(); //開啟session require_once("./DBDA.class.php"); //引入數據庫訪問類 $db = new DBDA(); $users = $_POST["users"]; //接收傳過來的用戶名和密碼數據 $pwd = $_POST["pwd"]; $sql = "select * from d_z where users='{$users}' "; //創建sql語句查詢傳入的用戶名在數據庫中的對應的數據 $arr = $db->query($sql); //執行sql語句並用$arr接收 if(!empty($arr)){ //判斷$arr是否為空 $pwdjm = md5("{$pwd}{$arr[0][2]}"); //如果$arr不為空,重組MD5碼 if($pwdjm==$arr[0][1]){ //如果重組的MD5碼和數據庫中提取是MD5碼相同,則驗證成功,跳轉到主頁d&z-3-index.php,並且把傳入的用戶名存入$_SESSION["users"]中 echo "<script type='text/javascript'> window.location.href='d&z-3-index.php'; </script>"; $_SESSION["users"] = $users; }else{ //如果MD5碼不匹配,則提示用戶名和密碼輸入錯誤 echo "用戶名和密碼錯誤!"; } }else{ //$arr為空說明沒有對應的用戶名,提示用戶名不存在 echo "用戶名不存在!"; }
主頁
<!--這是主頁頁面d&z-3-index.php,是d&z-5-yan.php驗證成功后跳轉過來的頁面,添加了防止繞過登錄的方法--> <!doctype html> <html> <head> <meta charset="utf-8"> <title>無標題文檔</title> </head> <?php
//用來防止繞過登錄的方法 session_start(); //開啟session if(empty($_SESSION["users"])){ //判斷$_SESSION["users"]是否為空 echo "<script type='text/javascript'> window.location.href='d&z-1-d.php'; </script>"; //空則跳轉回登錄頁面d&z-1-d.php exit; // 停止執行后面的代碼 }
?> <body> <h1>歡迎光臨</h1> <a href="d&z-6-qing.php"><input type="button" value="退出"></a><!--退出登錄按鈕,點擊跳轉到處理頁面d&z-6-qing.php--> </body> </html>
退出清除
<?php //這里是d&z-6-qing.php,作用是用來清除$_SESSION["users"]值,即退出登錄 session_start(); //開啟session unset($_SESSION["users"]); //清除$_SESSION["users"]值 echo "<script type='text/javascript'> window.location.href='d&z-3-index.php'; </script>"; //跳轉到主頁d&z-3-index.php,但由於沒有了$_SESSION["users"]的值,會觸發防止繞過登錄方法,直接跳轉到登錄頁面d&z-1-d.php