简体   繁体   English

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

[英]PHP login running every time page loads

Pages involved are: 涉及的页面有:

  1. login.php (login forms) login.php(登录表单)
  2. admin.php (dashboard) admin.php(仪表板)
  3. post_ad.php (some random page) post_ad.php(一些随机页面)

My login pages works fine, then after login comes dashboard, which also works fine! 我的登录页面运行正常,然后登录后进入仪表板,它也运行正常!

Problem comes when I go back to admin.php from post_ad.php, using a hyperlink, I redirect to login page! 问题出在我使用超链接从post_ad.php返回admin.php时,我重定向到登录页面! The code actually fails to understand that I have actually logined before correctly! 该代码实际上无法理解我之前是否已经正确登录! Please help to out to rectify my problem! 请帮忙解决我的问题!

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>

I want the code to remember, untill I logout or close the windows, that I have logined once! 我希望代码记住一次,直到我注销或关闭窗口后才登录一次!

First of all in any page use session_start() at the top of the page not somewhere in middle of code. 首先,在任何页面中,请在页面顶部而不是代码中间使用session_start()。 in login.php File put user id in $_SESSION if user logged in successfully for example 例如,如果用户成功登录,则在login.php文件中将用户ID放入$ _SESSION

$_SESSION['user_id'] = $user_id

Say $user_id stores username in your code 说$ user_id在您的代码中存储用户名

and at the top of login page use this code 在登录页面的顶部使用此代码

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

This will redirect you to admin page if user is logged in and in other pages you could use 如果用户已登录,这会将您重定向到管理页面,而您可以使用其他页面

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

This will redirect you to login page if user is not logged in 如果用户未登录,这会将您重定向到登录页面

You are checking posted variables from login page every time. 您每次都在登录页面检查发布的变量。

Which are not set when navigated from page other than login. 从登录页面以外的页面导航时未设置。

Store the values in sessions instead (on login page action). 而是将值存储在会话中(在登录页面操作中)。

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

And now check these values. 现在检查这些值。

Also, don't forget to include session_start() in the beginning of the page. 另外,不要忘记在页面的开头包含session_start()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM