萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php 簡單的登入登出實例程序(session)

php 簡單的登入登出實例程序(session)

利用php實例登入登出我們一般會借助於session來保存記錄用戶登錄成功的信息,然後退出時我們再使用unset來清除session即可實現用戶登入登出功能了,下面我來介紹一個簡單的實例。

關於會話處理

HTTP 是一種無狀態的協議,說明每次請求的處理都與之前或之後的 請求無關,但是為了能夠調整用戶特有的行為和首選項,出現了一種在客戶端存儲少量信息(常稱為cookie)的實踐,但由於 cookie 大小的限制、所允許的 cookie 數量以及 cookie 的實現上的各種不一致,出現了另外一種解決方案:會話處理。

會話處理的實現方式是為每位網站訪問者分配一個稱之為會話 ID(SID)的唯一標識屬性,然後將此 SID 與任意數量的數據關聯。

開始會話

session_start();

創建會話變量

 代碼如下 復制代碼

$_SESSION['username'] = “jason”;

刪除會話變量

 代碼如下 復制代碼 unset($_SESSION['username']);

簡單的登入登出

 代碼如下 復制代碼

$supervisor = "admin";
$superpsw = "passwd";

// 檢查是否提交表單
if (isset($_POST['superadmin']))
{
if (!($_POST['supername'] == $supervisor) || !($_POST['superpass'] == $superpsw))
{
echo "用戶名或密碼錯誤";
exit;
}
else
{
session_start();
$_SESSION["superlogin"] = $_POST['supername'];
}
} else {
session_start();
// 檢查是否設置了會話變量,即是否已經登入,如果沒有,顯示登入頁面
if (! isset($_SESSION["superlogin"]) )
{
echo "<form name='form1' method='post' action='$_SERVER[PHP_SELF]'>";
echo "<div align='center'>請輸入管理員密碼<br />";
echo "管理員";
echo "<input type='text' name='supername'><br />";
echo "密  碼";
echo "<input type='password' name='superpass'><br />";
echo "<input type='submit' name='superadmin' value='進入'><br />";
echo "<input type='reset' name='cancel' value='重寫'></div>";
echo "</form>";
exit;
}
}
// 由用戶銷毀會話變量,登出
if (isset($_GET['logout'])) {
unset($_SESSION['superlogin']);
header("Location:index.php");
}

假設將此文件命名為include.php,將其包含到要驗證登入的頁面即可,例如 index.php

 代碼如下 復制代碼

    <?php
    require “include.php”;
    ?>
    <html>
    <head>
    <title>管理</title>
    <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
    </head>
    <body>
    <p><a href=”index.php?logout=1″>登出</a>
    <p>歡迎進入</p>
    </body>
    </html>

如此訪問 index.php 頁面時將進入登入頁面,登錄後顯示 index.php 頁面內容,這個過程一直持續到用戶結束會話,如關閉浏覽器或點擊注銷按鈕,但是會話本身在PHP服務器有一個默認的生存期。

有效會話的持續時間由 php.ini 所控制,默認為1440秒,即24分鐘

    session.gc_maxlifetime = 1440

PS:本文是個范例,用簡單的代碼來做說明,實際應用中會采用更加復雜的控制機制。

copyright © 萬盛學電腦網 all rights reserved