我已经在我的登录系统中设置了会话,但这一切都有效,但并不像我期望的那样。因此,通过我手动更改URL并查看home.php,例如用户可以在不登录的情况下进入,但只要他们单击链接就会将其引导出去。我想知道是否有一种方法可以自动将它们返回到索引文件,如果他们没有立即登录。这是我的代码:
<?
session_start();
session_regenerate_id();
if($_SESSION['user']==''){
header("Location:index.php");
}
else{
include ('../../db_con.php');
$sql=$db->prepare("SELECT * FROM user_login WHERE id=?");
}
?>
此文件包含在我的管理面板的标题中。当我在网站上点击正在创建会话时,我可以看到。
这是我的登录代码:
<?
session_start();
if($_SESSION['user']!='')
{header("Location:home.php");}
$dbh=new PDO('mysql:dbname=dashboardr;host=localhost', '******', '******');
$email=$_POST['username'];
$password=$_POST['pass'];
if(isset($_POST) && $email!='' && $password!=''){
$sql=$dbh->prepare("SELECT id,password,psalt FROM user_login WHERE username=?");
$sql->execute(array($email));
while($r=$sql->fetch()){
$p=$r['password'];
$p_salt=$r['psalt'];
$id=$r['id'];
}
$site_salt="subinsblogsalt";
$salted_hash = hash('sha256',$password.$site_salt.$p_salt);
if($p==$salted_hash){
$_SESSION['user']=$id;
header("Location:home.php");
}else{
echo "<h2>Username/Password is Incorrect.</h2>";
}
}
?>
答案 0 :(得分:3)
好吧,我们需要查看登录代码的样子,看看有哪些会话变量可用,但是盲目地猜测,你可能想要这样做:
if(!isset($_SESSION['user'])){
header("Location:index.php");
exit;
}
(记得在调用header()后退出)
如果这不起作用,请发布您的登录代码。