【问题标题】:Page auth with php am I doing wrong?使用 php 进行页面验证我做错了吗?
【发布时间】:2017-03-04 20:56:27
【问题描述】:

我正在使用 SESSION 创建一个网站,我试图让索引只能由用户查看,但即使我正在登录或注销,我的脚本仍然会重定向。

我创造了:

<?php 
if($_SESSION['id'] == true){
  break;
} else {
  header('Location:nologin.php');
}

?>

但是当我登录时,脚本仍然重定向到 nologin.php,我改为:

<?php
if($_SESSION['id'] == false){
header('Location:nologin.php');
}
?>

问题还是出现了,怎么办?

【问题讨论】:

    标签: php if-statement location


    【解决方案1】:

    您偶然发现了一种检查会话是否已设置的错误技术。

    快速解决方案

    if(!isset($_SESSION['id'])){
       header('Location:nologin.php');
    }
    

    出了什么问题?

    假设$_SESSION["id"] 是一个字符串,而不是一个布尔值。

    if($_SESSION["id"] == true){
        echo "will always return true <br>";
    }
    if($_SESSION["id"] == false){
        echo "will always return false<br>";
    }
    

    当您使用===(相同的)运算符时,您会看到这一点,因为它永远不会相同。

    if($_SESSION["id"] === true){
        echo "will never return true <br>";
    }
    

    如果您要检查会话是否为boolean,则情况会发生变化。 我建议阅读isset()上的文档

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-03
      相关资源
      最近更新 更多