PHP标头不起作用 - 页面照常显示

时间:2014-04-02 11:01:30

标签: php

我试图阻止直接访问以下文件(并且只允许访问提交表单的人),但是当我直接访问此文件时,而不是404我看到了文件正确。有人能说出这段代码有什么问题吗?

<?php
  if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    header("HTTP/1.0 404 Not Found");
  } else {
    if(isset($_POST['a'])){
      switch ($_POST['a']){
        case "1":
          $var = "hey";
          break;
        case "2":
          $var = "now";
          break;
        default:
          $var = "other";
      }
    }
  }
?>  
<!doctype html>
<html>
  <head>
    <title>test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    something
  </body>
</html>

2 个答案:

答案 0 :(得分:1)

在404标题后添加退出;

确保开启php标签前面没有任何内容&lt;?php

答案 1 :(得分:1)

您需要记住在拨打404后停止执行:

header("HTTP/1.0 404 Not Found");
exit(); // Stop Executing

如果您没有,您将发送404状态代码 HTML,并且大多数浏览器仍然会在这种情况下显示HTML。 X

显示错误页面

创建一个错误屏幕并将其放入名为404.php的文件中,然后将代码更新为:

header("HTTP/1.0 404 Not Found");
include '404.php'; // Display the Not Found error
exit();            // Stop Executing