Php会话重定向到登录

时间:2018-05-26 03:12:02

标签: php

新手到php,还在学习如何散列和验证密码。 但在我到达那里之前,我需要帮助解决我的代码出错的问题。 我可以注册,它将值保存到我的数据库。  但是在进入我的home.php或任何其他使用

的页面时
<?php 
  session_start(); 

  if (!isset($_SESSION['username'])) {
    $_SESSION['msg'] = "You must log in first";
    header('location: login.php');
  }
  if (isset($_GET['logout'])) {
    session_destroy();
    unset($_SESSION['username']);
    header("location: login.php");
  }
?>

使用包含代码

的login / register.php文件
$password = md5($password_1);
    $query = "SELECT * FROM loginsystem WHERE username='$username' AND password='$password'";
  $results = mysqli_query($db, $query);

    if (mysqli_num_rows($results) == 1) {
      $_SESSION['username'] = $username;
      $_SESSION['success'] = "You are now logged in";
      header('location: home.php');
    }else {
        array_push($errors, "Wrong username/password combination");

但是所有内容都重定向到login.php并重置值,就像我想要它来销毁会话一样。验证会话有什么问题吗?

2 个答案:

答案 0 :(得分:0)

基本上我只是使用 OR 运算符合并了两个 if 条件。试试这个。

<?php 
  session_start(); 

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

答案 1 :(得分:0)

在您的登录/注册页面

尝试使用

开始新会话
session_start()

会话开启后,我们可以设置会话变量。 让我知道结果如何。