php-如何检查用户注销后何时返回?

php-如何检查用户注销后何时返回?,php,session,login,isset,login-control,Php,Session,Login,Isset,Login Control,我想用php创建一个登录和注销页面。 到目前为止,我编写了所有的代码,但我不知道如何检查变量$\u SESSION['login']是否已设置。我试着使用isset()unset()session_destroy()。。。但还是没有解决。 我想这样做,因为如果用户从浏览器中按下后退按钮,我想重定向到一个页面。;)我喜欢像谷歌和其他大型专业网站一样 我将代码从:,并对其进行了修改 session.php <?php session_start(); $user_ch

我想用php创建一个登录和注销页面。 到目前为止,我编写了所有的代码,但我不知道如何检查变量
$\u SESSION['login']
是否已设置。我试着使用
isset()
unset()
session_destroy()。。。但还是没有解决。
我想这样做,因为如果用户从浏览器中按下后退按钮,我想重定向到一个页面。;)我喜欢像谷歌和其他大型专业网站一样

我将代码从:,并对其进行了修改

session.php

    <?php
    session_start(); 
    $user_check = '';

        // I will not give you my passwords so easly :P
    define('DB_USER', ' ');
    define('DB_PSWD', ' ');
    define('DB_HOST', ' ');
    define('DB_NAME', ' ');

    $connection = mysqli_connect(DB_HOST,DB_USER,DB_PSWD,DB_NAME) or die(mysql_error());

    $user_check = $_SESSION['loginUser'];


    $ses_sql = mysqli_query($connection,"SELECT Name FROM Passwords WHERE Name='$user_check'");
    $row = mysqli_fetch_assoc($ses_sql);
    $login = $row['Name'];


    if(!isset($login)){
        mysql_close($connection);
        header("location : ../Resource.php"); // redirect
    }

?>
isset()
将适用于会话。如果你写:

if(isset($_SESSION['loginUser'])) {
    // Your code
}
那就行了。您也可以使用
empty()
而不是
isset()
来检查会话是否为空,但通常检查会话设置是否足以执行验证

我遇到的服务器在处理页面之前不会设置会话,您需要将用户重定向到下一个页面,然后会话将显示为有效。这在饼干中也很常见

您还将检查是否返回了任何内容,如果未设置
$login
,则将进行重定向,但您总是设置它,因此重定向将永远不会运行

这里有一个更好的解决方案(使用您当前的代码;排除其他人提到的SQL注入问题,这是一个不同的主题)


现在变量少了,使用MySQLi提供的指定数据,行数少了,在找到结果时数据库需要做的搜索也少了,并且出现了匹配/不匹配的场景

如果它们已经耗尽,您将不会有“$\u会话['loginUser']”可以吗?此解决方案容易受到SQL注入的攻击。无论如何,您可以使用empty()检查它;是的@rtfm。你是对的!这就是我把它放在更新1中的原因you@miclen,如果我在登录页面加密密码,它仍然容易受到攻击?我检查为空,但没有任何工作…:(谢谢Kalob!:)它仍然不起作用,但我想这是服务器的问题。我举你的例子,做一个类似于你的验证,还有一个问题:什么是
$ses\u sql->num\u rows
的意思?它获取行数,并将其放入变量num_rows中,对吗D
$ses\u sql->num\u rows
返回在MySQLi查询中找到的行数。您做了一个限制1,那么
num\u行
将只会是1或0。
if(isset($_SESSION['loginUser'])) {
    // Your code
}
// Limit your query to one result to MySQL will stop searching once it's found a match. 
$ses_sql = mysqli_query($connection, "SELECT Name FROM Passwords WHERE Name='$user_check' LIMIT 1");

if($ses_sql->num_rows == 1) {
    // A row was found, do something.
} else {
    // No rows were found, do something else.
}