我已经在 PHP 中启动并运行了一个会话,但由于某种原因,当我有时单击页面时,会话似乎意外结束。例如:我有一个简单的用户登录页面(只是用户名):指数。.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>
主要。.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" />
篮子。.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>
所以说我输入我的用户名,它会把我带到主目录。PHP很好,显示我的用户名很好,然后我点击购物篮页面,它也显示我的用户名很好,但是当我从篮子点击时。PHP到主。PHP它丢失了用户名,什么也不显示。
我不知道发生了什么,任何帮助将不胜感激,谢谢。
但是当我从篮子中点击时。PHP到主。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');
}
}
刚刚在 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');
}