login.html 負(fù)責(zé)收集用戶填寫的登錄信息。
<fieldset> <legend>用戶登錄</legend> <form name="LoginForm" method="post" action="login.php" onSubmit="return InputCheck(this)"> <p> <label for="username" class="label">用戶名:</label> <input id="username" name="username" type="text" class="input" /> <p/> <p> <label for="password" class="label">密 碼:</label> <input id="password" name="password" type="password" class="input" /> <p/> <p> <input type="submit" name="submit" value=" 確 定 " class="left" /> </p> </form> </fieldset>
javascript 檢測(cè)及 CSS 樣式可參考 reg.html,本部分略去,可直接查看最后附錄的完整代碼。
login.php 負(fù)責(zé)處理用戶登錄與退出動(dòng)作。
//登錄 if(!isset($_POST['submit'])){ exit('非法訪問!'); } $username = htmlspecialchars($_POST['username']); $password = MD5($_POST['password']); //包含數(shù)據(jù)庫連接文件 include('conn.php'); //檢測(cè)用戶名及密碼是否正確 $check_query = mysql_query("select uid from user where username='$username' and password='$password' limit 1"); if($result = mysql_fetch_array($check_query)){ //登錄成功 $_SESSION['username'] = $username; $_SESSION['userid'] = $result['uid']; echo $username,' 歡迎你!進(jìn)入 <a href="my.php">用戶中心</a><br />'; echo '點(diǎn)擊此處 <a href="login.php?action=logout">注銷</a> 登錄!<br />'; exit; } else { exit('登錄失??!點(diǎn)擊此處 <a href="javascript:history.back(-1);">返回</a> 重試'); }
該段代碼首先確認(rèn)如果是用戶登錄的話,必須是 POST 動(dòng)作提交。然后根據(jù)用戶輸入的信息去數(shù)據(jù)庫核對(duì)是否正確,如果正確,注冊(cè) session 信息,否則提示登錄失敗,用戶可以重試。
該段代碼需要在頁面開頭啟用 session_start() 函數(shù),參見下面 退出處理 代碼部分。
處理用戶退出的代碼跟處理登錄的代碼都在 login.php 里。
session_start(); //注銷登錄 if($_GET['action'] == "logout"){ unset($_SESSION['userid']); unset($_SESSION['username']); echo '注銷登錄成功!點(diǎn)擊此處 <a href="login.html">登錄</a>'; exit; }
該段代碼在處理用戶登錄的代碼之前,只允許以 login.php?action=logout 的方式訪問,其他方式都認(rèn)為是檢測(cè)用戶登錄。具體邏輯參看附錄完整代碼。
my.php 是用戶中心,列在教程里作為用戶登錄檢測(cè)參考。
<?php session_start(); //檢測(cè)是否登錄,若沒登錄則轉(zhuǎn)向登錄界面 if(!isset($_SESSION['userid'])){ header("Location:login.html"); exit(); } //包含數(shù)據(jù)庫連接文件 include('conn.php'); $userid = $_SESSION['userid']; $username = $_SESSION['username']; $user_query = mysql_query("select * from user where uid=$userid limit 1"); $row = mysql_fetch_array($user_query); echo '用戶信息:<br />'; echo '用戶ID:',$userid,'<br />'; echo '用戶名:',$username,'<br />'; echo '郵箱:',$row<'email'>,'<br />'; echo '注冊(cè)日期:',date("Y-m-d", $row['regdate']),'<br />'; echo '<a href="login.php?action=logout">注銷</a> 登錄<br />'; ?>
!評(píng)論內(nèi)容需包含中文