1

我是 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)[2018 年 5 月 5 日 13 :33:31 UTC]

更奇怪的是,(我不确定这是一个相关的问题还是完全不同的问题)我在登录时可以访问的页面表现得很奇怪。例如,我的一个页面上有一个附加到 php 表单的按钮。此表单将页面标记为“收藏夹”,然后一旦该页面成为收藏夹,它就会变为一个按钮,允许用户从他们的收藏夹列表中删除该页面。当我到达这个页面时,按钮工作一次或两次,然后页面停止执行代码并且不再允许切换。这也适用于本地主机。

我对这个问题的理论是它是某种设置问题。我认为一定是这样,因为如果我的代码有问题,我希望每次都会在相同的页面上得到相同的错误,但我没有。似乎代码在一定次数后停止执行。因为会话似乎存在问题,所以我将我的 auto_start 会话功能设置为“打开”以查看是否有帮助,但到目前为止还没有。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");
?>
4

0 回答 0