$ _POST变量在没有HTML标头的页面上不可用

时间:2014-01-29 19:48:53

标签: php post http-headers

我曾经能够将变量发布到纯PHP页面,但它似乎已被我们的Web主机的服务器设置更改所打破,因为这曾经工作得很好。基本上,我已经设置了一个表单来检索并允许用户从服务器上公共文件夹之外的安全位置下载文件(仅限授权用户)。它的工作原理如下:

request_file.php

<?php
session_start();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Request File</title>
</head>

<body>

<form name="request_file" method="post" action="retrieve_file.php" enctype="multipart/form-data">
<input type="text" name="filename" />
<input type="submit" value="Submit" />
</form>

</body>
</html>

retrieve_file.php

<?php
session_start();
header("Vary: User-Agent");
header("Pragma: public");
header("Content-type: text/plain");
header("Content-Disposition: attachment; filename=".$_POST['filename']);

readfile( "../../".$_SESSION['userid']."/".$_POST['filename'] );

?>

但是,如果我用这个替换retrieve_file.php代码:

<?php
echo "<pre>";
var_dump( $_POST );
echo "</pre>";
?>

每次都会打印出一个空数组。但是,如果我在retrieve_file.php上放置HTML标题,它就可以了。但是,对于导出文件,由于在页面获取其后变量之后必须发送标题,因此无法真正起作用。

任何想法如何解决这个问题?请不要因为这种方式提取文件而责备我,它实际上适用于我们非常具体的应用程序。

谢谢!

其他信息

PHP版本:5.4

1 个答案:

答案 0 :(得分:0)

您需要使用$ _FILES变量进行访问,如下所示:

$ _ FILES [ “文件”] [ “文件名”]

点击http://www.w3schools.com/php/php_file_upload.asp

查看详情