[英]Sessions in PHP not blocking users
我正在创建一个具有登录名的网站,并使用会话来防止用户访问特定页面(除非已登录)。我有一个会话检查器(位于底部),并且没有看到会话,因此我认为我已经正确注册了,但是我已经检查了几次网络,它说我的操作方式是$ _SESSION ['myusername'] = $ myusername;。 是较新的方式,但我认为这是我的问题。 非常感谢您抽出宝贵时间为我提供帮助。
登录脚本:
<table width="200" border="0" align="center" cellpadding="0" cellspacing="1">
<tr>
<form name="form1" method="post" action="checklogin.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input name="myusername" type="text" id="myusername"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input name="mypassword" input type="password" id="mypassword"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="Login"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
检查登录过程:
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$encrypted_mypassword=md5($mypassword);
$sql="SELECT * FROM users WHERE username='$myusername' and password='$encrypted_mypassword'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1){
$_SESSION['myusername'] = $myusername;
header("location: control.php");
}
else {
header("location: failed.php");
}
?>
除非登录,否则我添加到不允许访问的页面的会话横幅:
<?php
session_start();
if( isset($_SESSION['myusername']) ){
header("Location: login.php");
}
?>
最后是我的注销脚本:
<?php
session_start();
$_SESSION = array();
session_unset();
session_destroy();
header("Location:login.php");
exit();
?>
任何帮助将不胜感激。 对于许多信息,我很抱歉,只是想确保我列出了所有信息。 我不确定自己在做什么错。 我有另一个脚本正在使用,以查看会话是否正在运行,甚至在那里都看不到会话。
<?php
$sid = session_id();
if($sid) {
echo "Session exists!";
} else {
session_start();
}
?>
在与会话或$ _SESSION变量有任何关系的每个页面上都需要session_start(),因此请将其添加到“检查登录过程”中。
和这个:
if( isset($_SESSION['myusername']) ){
header("Location: login.php");
应该不是! :
if( !isset($_SESSION['myusername']) ){
header("Location: login.php");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.