Php 如何通过结束会话从站点注销

Php 如何通过结束会话从站点注销,php,mysql,sql,session,Php,Mysql,Sql,Session,我在注销网站时遇到问题。但是,到目前为止,我已经登录了logout.php并包含session_destroy();它似乎不起作用 这是我每一页的代码 Index.php: <?php include ("login.php"); ?> login.php <?php session_start(); $_SESSION['loggedin']['user']=$_POST['user']; if(isset($_SESSION['loggedin'])){

我在注销网站时遇到问题。但是,到目前为止,我已经登录了logout.php并包含session_destroy();它似乎不起作用

这是我每一页的代码

Index.php:

<?php include ("login.php"); ?>

login.php

   <?php
session_start();
$_SESSION['loggedin']['user']=$_POST['user'];
if(isset($_SESSION['loggedin'])){
    echo '<h2>Logged in</h2><p style="font-size:14px;">Welcome '.$_SESSION["user"].' you have sucessfully logged in.</p>';
}
else {
     echo '
       <h2>Login</h2>
       <form action="auth.php" method="POST">
       <div class="smallform">
                <p><span>Username:</span><br>
                <input type="text" name="user"></p>
                <p><span>Password:</span><br>
                <input type="password" name="pass"></p>
                <p style="padding-top: 15px"><input type="submit" value="Submit"></p>
        </div>
        </form>';
}
?>

Auth.php:

   <?php
session_start();
$con = mysqli_connect("HOST", "USER", "PASS", "DBNAME");
$user = $_POST["user"];
$pass = $_POST["pass"];
$sql = "SELECT UserID FROM Customer 
        WHERE UserID = \"$user\"
        AND Password = md5(\"$pass\")";

$res = mysqli_query($con, $sql);
?>
<!DOCTYPE>
<html>

<head>
<title>VeloCity</title>
<link href="_stylesheet.css" rel="stylesheet" type="text/css" />
<?php echo '<meta http-equiv="refresh" content="1;URL=index.php" />'; ?>
</head>

<body>
<div align="center">
<?php 
if(mysqli_num_rows($res)==1){
    $_SESSION["user"] = $user;
    $_SESSION["loggedin"] = True;
    echo "You have sucessfully logged in";
}
else{
    echo "You have entered an incorrect password. Please try again";
}
?>
</div>
</body>
</html>

速度
Logout.php

<?php
session_start();
session_destroy();
?>

要在login.php中添加的另一件事是,我有一个if语句,它是:

if(isset($_SESSION['loggedin'])){
    echo '<h2>Logged in</h2><p style="font-size:14px;">Welcome '.$_SESSION["user"].' you have successfully logged in.</p>';
}
if(isset($\u会话['loggedin'])){
echo“已登录欢迎”。$\u会话[“用户]。”您已成功登录。

; }
问题是,正如你所看到的,它应该显示欢迎“用户名”,最初是这样,但现在不是,它只是显示欢迎你成功登录

我想提前感谢大家的帮助。谢谢你

注意几点:
  • 您的输入未经过消毒
  • 尽量不要使用
    mysql.*
    函数,因为它们已被弃用。改用
    PDO
    mysqli.*
  • logout.php
    中使用此代码:
    
    
    一些注意事项:
  • 您的输入未经过消毒
  • 尽量不要使用
    mysql.*
    函数,因为它们已被弃用。改用
    PDO
    mysqli.*
  • logout.php
    中使用此代码:
    问题在于,在登录页面上,您正在定义会话['loggedin']:

    $_SESSION['loggedin']['user']=$_POST['user'];
    
    删除该选项,否则,您的:

    if(isset($_SESSION['loggedin']))
    

    将始终计算为
    true
    ,并显示欢迎消息,即使用户未登录。

    问题在于,在登录页面上定义的是
    $\u会话['loggedin']

    $_SESSION['loggedin']['user']=$_POST['user'];
    
    删除该选项,否则,您的:

    if(isset($_SESSION['loggedin']))
    

    将始终计算为
    true
    并显示欢迎消息,即使用户未登录。

    尝试仅
    取消设置($\u会话['loggedin');取消设置($_会话[“用户])。而不是销毁,并且您的代码有SQL注入漏洞。使用PDO和prepared语句执行查询,并尝试取消设置($_SESSION['loggedin']);取消设置($_会话[“用户])。而不是销毁,并且您的代码有SQL注入漏洞。使用PDO和准备好的语句执行查询Hi,感谢您的注释。我仍然是PHP的初学者,所以不知道什么是PDO,但我会研究它。我不介意一些指点,尽管我和莫在同一条船上。看看这篇文章,让我们开始好:嗨,谢谢你的笔记。我仍然是PHP的初学者,所以不知道什么是PDO,但我会研究它。我不介意一些指点,尽管我和莫在同一条船上。看看这篇文章,让我们开始好:嗨,谢谢你的回答。您是对的,因为上面提到的代码,它一直显示消息。@Moe没问题。你为什么接受另一个答案?这个答案解决了问题,就像你自己说的。我只能接受一个答案,他们都帮了我。如果没有你的回答,我的问题就无法解决,如果没有他的回答,问题也无法解决。我只是有点困惑,我今天刚注册,不知道它是如何运作的。顺便说一句,你的回答并没有真正解决我的问题。附言:你有更高的声誉,一个答案真的这么重要吗?@PraveenKumar你的答案并不能解决问题,它与课程无关。是的,关于输入清理和不推荐的mysql,您是正确的,但这与所问的问题无关——您的答案可能是一条评论。Moe您可以自由选择接受哪一个答案,但请记住,您应该接受解决问题的答案,以方便其他有相同问题的访问者。您好,谢谢您的回答。您是对的,因为上面提到的代码,它一直显示消息。@Moe没问题。你为什么接受另一个答案?这个答案解决了问题,就像你自己说的。我只能接受一个答案,他们都帮了我。如果没有你的回答,我的问题就无法解决,如果没有他的回答,问题也无法解决。我只是有点困惑,我今天刚注册,不知道它是如何运作的。顺便说一句,你的回答并没有真正解决我的问题。附言:你有更高的声誉,一个答案真的这么重要吗?@PraveenKumar你的答案并不能解决问题,它与课程无关。是的,关于输入清理和不推荐的mysql,您是正确的,但这与所问的问题无关——您的答案可能是一条评论。Moe您可以自由选择接受哪一个答案,但请记住,您应该接受解决问题的答案,以方便其他有相同问题的访问者。