假设我的web服务器中有一个脚本http://www.example.com/script.php
。客户端可以通过两种方式在html页面上调用它,比如说:
<a href="http://www.example.com/script.php">What does this script do?</a>
或者这个:
<img src="http://www.example.com/script.php">
在第一种变体中,需要一个文本,而在第二种变体中则需要一个图像。
如果我知道预期的内容,我会在脚本中使用不同的头,例如
<!DOCTYPE html>
<html>
对于文本和
header ("Content-type: image/png");
对于图像。如果我需要输出错误$message
,我会使用
echo $message;
或
ImageString($myImage, $font, 0, 0, $message, $black);
ImagePNG($myImage);
即:消息的图像。
是否可以向服务器查询客户端期望的输出类型?
假设问题需要完全相同的URL来调用不同内容的PHP脚本。
您可以根据以下内容确定:
$_SERVER['HTTP_ACCEPT']
例如,浏览器请求具有的网页
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
和带有的图像
image/png,image/*;q=0.8,*/*;q=0.5
不同的浏览器发送不同的Accept标头,但您应该能够判断它是想要一些文本还是图像。
将参数添加到地址:
<a href="http://www.example.com/script.php?format=text">What does this script do?</a>
<img src="http://www.example.com/script.php?format=image">
为每个目的创建另一个文件。将一个文件命名为text.php
,另一个文件名为image.php
。这样,它对每次使用都是特定的,不会引起太多的头痛,甚至对普通人来说可能更容易理解,而不是使用参数和所有的爵士乐。