簡體   English   中英

將用戶重定向到登錄頁面

[英]redirect users to the login page

我有以下登錄腳本。

<?php
$name = $_POST["name"];
$password = $_POST["password"];
$query = "SELECT * FROM users WHERE username = '$name'
         AND password = '$password'";
$q=mysql_query($query) or die(mysql_error());
$result = mysql_query($query);
if (mysql_fetch_row($result)) {
  /* access granted */
  session_start();
  header("Cache-control: private");
  $_SESSION["access"] = "granted";
  header("Location: ./menu.php");
  } else
  /* access denied &#8211; redirect back to login */
  header("Location: ./login.html");
  ?>
  mysql_close();
  ?>

但是,現在我需要“菜單”將未登錄的用戶重定向到登錄頁面嗎? 防止直接訪問?

謝謝。

在menu.php中?

session_start();
if (!isset($_SESSION['access']) || $_SESSION['access'] != "granted") {
  header("Location: ./login.html");
  exit();
}

您必須在menu.php的頂部放置以下內容:

<?php
    session_start();
    if(!isset($_SESSION['access']) || $_SESSION['access'] != 'granted'){
        header("Location: ./login.html');
    }
?>

並且不要忘記清理您的查詢輸入:

$name = mysql_real_escape_string(stripslashes($_POST["name"]));    
$password = mysql_real_escape_string(stripslashes($_POST["password"]));    

並且不要忘了調用session_start(); 在每個使用$_SESSION腳本的開頭

檢查menu.php頂部$_SESSION["access"]的值。 另外,您錯過了對session_start的呼叫。 如果啟用了session.auto_start,則可能不需要它,但是顯式調用它是一個好習慣。

檢查菜單中的$_SESSION["access"]以查看用戶是否已登錄。順便說一句,您應該閱讀SQL注入並使用轉義重寫該SQL查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM