0

我试图通过设置密码保护页面来保护它。我正在使用下面的代码,但它不起作用。

主页.php

                session_start(); 



         // Process the POST variables
           $username = $_SESSION["user_name"];
              //$password = $_POST["password"];


            // Set up the session variables
            $_SESSION["user_name"] = $username;

              if(!isset($_SESSION['user_name'])) { header('Location: login.php'); die('<a  href="login.php">Login first!</a>'); }

login.php 的相关部分

           <?php

            session_start(); 



             // Process the POST variables
          $username = $_SESSION["user_name"];
           //$password = $_POST["password"];


                // Set up the session variables
              $_SESSION["user_name"] = $username;
4

4 回答 4

3

尝试这个

session_start(); 

if(!isset($_SESSION['user_name'])) 
{ 
   header('Location: login.php'); 
   exit;
}

$username = $_SESSION["user_name"];
$password = $_SESSION["password"]; *//EDITED*

编辑:

在 login.php 上

<?php
    session_start(); 

    if(isset($_SESSION['user_name'])) 
    { 
        header('Location: home.php'); 
        exit;
    }
?>

<input type = 'text' name = 'login' />
<input type = 'password' name = 'password' />
<input type = 'submit' name = 'submit' />

编辑2:

成功登录后写下这个

$_SESSION["user_name"] = $_POST["user_name"];
$_SESSION["password"] = $_POST["password"];

这将在会话变量中设置帖子所以它看起来像这样现在当你检查if(isset($_SESSION['user_name']))它时它将返回 true 并重定向到主页

于 2011-01-20T13:45:57.587 回答
2

只是一个猜测,因为您还没有真正完全提出这个问题。但尝试更换:

$username = $_SESSION["user_name"];

$username = $_POST["user_name"];
于 2011-01-20T13:44:55.293 回答
1

您似乎正在复制一个空的用户名,然后将一个空的 $username 的值更改为您的会话数组。

您希望尽可能少地修改会话信息。

所以在你的更新页面:

<?php

session_start();

// is the line below necessary on this page?
if ( $_POST['user_name'] != "" ) {
    $_SESSION['user_name'] = $_POST['user_name'];
}

if ( ( trim($_SESSION['user_name']) != "" ) ) {
     echo $_SESSION['user_name'];
} else {
     header("Location: login.php");
     die();
}

更新:删除评论行

于 2011-01-20T14:05:06.107 回答
1

在您login.phphome.php您都使用:

// Process the POST variables
$username = $_SESSION["user_name"];
//$password = $_POST["password"];

// Set up the session variables
$_SESSION["user_name"] = $username;

这根本没有意义,您仅在满足登录条件(成功登录)时才设置会话变量,而在其他任何地方都没有。在其他地方,您只需检查它是否存在/已设置。

由于您尚未发布处理登录的部分,因此很难说是否还有其他错误。

于 2011-01-20T14:11:15.537 回答