php中如何输出网址参数filename=test.txt文本的内容.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php中如何输出网址参数filename=test.txt文本的内容.相关的知识,希望对你有一定的参考价值。

比如,我的网址为htt p :/ /1111 . 1/11/?filename=test.txt ,我想输出echo file_get_contents(“htt p : / /11 11 . 1/11/test.txt”);内容,代码应该怎么写?

参考技术A php代码
$_SERVER["SERVER_PORT"] //获取端口
$_SERVER['HTTP_HOST'] //获取域名或主机地址 如test.cn 或http://www.test.cn 或2010.test.cn
$_SERVER['SERVER_NAME'] //获取域名或主机地址 注:只是主域名 如 test.cn
$_SERVER["REQUEST_URI"] //获取域名后的详细地址 如:/index.php?id=123 ...
$_SERVER['PHP_SELF'] //获取PHP文件名
$_SERVER["QUERY_STRING"] //获取PHP后的网址参数
$_SERVER['HTTP_REFERER'] //来源网页的详细地址

输出:

Php代码
echo "rewrite: ".$_GET["rewrite"];
echo "<br>SERVER_PORT: ".$_SERVER["SERVER_PORT"];
echo "<br>HTTP_HOST: ".$_SERVER["HTTP_HOST"];
echo "<br>SERVER_NAME: ".$_SERVER["SERVER_NAME"];
echo "<br>REQUEST_URI: ".$_SERVER["REQUEST_URI"];
echo "<br>PHP_SELF: ".$_SERVER["PHP_SELF"];
echo "<br>QUERY_STRING: ".$_SERVER["QUERY_STRING"];
echo "<br>HTTP_REFERER: ".$_SERVER["HTTP_REFERER"];

注意:
PHP中的SERVER_NAME 和HTTP_HOST的区别

地址栏里输入以下网址:

1) http://www.test.cn/ 时
对应的值为:
HTTP_HOST: www.test.cn
SERVER_NAME: test.cn

2) http://blog.test.cn / 时
对应的值为:
HTTP_HOST: blog.test.cn
SERVER_NAME: test.cn

php $_SERVER 属性说明

$_SERVER[ 'PHP_SELF' ] #当前正在执行脚本的文件名,与 document root相关。
$_SERVER[ 'argv' ] #传递给该脚本的参数。
$_SERVER[ 'argc' ] #包含传递给程序的命令行参数的个数(如果运行在命令行模式)。
$_SERVER[ 'GATEWAY_INTERFACE' ] #服务器使用的 CGI 规范的版本。例如,“CGI/ 1.1 ”。
$_SERVER[ 'SERVER_NAME' ] #当前运行脚本所在服务器主机的名称。
$_SERVER[ 'SERVER_SOFTWARE' ] #服务器标识的字串,在响应请求时的头部中给出。
$_SERVER[ 'SERVER_PROTOCOL' ] #请求页面时通信协议的名称和版本。例如,“HTTP/ 1.0 ”。
$_SERVER[ 'REQUEST_METHOD' ] #访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。
$_SERVER[ 'QUERY_STRING' ] #查询(query)的字符串。
$_SERVER[ 'DOCUMENT_ROOT' ] #当前运行脚本所在的文档根目录。在服务器配置文件中定义。
$_SERVER[ 'HTTP_ACCEPT' ] #当前请求的 Accept: 头部的内容。
$_SERVER[ 'HTTP_ACCEPT_CHARSET' ] #当前请求的 Accept-Charset: 头部的内容。例如:“iso- 8859 - 1 ,*,utf- 8 ”。
$_SERVER[ 'HTTP_ACCEPT_ENCODING' ] #当前请求的 Accept-Encoding: 头部的内容。例如:“gzip”。
$_SERVER[ 'HTTP_ACCEPT_LANGUAGE' ]# 当前请求的 Accept-Language: 头部的内容。例如:“en”。
$_SERVER[ 'HTTP_CONNECTION' ] #当前请求的 Connection: 头部的内容。例如:“Keep-Alive”。
$_SERVER[ 'HTTP_HOST' ] #当前请求的 Host: 头部的内容。
$_SERVER[ 'HTTP_REFERER' ] #链接到当前页面的前一页面的 URL 地址。
$_SERVER[ 'HTTP_USER_AGENT' ] #当前请求的 User_Agent: 头部的内容。
$_SERVER[ 'HTTPS' ] — 如果通过https访问,则被设为一个非空的值(on),否则返回off
$_SERVER[ 'REMOTE_ADDR' ] #正在浏览当前页面用户的 IP 地址。
$_SERVER[ 'REMOTE_HOST' ] #正在浏览当前页面用户的主机名。
$_SERVER[ 'REMOTE_PORT' ] #用户连接到服务器时所使用的端口。
$_SERVER[ 'SCRIPT_FILENAME' ] #当前执行脚本的绝对路径名。
$_SERVER[ 'SERVER_ADMIN' ] #管理员信息
$_SERVER[ 'SERVER_PORT' ] #服务器所使用的端口
$_SERVER[ 'SERVER_SIGNATURE' ] #包含服务器版本和虚拟主机名的字符串。
$_SERVER[ 'PATH_TRANSLATED' ] #当前脚本所在文件系统(不是文档根目录)的基本路径。
$_SERVER[ 'SCRIPT_NAME' ] #包含当前脚本的路径。这在页面需要指向自己时非常有用。
$_SERVER[ 'REQUEST_URI' ] #访问此页面所需的 URI。例如,“/index.html”。
$_SERVER[ 'PHP_AUTH_USER' ] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。
$_SERVER[ 'PHP_AUTH_PW' ] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。
$_SERVER[ 'AUTH_TYPE' ] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型。追问

