Сессия PHP неожиданно заканчивается

0

У меня есть сеанс и работает в PHP, но по какой-то причине, когда я иногда нажимаю на страницу, сеанс кажется неожиданным. ПРИМЕР: У меня есть простая страница входа пользователя (только имя пользователя): INDEX.PHP

<h1>User Sign-In:</h1>

<form name="login" action="main.php" method="post">
    Username: <input type="text" name="username">
    <input type="submit" value="Submit">
</form>

main.php

<?php
session_save_path(trim('echo ~').'/php_sessions'); session_start();
$_SESSION['username']= $_POST["username"];
$username = $_SESSION['username'];

if(isset($_SESSION['username']))
    {
    }
else
    header('Location:./index.php');
?>

<body>

<?php
    echo "Hello, your username is: " . $_SESSION["username"];
?>
<a href="./main.php">Store</a> | <a href="./basket.php">Basket</a> | <a href="./about.php">About</a> | <a href="./logout.php">Logout</a>


<form name="select1"action="" method="GET">
<select name="higherorlower">
    <option value="All">All</option>
    <option value="greaterthan">Greater Than</option>
    <option value="lowerthan">Lower Than</option>
</select>
Price:<input type="text" name="price"/>
<input type="submit" name="submit" value="Submit" />

BASKET.PHP

<?php
session_save_path(trim('echo ~').'/php_sessions'); session_start();
$username = $_SESSION['username'];

if(isset($_SESSION['username']))
    {
    }
else
    header('Location:.');
?>

<body>
<?php
    echo "Hello, your username is: " . $_SESSION["username"];
?>


<a href="./main.php">Store</a> | <a href="#">Basket</a> | <a href="./about.php">About</a> | <a href="./logout.php">Logout</a>

<h2>
You're currently on the basket page!
</h2>

Поэтому скажу, что я ввожу свое имя пользователя, и он отлично подходит к MAIN.PHP и отображает мое имя пользователя в порядке, затем я нажимаю на странице корзины, и он также отображает мое имя пользователя в порядке, но когда я нажимаю на BASKET.PHP на MAIN. PHP это теряет имя пользователя и ничего не отображает....

Я понятия не имею, что происходит, и любая помощь будет очень признательна, спасибо.

Теги:
session
web

2 ответа

1
Лучший ответ

но когда я нажимаю на BASKET.PHP на MAIN.PHP, он теряет имя пользователя и ничего не отображает....

Это потому, что вы назначаете

$_SESSION['username']= $_POST["username"]; 

на вашем main.php, так как там нет значения POST (на данный момент), он перезаписывается.

Измените свой код в файле main.php следующим образом:

if(!isset($_SESSION['username']))
{
    if(isset($_POST["username"]))
    {
    $_SESSION['username']= $_POST["username"];
    $username = $_SESSION['username'];
    }
    else
    {
        header('Location:./index.php');
    }

}
  • 0
    Хорошо, я изменил код в MAIN.php на то, что вы сказали, но когда я нажимаю кнопку «Сохранить» на моей панели навигации со страницы BASKET.PHP, он все равно возвращает меня к index.php (странице входа в систему). Я действительно сбит с толку?
  • 0
    Можете ли вы проверить новый отредактированный код?
Показать ещё 1 комментарий
0

Просто изменил код на MAIN.php. Теперь это должно сработать.

 session_start();

 session_save_path(trim('echo ~').'/php_sessions');    

if(!empty($_POST["username"])){
   $_SESSION['username']= $_POST["username"];
   $username = $_POST["username"]; 
}

if(!isset($_SESSION['username'])){
 header('location: index.php');
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню