Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.03.2017, 14:32
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

Проверка url не только на правильность, но и на работоспособность (и существование)
Здравствуйте форумчане! Подскажите, пожалуйста, как сделать проверку корректности введения URL в поле input, а также проверить его реальность (существование).
Ответить с цитированием
  #2 (permalink)  
Старый 29.03.2017, 14:46
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Проверять статус ответа по ссылке.
Ответить с цитированием
  #3 (permalink)  
Старый 29.03.2017, 15:19
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

$url = 'ссылка';
// Инициализируем curl
$ch = curl_init();
// Задаем URL
curl_setopt($ch, CURLOPT_URL, $url);
// Формируем заголовок
curl_setopt($ch, CURLOPT_HEADER, 1);
// Говорим, что возвращать сам контент нам не нужно
curl_setopt($ch, CURLOPT_NOBODY, 1);
// Вернуть данные передачи
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// Записать данные в переменную
$res = curl_exec($ch);
curl_close($ch);
echo '<pre>'; print_r($res); echo '</pre>';

if (strstr($res, 'HTTP/1.1 200 OK')) echo 'Рабочая';
else echo 'Не рабочая';

Так?
Ответить с цитированием
  #4 (permalink)  
Старый 29.03.2017, 15:37
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Ну в общем-то это можно и без cURL узнать:

echo get_headers('http://javascript.ru/')[0];


Но статус не обязательно будет равен 200, это может быть и иной, но Ок.
Ответить с цитированием
  #5 (permalink)  
Старый 29.03.2017, 15:53
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

А можно сделать так, если страница "редиректит", т.е. переадресует, то признавать её не валидной, т.е. не рабочей? И еще как сделать, чтобы там где ссылка, она вставлялась через input, и, таким образом, проверялась на работоспособность.
Ответить с цитированием
  #6 (permalink)  
Старый 29.03.2017, 15:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

В сети ищите значение всех статусов, если это неизвестно. А далее уж принимайте решение сами, какое вам нужно. Можно все что угодно.

preg_match('/\b\d{3}/', get_headers('http://javascript.ru/')[0], $match);
if($match[0] != 200) {
    //необходимые действия   
}
Ответить с цитированием
  #7 (permalink)  
Старый 29.03.2017, 16:32
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Sonya,
если много условий по статусам, то можно ведь не проверять каждый, а описать действия по статусам:

$conditions = [
    302 => function() {
        //
    },
    404 => function() {
        //
    },
    ....
];

if(array_key_exists($match[0], $conditions)) $conditions($match[0]);
else ///


Либо тот же switch.
Ответить с цитированием
  #8 (permalink)  
Старый 29.03.2017, 16:50
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

А полностью код, можно показать, а то запуталась?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка на существование элемента в реальном времени js dkmrus Общие вопросы Javascript 7 03.05.2016 22:12
Отображение скрипта или его работа только на URL содержащих фразу в себе joggy Общие вопросы Javascript 1 23.05.2014 12:30
Проверка на соответствие url с номинальным расположением Aftal1ck Общие вопросы Javascript 0 11.10.2012 08:27
Проверка на существование файла в IE с помощью readyState Kotakota Events/DOM/Window 13 29.09.2012 03:25
Проверка выбора только 2 ответов из 4 demon166 Общие вопросы Javascript 6 07.01.2010 01:03