登录后未重定向

时间:2019-02-05 19:35:54

标签: php mysql

我是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');

}

}
?>

2 个答案:

答案 0 :(得分:1)

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

ID, Name
==============
1, 'Name1'
1, 'Name1'
1, 'Name1'
2, 'Name2'
2, 'Name2'

vs

 isset($_SESSION['user'])

还有两点需要注意:您的SQL字符串非常适合SQL注入,您应该对存储在数据库中的密码进行哈希处理(请检查php函数password_hash)。

答案 1 :(得分: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');
}