PHP:期望的内容——html或图像


PHP: What is expected -- an html or image?

假设我的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。这样,它对每次使用都是特定的,不会引起太多的头痛,甚至对普通人来说可能更容易理解,而不是使用参数和所有的爵士乐。