在登录后没有进行重定向

问题描述 投票:-1回答:2

我是新来的PHP和我面对这个问题,我试图解决这个问题,但无法请需要你的帮助。我想使用户第一次登录,然后访问其他网页,他们不应该直接访问其他网页。当我添加的代码是不是让用户访问其他页面,不登录重定向用户登录,但它不是在传统的方式工作,当我把登录信息像它带回登录页面..对不起打扰这里是代码

 <?php
// Start of Login Alert Code
if (!isset($_SESSION['user'])) {
    $_SESSION['msg'] = "You must log in first";
    header('location: login.php');
  }

  if (isset($_GET['logout'])) {
    session_destroy();
    unset($_SESSION['user']);
    header("location: login.php");
  }
  ?>

这里是login.php中的代码

<?php

if(isset($_POST['Login']))
{
    $user = $_POST['uid'];
    $pwd = $_POST['pass'];
    $query = "SELECT * FROM users WHERE userid='$user' && password='$pwd'";
    $data= mysqli_query($con,$query);
    $total = mysqli_num_rows($data);
if($total==1)
{

 $_SESSION ['user_id']= $user;
    header('location:home.php');


   }

else {
    header('location:error.php');

}

}
?>
php mysql
2个回答
1
投票

您正在使用两种不同的会话变量

 isset($_SESSION['user'])

VS

 $_SESSION ['user_id']= $user;

一对夫妇更多的事情需要注意的:你的SQL字符串有完善的SQL注入,你应该哈希存储在数据库中的密码(检查PHP函数password_hash)。


0
投票

尝试使用此代码:

error_reporting(E_ALL);
ini_set('display_errors', 1);

session_start();

if ( !isset($_SESSION['user_id']))
{
    $_SESSION['msg'] = "You must log in first";
    header('location: login.php');
}

if (isset($_GET['logout']))
{
    unset($_SESSION['user_id']);
    session_destroy();
    header("location: login.php");
}

对于的login.php

error_reporting(E_ALL);
ini_set('display_errors', 1);

session_start();

if(isset($_POST['Login']))
{
    $user = $_POST['uid'];
    $pwd = $_POST['pass'];
    $query = "SELECT * FROM users WHERE userid='$user' && password='$pwd'";
    $data= mysqli_query($con,$query);
    $total = mysqli_num_rows($data);

    if($total==1)
    {

        $_SESSION ['user_id']= $user;
        header('location:home.php');
    }
}
else 
{
    header('location:error.php');
}
© www.soinside.com 2019 - 2024. All rights reserved.