Переадресация сессий - PullRequest
       17

Переадресация сессий

0 голосов
/ 20 января 2011

Я пытаюсь защитить страницу, сделав ее защищенной паролем. Я использую код ниже, но он не работает.

home.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 ]

3 голосов
/ 20 января 2011

Попробуйте это

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 и перенаправить на домашнюю страницу

2 голосов
/ 20 января 2011

Просто предположение, так как вы на самом деле не задали вопрос полностью.Но попробуйте заменить:

$username = $_SESSION["user_name"];

на

$username = $_POST["user_name"];
1 голос
/ 20 января 2011

В ваших login.php и home.php вы используете:

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

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

Это не имеет смысла, вы устанавливаете переменную сеанса только тогда, когда ваши критерии входа в систему выполнены (успешный вход в систему) и больше нигде. В других местах вы просто проверяете, существует ли он / установлен.

Поскольку вы не разместили часть, где обрабатывается логин, трудно сказать, есть ли другие ошибки.

1 голос
/ 20 января 2011

Кажется, что вы копируете пустое имя пользователя, а затем меняете значение пустого $ 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();
}

Обновлено: удалена строка комментария

...