我正在核心php中做一个小应用程序。我的登录数据库是这样的
id
firstname
lastname
email
userid
account_type
contactno
password
在登录文件中代码是这样的
<?php
include_once("include/connection.php");
session_start();
session_unset();
?>
<?php
$msg="";
if(isset($_REQUEST['sub'])){
$pswd=sha1($_REQUEST['psd']);
$sel=mysql_query("select * from login where userid='".$_REQUEST['uid']."' and password='".$pswd."'");
$rowsel=mysql_num_rows($sel);
if($rowsel==1){
$selacc=mysql_fetch_array($sel);
if($selacc['status']!='banned'){
$_SESSION['uid']=$selacc['userid'];
$_SESSION['uname']=$selacc['fname']." ".$selacc['lname'];
$_SESSION['upassword']=$selacc['password'];
$_SESSION['acctype']=$selacc['acctype'];
$_SESSION['agentcode']=$selacc['agent_code'];
$_SESSION['authentication']="authenticated";
header("location:dashboard.php");
}
}
else{
$msg="Enter Valid Username Password";
}
}
?>
<body>
<form name="login-form" method="post" action="#">
<input type="text" name="uid" class="inputbox" />
<input type="password" name="psd" class="inputbox" />
<input type="submit" name="sub" value="" class="inputbotton" />
</form>
现在登录后,用户被定向为dashboard
。但是从这里我直接输入``一个页面名称(比如说posts.php),它被重定向到post.php文件。但是在这里我想要一个被拒绝的访问权限,当有人直接在URL中输入页面名称(如post.php)时,它应该显示一些错误。但是当页面正常重定向时,它应该显示页面。我想阻止地址栏中的直接页面访问,但是当页面正常重定向时,它应该显示页面。
答案 0 :(得分:2)
只需检查上一页中设置的任何会话变量,例如
if(!isset($_SESSION['uid'])){
echo 'error';
exit;
}
在顶部
进行答案 1 :(得分:0)
其中有两个因素。
1)您在服务器上的文件夹和文件权限。
2)第一次登录时,应显示登录页面。但是,当你再次做同样的事情。变量存储在会话中,直到您关闭浏览器。因此,关闭浏览器并再试一次。您需要检查会话ID是否已设置,并根据该决定。