我是PHP的新手,我的登录系统遇到了一些问题。我构建了一个可以在本地主机上运行的登录系统,没有任何问题,但我的服务器上有些问题看起来很奇怪。
当我在服务器上登录我的网站时,它会将我登录到某些页面(因此我认为这些会话只能在某些页面上读取)。这个怪异的原因是每次登录时我可以访问哪些页面都会发生变化,所以我无法检查我可以进入的代码和我无法修复问题的代码之间的差异,因为受影响的页面每次都会更改我还在日志文件中收到以下警告:
PHP警告:无法修改标题信息 - 第18行/home/mysite/log_out.php中已经发送的标题(在/home/mysite/log_out.php:6中开始输出)
我也看到这样的一个:
PHP警告:session_start():无法发送会话缓存限制器 - 第2行/home/mysite/status.php中已发送的标头(在/home/mysite/log_out.php:6开始输出) [05-May-2018 13:33:31 UTC]
为了增加奇怪性,(并且我不确定这是一个相关的问题还是完全不同的问题)我登录时可以访问的页面表现得很奇怪。例如,我的一个页面上有一个按钮附加到php表单。此表单将页面标记为“收藏夹”,然后一旦页面成为收藏页面,它就会更改为允许用户从其收藏夹列表中删除该页面的按钮。当我到达此页面时,按钮工作一次或两次,然后页面停止执行代码并且不再允许切换。这也适用于localhost。
我对此问题的理论是它是某种设置问题。我认为必须如此,因为如果这是我的代码的问题,我希望每次在同一页面上得到相同的错误,但我没有。似乎代码在一定次数后停止执行。因为会话似乎存在问题,所以我将auto_start会话功能设置为“On”以查看是否有帮助,但目前还没有。 php.ini文件中是否有其他设置可能有帮助?任何方向表示赞赏。提前谢谢,
更新:
根据请求,这里是警告提到的两个文件中的代码:
status.php(根据登录状态设置横幅变量)
<?php
session_start();
if (isset($_SESSION["logged_in"])) {
$login = "LOG OUT";
$signup = "MY ACCOUNT";
$ref = "/log_out.php";
$acc = "/user.php";
} else {
$login = "LOG IN";
$signup = "SIGN UP";
$ref = "/log_in.php";
$acc = "/sign_up.php";
}
?>
log_out.php(将用户注销)
<?php
session_start();
session_destroy();
session_unset();
echo<<<_HEAD
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="style.css">
<title>Log Out</title>
<link rel="shortcut icon" type="image/png" href="/malogo.png"/>
<link rel="shortcut icon" type="image/png" href="http://www.example.com/malogo.png"/>
</head>
<body>
_HEAD;
require_once("status.php");
require_once("banner.php");
header("Location: ../log_in.php?log_out=success");
?>