Убедитесь, что URL указывает на реальное местоположение? - PullRequest
1 голос
/ 21 апреля 2011

У меня работает эта маленькая CMS, и у пользователя есть возможность предварительно просмотреть сообщение перед отправкой. Я хотел бы иметь функцию, которая проверяет, является ли введенный URL действительным (т. Е. Указывает на ресурс, который существует, а не в правильном формате или нет). Желательно, чтобы я делал это с помощью JavaScript (тогда мне не нужно было использовать AJAX и PHP), но с PHP все в порядке.

Может кто-нибудь указать мне на способ сделать это? На всякий случай я хочу получить ответ да / нет от чего-то вроде запуска команды UNIX ping. Меня не волнует, что находится на другом конце URL-адреса, просто указывает ли он на что-то навигационное.

Спасибо

Джеймс

Ответы [ 2 ]

2 голосов
/ 21 апреля 2011

Вы можете просто использовать fopen, чтобы увидеть, будет ли работать URL-адрес ... конечно, это может быть излишним ресурсом в зависимости от того, как часто вы это делаете.

http://php.net/manual/en/function.fopen.php

Альтернативно, вы можете использовать плагин jquery:

http://binarykitten.me.uk/dev/jq-plugins/88-jquery-plugin-ajax-head-request.html

Альтернативный, и, вероятно, самый простой способ, которыйt live ... но вы можете использовать jquery для вызова другого php-скрипта, который его реализует:

http://php.net/manual/en/function.get-headers.php

1 голос
/ 21 апреля 2011

Загрузите его в новый img объект и посмотрите, каков ответ. Поскольку вы на самом деле не отображаете изображение, тот факт, что вы, возможно, загружаете обычный текст или другие данные, не относящиеся к изображению, в основном не имеет значения, вы просто хотите посмотреть, какой код состояния HTTP для запроса изображения.

Преимущество заключается в том, что если злонамеренный пользователь попытается загрузить URL-адрес, указывающий на непристойно большой файл, он будет делать только DoS, так как запрос будет исходить из их браузера, а не с вашего сервера. С другой стороны, ничто не помешает им подделать правильный ответ, и ВСЕ ЕЩЕ поместите этот крупный ресурс и в любом случае отправите форму.

...