PHP-会话一半在选项卡关闭并重新打开时登录
在我的网站上,我有一个导航栏,它根据用户是否登录而变化(如果%_会话[“用户名”]存在,则会添加一个注销按钮)。这很好,在用户登录时会出现(当用户登录时,他们会被重新定向到索引页,该页上有注销按钮)。如果我打开另一个选项卡,我刚到家就登录了。当我按下登录按钮时,注销按钮突然出现。如何获得它以使“注销”按钮出现,就像用户在打开另一个选项卡或关闭/打开选项卡时登录一样 我通过回显$u会话[“username”]进行了测试。当登录时,当打开一个新的选项卡时,由于此变量不存在,因此会出现此错误。一旦我按下登录按钮,用户就会立即登录,然后它会回显用户名 由于会话已被破坏,当浏览器完全关闭时不会发生这种情况,但当打开此网站的多个选项卡时,此错误会令人讨厌,并且在用户登录时不会显示用户正在登录 我该如何解决这个问题 代码: 索引:PHP-会话一半在选项卡关闭并重新打开时登录,php,session,Php,Session,在我的网站上,我有一个导航栏,它根据用户是否登录而变化(如果%_会话[“用户名”]存在,则会添加一个注销按钮)。这很好,在用户登录时会出现(当用户登录时,他们会被重新定向到索引页,该页上有注销按钮)。如果我打开另一个选项卡,我刚到家就登录了。当我按下登录按钮时,注销按钮突然出现。如何获得它以使“注销”按钮出现,就像用户在打开另一个选项卡或关闭/打开选项卡时登录一样 我通过回显$u会话[“username”]进行了测试。当登录时,当打开一个新的选项卡时,由于此变量不存在,因此会出现此错误。一旦我按
session_start();
include("dbseinfo.php"); //Has info for connection to dbse
echo '<div id="hmenu">';
echo '<ul>';
echo '<li><a href="index.php">Home</a></li>';
if(isset($_SESSION["username"])){
echo '<li><a href="http://www.reddax.co.uk/logout.php">Logout</a></li>';
$username=$_SESSION["username"];
登录进程
session_start();
if(isset($_SESSION["username"])){
header( "Location: index.php" );
}
include("dbse.inc.php");
$username=$_POST["username"];
$password=$_POST["password"];
(Query to call username from databse)
if($row = $stmt->fetch(PDO::FETCH_OBJ))
{
if(password & username is correct)
{
$_SESSION["username"]=$username;
header('Refresh: 2; URL=index.php');
您应该提供一些代码,理想情况下是一个可以复制这种行为的简明示例。这种情况会发生在不同的浏览器上吗?这有点困难,因为我的数据库中绑定了登录系统。它确实出现在不同的浏览器中——Chrome、firefox、edge。好吧,从我的角度来看,你没有给用户分配相同的会话。您是否确保在不同选项卡上具有相同的会话ID?添加了代码。我有很多包含私有数据的include文件,所以我试着把核心代码放在一起。希望这有帮助?给出错误的
回声在哪里?您是否忘记在该页面上调用session\u start()
?您应该提供一些代码,最好是一个可以重现这种行为的简明示例。这种情况会发生在不同的浏览器上吗?这有点困难,因为我的数据库中绑定了登录系统。它确实出现在不同的浏览器中——Chrome、firefox、edge。好吧,从我的角度来看,你没有给用户分配相同的会话。您是否确保在不同选项卡上具有相同的会话ID?添加了代码。我有很多包含私有数据的include文件,所以我试着把核心代码放在一起。希望这有帮助?给出错误的回声在哪里?您是否忘记在该页面上调用会话\u start()
?
session_start();
if(isset($_SESSION["username"])){
header( "Location: index.php" );
}
include("dbse.inc.php");
$username=$_POST["username"];
$password=$_POST["password"];
(Query to call username from databse)
if($row = $stmt->fetch(PDO::FETCH_OBJ))
{
if(password & username is correct)
{
$_SESSION["username"]=$username;
header('Refresh: 2; URL=index.php');