每次加载页面时都会运行PHP登录

时间:2015-09-24 12:19:17

标签: php html login

涉及的页面是:

  1. login.php(登录表单)
  2. admin.php(仪表板)
  3. post_ad.php(一些随机页面)
  4. 我的登录页面工作正常,然后登录后来到仪表板,这也很好!

    当我从post_ad.php返回admin.php时出现问题,使用超链接,我重定向到登录页面! 代码实际上无法理解我之前已经正确登录过! 请帮忙解决我的问题!

    admin.php的

        include 'connection.php';
        $user = $_POST['user'];
        $pass = $_POST['pass'];
    
        if($user != 'zxc' && $pass != 'zxc')
        {
            header('Location: login.php');      
        }
        session_start();
        ?>
    
        <a href="post_ad.php">POST A NEW ADVERTISE</a>
    

    我希望代码能够记住,直到我退出或关闭窗口,我已经登录过一次!

2 个答案:

答案 0 :(得分:4)

首先,在任何页面中,使用页面顶部的session_start()而不是代码中间的某个地方。 在login.php文件中,如果用户成功登录,则将用户ID放在$ _SESSION中 例如

$_SESSION['user_id'] = $user_id

假设$ user_id在您的代码中存储用户名

并在登录页面的顶部使用此代码

@session_start();
if(isset($_SESSION['user_id']) && $_SESSION['user_id']!='') {
    header("location: admin.php");
}

如果用户已登录,则会将您重定向到管理员页面 在其他页面中,您可以使用

@session_start();
if(!isset($_SESSION['user_id']) || $_SESSION['user_id']=='') {
    header("location: login.php");
}

如果用户未登录,则会将您重定向到登录页面

答案 1 :(得分:2)

您每次都会从登录页面检查发布的变量。

从登录以外的页面导航时未设置。

将值存储在会话中(在登录页面操作上)。

$user = $_SESSION['user'];
$pass = $_SESSION['pass'];

现在检查这些值。

另外,请勿忘记在页面开头添加session_start()