2011-06-28 30 views
2

我有运行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文件,没有关闭?>。

任何想法,为什么这可能会发生将不胜感激,我不能拿出任何理由为什么这只会发生在一些时间,否则工作完美。

谢谢。

+0

作为更新,在检查Apache错误日志后,显然在出现空文件时出现分段错误(11)。没有线索,但它为什么发生。 – drewster

+1

更新2:这是一个服务器问题,IT人员通过服务器的防火墙阻止了memcache守护进程清除了这个问题,而不是PHP语言问题。不过谢谢你的建议。 – drewster

回答

2

您应该使用HTTP检查器,如fiddler2或FireFox插件TamperData查看请求和响应时间。一般情况下,这两个以下情况之一会发生导致此:

  1. 您发送标题表明该类型应该是下载而不是在浏览器中显示
  2. 你正在编写出一些数据的浏览器认为它不能渲染(例如,ASCII值低于30的字节(0x1D),这些字符被认为是控制字符,并且不打算打印)。
相关问题