登录cookie未在页面刷新时保存

时间:2013-12-06 21:52:36

标签: php html cookies login login-script

我有一个非常简单的登录脚本。

<?php
    $username = "######";
    $password = "######";
    $hostname = "######";

    $dbhandle = mysql_connect($hostname, $username, $password) or die("Could not connect to database");

    $selected = mysql_select_db("logindashboard", $dbhandle);

    $myusername = $_POST['user'];
    $mypassword = $_POST['pass'];

    $myusername = stripslashes($myusername);
    $mypassword = stripslashes($mypassword);

    $query = "SELECT * FROM logindashboard.login WHERE user='$myusername' and pass='$mypassword'";
    $result = mysql_query($query);
    $count = mysql_num_rows($result);

    mysql_close();

    if($count==1){
        $seconds = 5 + time();
        setcookie(loggedin, date("F jS - g:i a"), $seconds);
        header("location:index2.php");
    }else{
        echo 'Incorrect Username or Password';
    }
?>

当用户登录并被带到我的主页时。他们登录,但页面设置为使用元刷新后45秒刷新。

<META HTTP-EQUIV="REFRESH"CONTENT="45;URL=index2.php">

唯一的问题是,45秒后它们似乎被带回登录界面,而不是它们已经在的页面。

这是我在页面顶部的index2.php文件中使用的内容。

<?php require_once('../../../.config2.php'); 
if(!isset($_COOKIE['loggedin'])){
        header("location:index.php");
    }
?>  

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:-1)

首先,您的问题是您没有将loggedin包裹在撇号中。该行应如下所示,以正确设置登录cookie

setcookie('loggedin', date("F jS - g:i a"), $seconds);

现在你的脚本逻辑。不要使用cookie来检查用户是否被标记为loggedin。我不知道任何用户/密码组合,并且可以通过手动设置名为loggedIn的cookie来绕过您的脚本。

尝试使用sessions检查用户是否已登录。 session数据存储在服务器端,无法由客户端手动编辑。

像这样

// here connect to you db mysql_connect(...
// mysql_select_db(...

$user = mysql_real_escape_string( $_POST['user'] );
$pass = mysql_real_escape_string( $_POST['pass'] );

//query if user and pw is valid
$result = mysql_query("SELECT * FROM logindashboard.login WHERE user='".$user."' and pass='".$pass."'");    

if( mysql_num_rows($result) == 1 ) {

    $_SESSION['loggedIn'] = true;
    header('Location: index2.php');
}

您的index2.php看起来像这样

<?php
session_start();
if( ! $_SESSION['loggedIn'] ) {
    // not logged in redirect direct to login page
    header('Location: loginPage.php');
}

这比使用cookie更安全。如您所见,您不需要元标记来重定向用户。使用php header函数直接重定向用户

相关问题