PHP注冊與登錄【3】 用戶登錄與退出


登錄頁面

login.html 負責收集用戶填寫的登錄信息。

 1 <fieldset>
 2 <legend>用戶登錄</legend>
 3 <form name="LoginForm" method="post" action="login.php" onSubmit="return InputCheck(this)">
 4 <p>
 5 <label for="username" class="label">用戶名:</label>
 6 <input id="username" name="username" type="text" class="input" />
 7 <p/>
 8 <p>
 9 <label for="password" class="label">密 碼:</label>
10 <input id="password" name="password" type="password" class="input" />
11 <p/>
12 <p>
13 <input type="submit" name="submit" value="  確 定  " class="left" />
14 </p>
15 </form>
16 </fieldset>

javascript 檢測及 CSS 樣式可參考 reg.html,本部分略去,可直接查看最后附錄的完整代碼。

登錄處理

login.php 負責處理用戶登錄與退出動作。

 1 //登錄
 2 if(!isset($_POST['submit'])){
 3     exit('非法訪問!');
 4 }
 5 $username = htmlspecialchars($_POST['username']);
 6 $password = MD5($_POST['password']);
 7 
 8 //包含數據庫連接文件
 9 include('conn.php');
10 //檢測用戶名及密碼是否正確
11 $check_query = mysql_query("select uid from user where username='$username' and password='$password' limit 1");
12 if($result = mysql_fetch_array($check_query)){
13     //登錄成功
14     $_SESSION['username'] = $username;
15     $_SESSION['userid'] = $result['uid'];
16     echo $username,' 歡迎你!進入 <a href="my.php">用戶中心</a><br />';
17     echo '點擊此處 <a href="login.php?action=logout">注銷</a> 登錄!<br />';
18     exit;
19 } else {
20     exit('登錄失敗!點擊此處 <a href="javascript:history.back(-1);">返回</a> 重試');
21 }

該段代碼首先確認如果是用戶登錄的話,必須是 POST 動作提交。然后根據用戶輸入的信息去數據庫核對是否正確,如果正確,注冊 session 信息,否則提示登錄失敗,用戶可以重試。

該段代碼需要在頁面開頭啟用 session_start() 函數,參見下面 退出處理 代碼部分。

退出處理

處理用戶退出的代碼跟處理登錄的代碼都在 login.php 里。

1 session_start();
2 
3 //注銷登錄
4 if($_GET['action'] == "logout"){
5     unset($_SESSION['userid']);
6     unset($_SESSION['username']);
7     echo '注銷登錄成功!點擊此處 <a href="login.html">登錄</a>';
8     exit;
9 }

該段代碼在處理用戶登錄的代碼之前,只允許以 login.php?action=logout 的方式訪問,其他方式都認為是檢測用戶登錄。具體邏輯參看附錄完整代碼。

用戶中心

my.php 是用戶中心,列在教程里作為用戶登錄檢測參考。

 1 <?php
 2 session_start();
 3 
 4 //檢測是否登錄,若沒登錄則轉向登錄界面
 5 if(!isset($_SESSION['userid'])){
 6     header("Location:login.html");
 7     exit();
 8 }
 9 //包含數據庫連接文件
10 include('conn.php');
11 $userid = $_SESSION['userid'];
12 $username = $_SESSION['username'];
13 $user_query = mysql_query("select * from user where uid=$userid limit 1");
14 $row = mysql_fetch_array($user_query);
15 echo '用戶信息:<br />';
16 echo '用戶ID:',$userid,'<br />';
17 echo '用戶名:',$username,'<br />';
18 echo '郵箱:',$row<'email'>,'<br />';
19 echo '注冊日期:',date("Y-m-d", $row['regdate']),'<br />';
20 echo '<a href="login.php?action=logout">注銷</a> 登錄<br />';
21 ?>

提示

  1. 用戶注冊登錄涉及到用戶信息與數據庫的交互,因此要特別注意用戶提交的信息不能為非法信息,本例中注冊部分已經使用正則表達式做了限制,對登錄部分只簡單使用了 htmlspecialchars() 處理,實際應用時可更嚴格一些。
  2. 本教程只是簡單演示用戶注冊與登錄的過程,其代碼僅供學習參考,不可直接用於項目生產。
  3. 本教程中對於用戶登錄成功后采用 session 來管理,也可以采用 cookie 來管理,尤其對於有時限要求的情況。
  4. 為了提高用戶體驗,用戶注冊部分可以結合 AJAX 來檢測用戶輸入的信息而不必等點擊提交后再檢測。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM