php-如何检查用户注销后何时返回?
我想用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
$\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.
}