会话

时间:2015-04-30 14:25:07

标签: php session

我已经在我的登录系统中设置了会话,但这一切都有效,但并不像我期望的那样。因此,通过我手动更改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>";
        }
    }
?>

1 个答案:

答案 0 :(得分:3)

好吧,我们需要查看登录代码的样子,看看有哪些会话变量可用,但是盲目地猜测,你可能想要这样做:

if(!isset($_SESSION['user'])){
    header("Location:index.php");
    exit;
}

(记得在调用header()后退出)

如果这不起作用,请发布您的登录代码。