我不知道eror_log
生成了什么,但代码工作正常,但是日志让我感到好奇
PHP警告:strpos()要求参数1为字符串,在第46行的/home/abc/public_html/url.php中给出数组
第46行是:
if (strpos($headers['Content-Type'], 'image/') === FALSE) {
以下是代码:
$headers = @get_headers($url, 1); // @ to suppress errors. Remove when debugging.
if (isset($headers['Content-Type'])) {
if (strpos($headers['Content-Type'], 'image/') === FALSE) {
// Not a regular image (including a 404).
}
else {
// It's an image!
header("Location: ".$url);
die();
}
}
else {
// No 'Content-Type' returned.
}
答案 0 :(得分:3)
如果请求是POST,您可以使用$_SERVER["CONTENT_TYPE"]
获取内容类型。
答案 1 :(得分:3)
某些响应标头可能有多个值,例如你可以这样:
$headers["Content-Type"]=> array {
[0]=> "text/html; charset=UTF-8"
[1]=> "text/html; charset=ISO-8859-1"
}
因此,您需要检测到这一点,例如通过is_array
进行测试。
请注意,以上内容适用于响应标头,即服务器作为内容类型返回的内容,而不是客户端请求作为内容类型的内容。
另一方面,如果您需要当前请求的内容类型(即 $ url 是当前请求的URL),则使用{ {3}}不是可行的方式。它会向给定的URL启动HTTP请求,以从服务器检索标头。但由于这是您正在处理的请求,因此无法返回有用的信息。此外,响应标头通常不依赖于客户端浏览器将具有的信息(例如,请求是否源自img
标记)。
如果您需要有关当前请求的信息,可以使用以下之一(或组合):
get_headers
(= getallheaders())