我在运行PHP 5.3.6的Unix服务器上运行PHP文件。这些文件会将会话变量检查为保护对它们的访问权限的一种形式。这种方法过去对我有用,大部分时间都在这里工作。
我遇到的问题有时候当您浏览网站时,会打开打开的文件对话框而不是导航到该页面的浏览器。提供下载的文件是与您列出的文件同名的php文件,但是为0字节。如果您点击取消并再次点击该链接,通常情况继续正常。但是,如果您要提交表单信息,则这是一个问题。
过去我偶尔会遇到这个问题,甚至在使用PHP构建的其他公司网站上看过几次(Facebook已经完成了两三次),但这种情况并不像我在这个问题上看到的那么频繁站点。
<?php
session_start();
$_SESSION['admin'] = 1;
header('Location: policy.php');
是会话设置方式的一部分(实际的凭证检查被遗漏了,因为示例中没有必要)。
<?php
require "../php/secure.php";
是每个“安全”页面的顶部。 secure.php的内容是:
<?php
session_start();
if( $_SESSION['admin'] != 1 )
{
header('Location: index.php');
}
这是完整的secure.php文件,没有关闭?&gt;。
任何关于为什么会发生这种情况的想法都会非常感激,我无法想出为什么只会在某些时候发生这种情况并且完美地工作。
谢谢。
答案 0 :(得分:2)
您应该使用HTTP检查器(如fiddler2或FireFox插件TamperData)来查看发生时的请求和响应。通常情况下,会发生以下两种情况之一:
0x1D
)的字节,这些数据被视为控制字符,并且不打算打印)。