每次刷新后,PHP会话都会重置

时间:2014-03-22 15:25:57

标签: php session

我正在尝试创建管理员登录页面。 LOGIN PAGE

登录后一切正常。但是当我尝试进入另一个页面或刷新当前登录页面时,会话将自行重置。

以下是您自己测试的用户:

用户名 - >测试

密码 - >测试

EDIT !!! { 会话在core.inc.php} !!!

中启动

以下是我的core.inc.php代码:

 session_start;
 function admin() {
    if ( isset($_SESSION['id']) && !empty($_SESSION['id']) ){
        return true;
    }
}

这是admin.php :(注意:admin.php包含core.inc.php)     

    if (isset($_POST["username"]) && isset ($_POST["password"])) 
{
    $username = $_POST["username"];
    $password = $_POST["password"];

    $query = "SELECT `id` FROM `admins` WHERE `username`='".mysql_real_escape_string($username)."' AND `password`='".mysql_real_escape_string($password)."'";
    if ($query_run = mysql_query($query))
    {
        $query_num_rows = mysql_num_rows($query_run);

        if ($query_num_rows == 0)
        {
            echo "<br><div style=\"background-color:lightyellow;text-align:center;border-color:darkblue;font-style:italic;width:80%;border-style:dotted;\">Incorrect username or password.</div>";
        }
        else if ($query_num_rows == 1)
        {
            $user_id = mysql_result($query_run, 0, 'id');
            $_SESSION['id'] = $user_id;
        }
    }
}


if ( admin() == true ) {
?>
<center><a href="logout.php"><input type="button" value="Log Out!" ></a></center>
            <? 
}   
else {

?>

            <form action="" method="post">
                <center>
                    <table style="width:300px;text-align:center;line-height:30px;">
                    <th>LOG IN!</th>
                    <tr>
                        <td>&nbsp;<input type="text" name="username" placeholder="Username:" required="">&nbsp;</td>
                    </tr>
                    <tr>
                        <td>&nbsp;<input type="password" name="password" placeholder="Password:" required="">&nbsp;</td>
                    </tr>
                    <tr>
                        <td>&nbsp;<input type="submit" value="Login!">&nbsp;</td>
                    </tr>
                </table>
                </center>
            </form>

            <?
}
            ?>

2 个答案:

答案 0 :(得分:2)

你错过了session_start()必须位于使用会话的任何页面的顶部。它也必须在任何输出之前。

<?php
session_start()
if (isset($_POST["username"]) && isset ($_POST["password"])) 
{
    $username = $_POST["username"];
    $password = $_POST["password"];

答案 1 :(得分:1)

你的session_start不应该是session_start()吗?

session_start();
function admin() {
    if ( isset($_SESSION['id']) && !empty($_SESSION['id']) ){
        return true;
    }
}

您应该enable error reporting在开发环境中进行调试,以查看详细的错误跟踪