利用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
新聞熱點
疑難解答