Php 会话签入用户页
因此,有很多关于会话的帖子,但是,如果用户注销并试图访问仅限成员的页面,那么在将用户重定向到另一个页面时,这些帖子都不够清晰。我正在寻找一旦注销就无法返回的会话。可以理解的是,这将需要java脚本,相反,我希望禁用将web地址直接复制和粘贴到浏览器中,如果他们这样做了,并且他们没有登录,他们应该重定向到登录页面。这是密码 **所有成员页面均以以下内容开头:Php 会话签入用户页,php,mysql,session,mysqli,Php,Mysql,Session,Mysqli,因此,有很多关于会话的帖子,但是,如果用户注销并试图访问仅限成员的页面,那么在将用户重定向到另一个页面时,这些帖子都不够清晰。我正在寻找一旦注销就无法返回的会话。可以理解的是,这将需要java脚本,相反,我希望禁用将web地址直接复制和粘贴到浏览器中,如果他们这样做了,并且他们没有登录,他们应该重定向到登录页面。这是密码 **所有成员页面均以以下内容开头: if( !isset( $_SESSION ) ){ session_start(); }else{ hea
if( !isset( $_SESSION ) ){
session_start();
}else{
header("Location:login.php");
}
include("connection.php");
**连接页面只是连接到数据库,简单的名称和密码或死亡
**su.php。此页面是登录或注册时启动会话的页面。记录我们的日志实际上会将它们注销,同样的问题是,任何人都可以输入profile.php的地址并将其拉出来
if( !isset( $_SESSION ) ){
session_start();
}
if($_GET["logout"]==1 AND $_SESSION['id']) { session_destroy();
header("Location:logout.php");
}
include("connection.php");
if ($_POST['submit']=="Sign Up") {
if (!$_POST['email']) $error.="<br />Please enter your email";
else if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) $error.="<br />Please enter a valid email address";
if (!$_POST['password']) $error.="<br />Please enter your password";
else {
if (strlen($_POST['password'])<8) $error.="<br />Please enter a password with at least 8 characters";
if (!preg_match('`[A-Z]`', $_POST['password'])) $error.="<br />Please enter at least 1 capital letter";
}
if ($error) $error = "There were error(s) in your signup details:".$error;
else {
$query = "SELECT * FROM `users` WHERE email='".mysqli_real_escape_string($link, $_POST['email'])."'";
$result = mysqli_query($link, $query);
$results = mysqli_num_rows($result);
if ($results) $error = "That email address is already registered";
else {
$query="INSERT INTO `users` (`email`, `password`) VALUES('".mysqli_real_escape_string($link, $_POST['email'])."', '".md5(md5($_POST['email']).$_POST['password'])."')";
mysqli_query($link, $query);
$message = "You've been signed up!";
$_SESSION['id']=mysqli_insert_id($link);
header("Location:registration.php");
}
}
}
if ($_POST['submit']=="Log In") {
$query="SELECT * FROM `users` WHERE email='".mysqli_real_escape_string($link, $_POST['loginemail'])."' AND password='".md5(md5($_POST['loginemail']).$_POST['loginpassword'])."' LIMIT 1";
$result = mysqli_query($link, $query);
$row = mysqli_fetch_array($result);
if ($row) {
$_SESSION['id']=$row['id'];
header("Location:dashboard.php");
} else {
$loginerror = "We could not find a user with that email and password. Please try again.";
}
}
if(!isset($\u会话)){
会话_start();
}
如果($_GET[“logout”]==1和$_SESSION['id']){SESSION_destroy();
标题(“位置:logout.php”);
}
包括(“connection.php”);
如果($_POST['submit']==“注册”){
如果(!$\u POST['email'])$错误=“
请输入您的电子邮件”;
否则如果(!filter_var($_POST['email'],filter_VALIDATE_email))$错误。=“
请输入有效的电子邮件地址”;
如果(!$\u POST['password'])$错误。=“
请输入您的密码”;
否则{
如果(strlen($_POST['password'])
成员页面内容
<?php
}
else
{
header("Location:login.php");
}
?>
说明:
首先,您应该启动会话,然后检查您传递的会话变量是否存在于该成员页面中
或者你可以简单地
<?php
session_start();
if(!isset($_SESSION['id']))
{
header("Location:login.php");
}
?>
在页面顶部在每个页面的开头包含一个会话检查,并相应地重定向。我们通常创建一个包含在每个页面顶部的文件,用于测试某些会话变量。如果没有这些变量,我们将重定向。如果用户可以简单地返回并访问任何缓存页面,则无法在PHP中进行检查在浏览器中。如果要强制执行“注销”状态下,您必须使所有页面的html不可缓存,强制用户浏览器在每次加载页面时获取新副本。使用mysqli
时,您应该使用参数化查询,并将用户数据添加到查询中。不要使用手动转义和字符串连接来完成此操作,因为这样会使这是一个错误,造成了严重的后果。那么代码会是什么样子呢?你应该解释为什么会有帮助。谢谢你问@Felix,但Anthony在最后的评论中只问了代码。Stack overflow是一个问答网站,一个公共网站。你的答案不仅指向原始海报,而且指向互联网用户n也是。因此,不要假设你的答案不需要解释,因为op理解。我将标记缺少上下文的答案,并且这些答案在这里没有得到高度重视。你现在的答案,即使缺少一些格式,可能比最初出现的几行更有用。
<?php
session_start();
if(!isset($_SESSION['id']))
{
header("Location:login.php");
}
?>