基於PHP實現使用者登入註冊功能的詳細教程
教程前先給大家看看小編的實現成果吧!
圖1:
圖2:
圖3:
教程:
實現這個功能我們需要五個php檔案:
login.php
(登入介面,如圖2)
<!DOCTYPE html> <html><head> <title>登入</title> <meta name="content-type"; charset="UTF-8"> </head><body> <div class="content" align="center"> <!--頭部--> <div class="header"> <h1>登入頁面</h1> </div> <!--中部--> <div class="middle"> <form id="loginform" action="loginaction.php" method="post"> <table border="0"> <tr> <td>使用者名稱:</td> <td> <input type="text" id="name" name="username" required="required" value="<?php echo isset($_COOKIE[""]) ? $_COOKIE[""] : ""; ?>"> </td> </tr> <tr> <td>密 碼:</td> <td><input type="password" id="password" name="password"></td> </tr> <tr> <td colspan="2"> <input type="checkbox" name="remember"><small>記住我 </td> </tr> <tr> <td colspan="2" align="center" style="color:red;font-size:10px;"> <!--提示資訊--> <?php $err = isset($_GET["err"]) ? $_GET["err"] : ""; switch ($err) { case 1: echo "使用者名稱或密碼錯誤!"; break; case 2: echo "使用者名稱或密碼不能為空!"; break; } ?> </td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" id="login" name="login" value="登入"> <input type="reset" id="reset" name="reset" value="重置"> </td> </tr> <tr> <td colspan="2" align="center"> 還沒有賬號,快去<a href="register.php" rel="external nofollow" >註冊</a>吧</td> </tr> </table> </form> </div> <!--腳部--> <div class="footer"> <small>Copyright © 版權所有·歡迎翻版 </div> </div> </body> </html>
loginaction.php
(使login.php實現與資料庫的連線,並校正輸入)
<?php // $Id:$ //宣告變數 $username = isset($_POST['username']) ? $_POST['username'] : ""; $password = isset($_POST['password']) ? $_POST['password'] : ""; $remember = isset($_POST['remember']) ? $_POST['remember'] : ""; //判斷使用者名稱和密碼是否為空 if (!empty($username) && !empty($password)) { //建立連線 $conn = mysqli_connect('localhost','','user'); //準備SQL語句 $sql_select = "SELECT username,password FROM usertext WHERE username = '$username' AND password = '$password'"; //執行SQL語句 $ret = mysqli_query($conn,$sql_select); $row = mysqli_fetch_array($ret); //判斷使用者名稱或密碼是否正確 if ($username == $row['username'] && $password == $row['password']) { //選中“記住我” if ($remember == "on") { //建立cookie setcookie("",$username,time() + 7 * 24 * 3600); } //開啟session session_start(); //建立session $_SESSION['user'] = $username; //寫入日誌 $ip = $_SERVER['REMOTE_ADDR']; $date = date('Y-m-d H:m:s'); $info = sprintf("當前訪問使用者:%s,IP地址:%s,時間:%s /n",$ip,$date); $sql_logs = "INSERT INTO logs(username,ip,date) VALUES('$username','$ip','$date')"; //日誌寫入檔案,如實現此功能,需要建立檔案目錄logs $f = fopen('./logs/' . date('Ymd') . '.log','a+'); fwrite($f,$info); fclose($f); //跳轉到loginsucc.php頁面 header("Location:loginsucc.php"); //關閉資料庫,跳轉至loginsucc.php mysqli_close($conn); } else { //使用者名稱或密碼錯誤,賦值err為1 header("Location:login.php?err=1"); } } else { //使用者名稱或密碼為空,賦值err為2 header("Location:login.php?err=2"); } ?>
loginsucc.php
(登入成功後介面,如圖3)
<!DOCTYPE html> <html> <head> <title>登入成功</title> <meta name="content-type"; charset="UTF-8"> </head> <body> <div> <?php // $Id:$ //開啟session session_start(); //宣告變數 $username = isset($_SESSION['user']) ? $_SESSION['user'] : ""; //判斷session是否為空 if (!empty($username)) { ?> <h1>登入成功!</h1> 歡迎您! <?php echo $username; ?> <br/> <a href="login.php" rel="external nofollow" rel="external nofollow" >退出</a> //跳轉至主網頁 <?php } else { //未登入,無權訪問 ?> <h1>你無權訪問!!!</h1> <?php } ?> </div> </body> </html>
register.php
(註冊介面,如圖1)
<!DOCTYPE html> <html> <head><title>註冊</title> <meta name="content-type"; charset="UTF-8"> </head><body> <div class="content" align="center"> <!--頭部--> <div class="header"> <h1>註冊頁面</h1> </div> <!--中部--> <div class="middle"> <form action="registeraction.php" method="post"> <table border="0"> <tr> <td>使用者名稱:</td> <td><input type="text" id="id_name" name="username" required="required"></td> </tr> <tr> <td>密 碼:</td> <td><input type="password" id="password" name="password" required="required"></td> </tr> <tr> <td>重複密碼:</td> <td><input type="password" id="re_password" name="re_password" required="required"></td> </tr> <tr> <td>性別:</td> <td> <input type="radio" id="sex" name="sex" value="mam">男 <input type="radio" id="sex" name="sex" value="woman">女 </td> </tr> <tr> <td>QQ:</td> <td><input type="text" id="qq" name="qq" required="required"></td> </tr> <tr> <td>Email:</td> <td><input type="email" id="email" name="email" required="required"></td> </tr> <tr> <td>電話:</td> <td><input type="text" id="phone" name="phone" required="required"></td> </tr> <tr> <td>地址:</td> <td><input type="text" id="address" name="address" required="required"></td> </tr> <tr> <td colspan="2" align="center" style="color:red;font-size:10px;"> <!--提示資訊--> <?php $err = isset($_GET["err"]) ? $_GET["err"] : ""; switch ($err) { case 1: echo "使用者名稱已存在!"; break; case 2: echo "密碼與重複密碼不一致!"; break; case 3: echo "註冊成功!"; break; } ?> </td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" id="register" name="register" value="註冊"> <input type="reset" id="reset" name="reset" value="重置"> </td></tr> <tr> <td colspan="2" align="center"> 如果已有賬號,快去<a href="login.php" rel="external nofollow" rel="external nofollow" >登入</a>吧! </td> </tr> </table> </form> </div> <!--腳部--> <div class="footer"> <small>Copyright © 版權所有·歡迎翻版 </div> </div></body></html>
registeraction.php
(實現register.php連線資料庫,並向指定表單插入資料)
<?php // $Id:$ //宣告變數 $username = isset($_POST['username']) ? $_POST['username'] : ""; $password = isset($_POST['password']) ? $_POST['password'] : ""; $re_password = isset($_POST['re_password']) ? $_POST['re_password'] : ""; $sex = isset($_POST['sex']) ? $_POST['sex'] : ""; $qq = isset($_POST['qq']) ? $_POST['qq'] : ""; $email = isset($_POST['email']) ? $_POST['email'] : ""; $phone = isset($_POST['phone']) ? $_POST['phone'] : ""; $address = isset($_POST['address']) ? $_POST['address'] : ""; if ($password == $re_password) { //建立連線 $conn = mysqli_connect("localhost","","user"); //準備SQL語句,查詢使用者名稱 $sql_select = "SELECT username FROM usertext WHERE username = '$username'"; //執行SQL語句 $ret = mysqli_query($conn,$sql_select); $row = mysqli_fetch_array($ret); //判斷使用者名稱是否已存在 if ($username == $row['username']) { //使用者名稱已存在,顯示提示資訊 header("Location:register.php?err=1"); } else { //使用者名稱不存在,插入資料 //準備SQL語句 $sql_insert = "INSERT INTO usertext(username,password,sex,qq,email,phone,address) VALUES('$username','$password','$sex','$qq','$email','$phone','$address')"; //執行SQL語句 mysqli_query($conn,$sql_insert); header("Location:register.php?err=3"); } //關閉資料庫 mysqli_close($conn); } else { header("Location:register.php?err=2"); } ?>
建議將五個檔案存於本地,便於更改,當然不介意用linux的文字編輯器也可以直接上傳後在伺服器端修改。儲存好檔案後:
1.建立資料庫及表單
小編這裡是通過phpmyadmin視覺化介面建立的資料庫和表單,進入ip/phpmyadmin後登陸資料庫:
登陸myadmin後建立資料庫user和表單usertext:
2.php檔案中操作資料庫的函式
這裡小編先解釋下列php資料庫操作函式的作用:
(1)mysqli_connect(“localhost”,“伺服器名”,“資料庫密碼”,“連線的資料庫名”);
引數描述:
“localhost”,不需要更改,新手切忌不要改成伺服器的ip地址,因為建立資料庫的預設的有許可權訪問使用者為:
“連線的資料庫名”,是資料庫不要填表單,第一步的user是資料庫,usertext是表單。
(2)mysqli_query()函式執行某個針對資料庫的查詢:
mysqli_query(connection,query,resultmode);
引數描述:
connection必需。規定要使用的 MySQL 連線。
query必需,規定查詢字串。
(這是一個存放mysql命令的字串,命令內容要用該函式才可實現)
resultmode
可選。一個常量。可以是下列值中的任意一個:
MYSQLI_USE_RESULT(如果需要檢索大量資料,請使用這個)
MYSQLI_STORE_RESULT(預設)
eg:
(3)mysqli_fetch_array() 函式
從結果集中取得一行作為關聯陣列,或數字陣列,或二者兼有。
mysqli_fetch_array(result,resulttype);
引數描述:
result必需。規定由 mysqli_query()、mysqli_store_result() 或 mysqli_use_result() 返回的結果集識別符號。
resulttype可選。規定應該產生哪種型別的陣列。可以是以下值中的一個:
MYSQLI_ASSOC
MYSQLI_NUM
MYSQLI_BOTH
3修改php檔案實現登入註冊
下面我們來對loginaction.php和registeraction.php兩個檔案進行更改
如果資料庫建立和第1步時一樣,那隻需要對兩個檔案中的:
mysqli_connect(“localhost”,“user”);
進行使用者資訊填寫即可。
如果資料庫名稱或表單不一樣,則需要找到下面語句:
mysqli_connect(“localhost”,“user”);
SELECT;
INSERT INTO;(只在registeraction.php有)
將上述語句中的(資料庫名)user和(表單名)usertext修改成你的資料庫名和表單名。
4進一步完善
有興趣的朋友可以試著向小編一樣建立超連結,登入成功後跳轉到指定網頁;
在loginsucc.php中找到退出將login.php改為其他網頁(直接寫檔名的話需要放於同一目錄下)
點選連結:
當然有進必有出,這裡小編設定了一個退出登入modal
(bootstrap使用:https://getbootstrap.com/docs/4.3/getting-started/introduction/)
到此這篇關於基於PHP實現使用者登入註冊功能的詳細教程的文章就介紹到這了,更多相關PHP實現使用者登入註冊內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!