现在网址为http: // ww w. p a oo . n e t/t/test.php?filename=1111.php,从网址中获取filename的值,然后通过这个值找到1111.php,输出1111.php文本内容。
$id=$_REQUEST['filename'];
echo file_get_contents($id);

这样写不对,不知道应该怎么写,能否具体下?

PHP HTML图像输出

【中文标题】PHP HTML图像输出【英文标题】:PHP HTML image output 【发布时间】:2011-04-11 08:08:21 【问题描述】:

PHP manualbase64_encode() 中,我看到了以下用于输出图像的脚本。

<?php

$imgfile = "test.gif";

$handle = fopen($filename, "r");

$imgbinary = fread(fopen($imgfile, "r"), filesize($imgfile));

echo '<img src="data:image/gif;base64,' . base64_encode($imgbinary) . '" />';

?>

但是如何输出一个用GD动态创建的图像?

我试过了:

$im = imagecreatetruecolor(400, 400);

imagefilledrectangle($im, 0, 0, 200, 200, 0xFF0000);
imagefilledrectangle($im, 200, 0, 400, 200, 0x0000FF);
imagefilledrectangle($im, 0, 200, 200, 400, 0xFFFF00);
imagefilledrectangle($im, 200, 200, 400, 400, 0x00FF00);

echo '<img src="data:image/png;base64,'.base64_encode(imagepng($im)).'" />';

为什么这不起作用?

它似乎在 IE 中有效,但在 Firefox 中无效。我怎样才能使它跨浏览器?

【问题讨论】:

不,火狐。嗯,它在 IE 中工作...... 您是否真的需要使用数据:URI?因为如果你不这样做,最好不要使用它们。他们有很多缺点。例如,IE (相关) ***.com/questions/3385982/… 【参考方案1】:

好吧,抱歉,我想得太快了:)

imagepng()会将原始数据流直接输出到浏览器,所以必须使用ob_start()等输出缓冲句柄来获取。

你在这里:

ob_start();
imagepng($yourGdImageHandle);
$output = ob_get_contents();
ob_end_clean();

也就是说 - 你需要为你使用 $output 变量 base64_encode() 函数。

【讨论】:

@Mark 不,他是对的。如果它在 IE 中工作,那么因为 img src 部分被忽略。原始图像将输出到浏览器,base64_encode 永远不会发生 为什么要投反对票?我确实做到了我所说的 - 请阅读我编辑的评论。 请用ob_start()解释。你是怎么用的? 我很高兴你很高兴;]【参考方案2】:

因为imagepng 将布尔或图像流直接输出到输出。 因此,为了获取图像数据,您应该使用如下输出缓冲区:

ob_start();
imagepng($im);
$image = ob_get_contents();
ob_end_clean();
echo '<img src="data:image/png;base64,'.base64_encode($image).'" />';

【讨论】:

【参考方案3】:

很可能是因为data: URI 方案非常有限且很好用,除非绝对没有办法绕过它。

例如,在 Internet Explorer 中,这在 IE 8 之前根本不起作用;在那里,有一个global 32 kilobyte limitation 用于数据:URI。

【讨论】:

所以你的意思是换一种方式? @Mark 你首先需要什么数据:URIs? 验证码实验。见***.com/questions/3692969/captcha-encryption 我需要在不保存的情况下显示给用户 @Mark 为什么?需要强调的是,您计划做的事情在 Internet Explorer 7 中根本行不通。您真的能忍受吗?【参考方案4】:

您必须先将图像保存为 PNG,然后从中读取以获取其内容作为值。

http://www.php.net/manual/en/function.imagepng.php

imagepng() 不返回 PNG 文件。它直接输出到浏览器,然后返回一个表示成功或失败的布尔值。

(来自 php.net:) 将图像发送到浏览器时,PHP 在内部使用临时文件,因此调用 imagepng() 两次将一无所获。

【讨论】:

可以在 ob_start() 和 ob_get_contents() 之间加上 imagepng(); ob_end_clean();获取图像,但它仍然使用临时文件。

以上是关于php中如何输出网址参数filename=test.txt文本的内容.的主要内容,如果未能解决你的问题,请参考以下文章

PHP .htaccess重写网址

如何跨两个文件访问变量

使用 htaccess 从 URL 中删除 .php

php URL - 用斜杠替换问号和参数

php 获取 链接上的 参数

php 输出excel