如何使用PHP注销我的网站?
我只是花了几个小时建立了一个登录系统,我的网站,我终于登录,但我不能注销 我尝试过使用会话名称,但仍然不起作用/如何使用PHP注销我的网站?,php,html,Php,Html,我只是花了几个小时建立了一个登录系统,我的网站,我终于登录,但我不能注销 我尝试过使用会话名称,但仍然不起作用/ <?php session_start('$_SESSION['userId']'); session_unset('$_SESSION['userId']'); session_destroy('$_SESSION['userId']'); header("Location: ../../index.php?logout=success"); ?> - 这些是我i
<?php
session_start('$_SESSION['userId']');
session_unset('$_SESSION['userId']');
session_destroy('$_SESSION['userId']');
header("Location: ../../index.php?logout=success");
?>
-
这些是我index.php头上的登录/注销超链接,当我注销时,上面说登录正在显示,然后我登录,现在它在注销时卡住了/
<li class="nav-item">
<?php
if (isset($_SESSION['userId'])) {
echo '<a class="nav-link" href="login/login.php">Log In</a>';
} else {
echo ' <a class="nav-link" href="login/logout.php">Log Out</a>';}
?>
</li>
这是超链接引用的注销页面/
<form action="includes/logout.php" method="post">
<span>
Are you sure you want to logout?
</span>
<div>
<button>
Log out
</button>
</div>
</form>
您确定要注销吗?
注销
这是includes/logout.php,当它执行时,它会将我从注销页面带回index.php,并在url中返回“index.php?logout=success”,但标题仍然表示注销而不是登录/
<?php
session_start();
session_unset();
session_destroy();
header("Location: ../../index.php?logout=success");
?>
基本上,除了实际停止的会话之外,其他一切都在工作。任何帮助都将不胜感激
编辑:我刚刚将所有文件上传到一个测试站点,我在浏览器、匿名选项卡和手机上打开了该站点,它们都会自动显示“登录”按钮,所以我猜问题在于此
<li class="nav-item">
<?php
if (isset($_SESSION['userId'])) {
echo '<a class="nav-link" href="login/login.php">Log In</a>';
} else {
echo ' <a class="nav-link" href="login/logout.php">Log Out</a>';}
?>
</li>
请记住,$\u会话在重定向后可用,直到刷新页面。
这意味着,如果您注销并被重定向,$\u会话['userId']仍然可用,直到您再次刷新页面。这就是为什么你仍然可以看到这一点。
您正在发送GET参数-使用它而不是页面上的$\u会话['userId']:
if( isset($_GET['logout']) && $_GET['logout'] == 'success') {
// display link to log in
} else {
// display link to log out
}
一般来说,这些代码示例看起来有点混乱,我不认为您正确设置了登录功能
将会话_start()放在标题的顶部,或者在确实需要时调用它,通常只需启动一次
除此之外,不要使用表格注销-使用
这会更好。如果注销后不需要任何会话变量,下面三行代码可以正常工作。请检查此代码
session_start();
session_destroy();
header("Location: ../../index.php?logout=success");
在您的login.php中
<?php
if(isset($_GET['logout']))
{
unset($_SESSION['user_id']);
//use this if you only want the user_id session to be unset.
}
?>
session\u start
的第一个(也是唯一一个)参数
会话\u取消设置
这些不符合您的想法,这可能是您的问题的根本原因。请检查下面的URL
session_start('$_SESSION['userId']');
session_unset('$_SESSION['userId']');
session_destroy('$_SESSION['userId']');