2015-12-13 7 views
-2

я не знаю, что произойдет eror_log генерировать, но код работает отлично, но войти, это сделать меня любопытнымПредупреждение: StrPos() ожидает параметр 1, чтобы быть строка, массив приведен в

PHP Предупреждение: StrPos () ожидает параметр 1, чтобы быть строка, массив приведены в /home/abc/public_html/url.php на линии 46

линии 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

Что такое вывод: 'var_dump ($ headers ['Content-Type']);'? – Rizier123

+0

Была ли еще проблема? Не могли бы вы оставить комментарий, или - если у вас есть ответ - отметьте один из ответов, как принято? – trincot

ответ

3

Вы можете использовать $_SERVER["CONTENT_TYPE"], чтобы получить тип содержимого, если запрос POST.

+0

Повторите второй параметр. – Rizier123

+0

Извини, мой плохой. Я должен был прочитать больше. – dipesh

+0

как насчет GET? – astack

3

Некоторые заголовки ответа могут иметь несколько значений, можно, например, получить это:

$headers["Content-Type"]=> array { 
    [0]=> "text/html; charset=UTF-8" 
    [1]=> "text/html; charset=ISO-8859-1" 
} 

Итак, вам нужно определить, что, например, путем тестирования с is_array.

Следует отметить, что выше, для работы с ответом заголовков, то есть то, что сервер возвращает в качестве типа контента, а не то, что клиент может быть запросом как тип контента.

Если с другой стороны, вам нужен тип содержимого тока запроса (т.е. $ URL является URL текущего запроса в), использование get_headers не так, как идти о. Он запускает HTTP-запрос к указанному URL-адресу для извлечения заголовков с сервера. Но поскольку это запрос, который вы уже обрабатываете, он не может вернуть полезную информацию. Кроме того, заголовки ответов обычно не полагаются на информацию, которую будет иметь клиентский браузер (например, возникает ли запрос из тега img).

В случае, если необходима информация о текущем запросе, вы можете использовать один из (или сочетание) следующие вместо:

каждый со своими за и против.