首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP Session 實作會員登入系統完整範例:登入驗證、權限檢查與登出

     編輯:PHP 相關知識

登入頁面 (login.php3)

<?php
if ($login) {
    include("../include/config.inc.php3");
    session_start();
    $right_enter = 0;
    $query = "SELECT * FROM user_define WHERE user_login='$user_login' AND user_pass=PASSWORD('$user_pass')";
    $result = @mysql_query($query, $dbconnect);
    if ($user_array = @mysql_fetch_array($result)) {
        $user_id = $user_array['user_id'];
        $user_name = $user_array['user_info'];
        session_register("user_id");
        session_register("user_name");
        session_register("user_array");
        if ($user_array['ticket_day'] && $user_array['ticket_num']) {
            $right_enter = 1;
        } else {
            $error_message = "對不起,您沒有訂票的權限!";
        }
    } else {
        $error_message = "錯誤!用戶名或口令錯誤,請重新輸入。";
    }
    $log_time = date("Y-m-d H:i:s");
    $query = "INSERT INTO log_record (log_time, user_login, remote_addr, right_enter, enter_function)
              VALUES ('$log_time', '$user_login', '$REMOTE_ADDR', $right_enter, 1)";
    @mysql_query($query, $dbconnect);
    if ($right_enter) {
        Header("Location: welcome_reserve.php3");
        exit;
    }
}
if ($logout) {
    session_start();
    session_unregister("user_id");
    session_unregister("user_name");
    session_unregister("user_array");
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>用戶登錄</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="stylesheet" type="text/css" href="../include/jz_common.css">
</head>
<body>
<?php if ($error_message) echo "<center><font color=#ff0000>$error_message</font></center>"; ?>
<form method="post" action="login.php3">
  用戶名:<input type="text" name="user_login"><br>
  密碼:<input type="password" name="user_pass"><br>
  <input type="submit" name="login" value="登入">
  <input type="submit" name="logout" value="登出">
</form>
<?php include("../footer.php3"); ?>
</body></html>

關鍵點說明

  • session_start() 必須在任何輸出前呼叫。
  • 使用 session_register() 註冊全域變數(PHP 4.1 以前寫法),新版建議直接用 $_SESSION['var']。
  • 登入成功記錄日誌(時間、IP、是否授權),失敗顯示錯誤訊息。
  • 登出時清除 Session 變數。
  • 密碼驗證使用 MySQL PASSWORD() 函數比對。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved