【发布时间】:2020-05-25 08:18:22
【问题描述】:
背景故事
我曾经在 GoDaddy 专用服务器上托管我的网站。通常我会(在成功的用户登录时)将一些东西应用于_SESSION 变量以确定用户是否成功登录
if ($_SESSION['user_logged_in'] == true) {
// did stuff here
}
我通常会在页面顶部应用这样的内容,这样如果用户没有登录,它会将他们重定向到其他地方,比如...
<?php
if ($_SESSION['user_logged_in'] != true) {
// direct them to log in
header("Location: http://www.example.com/login");
die();
} else {
// user is logged in so show them stuff
}
?>
我正在从 GoDaddy 迁移到 AWS,并使用 Apache 等构建了我自己的 EC2 实例。现在,当我在用户未登录的情况下访问页面时,我会收到类似的错误
Notice: Undefined index: user_logged_in in /var/www/html/index.php on line X
我理解为什么我会收到此消息,因为从技术上讲,因为用户未登录且会话变量尚未创建。
但是....
我的第一个问题是,apache 中是否存在忽略会话变量是否已设置为不显示错误的设置?我在使用 GoDaddy 时从未收到此消息,所以我假设是这样。
其次,不使用if (isset($_SESSION['variable'])之类的东西来判断会话变量是否存在有什么安全风险?
使用if ($_SESSION['user_logged_in'] != true) { 之类的东西不是一样的吗?
【问题讨论】:
标签: php arrays variables warnings undefined-index