 
			
				29.03.2017, 14:32
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 07.07.2016 
					
					
					
						Сообщений: 281
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Проверка url не только на правильность, но и на работоспособность (и существование)
			 
			
		
		
		
		Здравствуйте форумчане! Подскажите, пожалуйста, как сделать проверку корректности введения URL в поле input, а также проверить его реальность (существование). 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.03.2017, 14:46
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Проверять статус ответа по ссылке. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.03.2017, 15:19
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 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 'Не рабочая'; 
 
Так? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.03.2017, 15:37
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Ну в общем-то это можно и без cURL узнать: 
echo get_headers('http://javascript.ru/')[0];
Но статус не обязательно будет равен 200, это может быть и иной, но Ок.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.03.2017, 15:53
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 07.07.2016 
					
					
					
						Сообщений: 281
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 А можно сделать так, если страница "редиректит", т.е. переадресует, то признавать её не валидной, т.е. не рабочей? И еще как сделать, чтобы там где ссылка, она вставлялась через input, и, таким образом, проверялась на работоспособность. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.03.2017, 15:59
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		В сети ищите значение всех статусов, если это неизвестно. А далее уж принимайте решение сами, какое вам нужно. Можно все что угодно. 
preg_match('/\b\d{3}/', get_headers('http://javascript.ru/')[0], $match);
if($match[0] != 200) {
    //необходимые действия   
}
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.03.2017, 16:32
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Sonya, 
 если много условий по статусам, то можно ведь не проверять каждый, а описать действия по статусам:
 
$conditions = [
    302 => function() {
        //
    },
    404 => function() {
        //
    },
    ....
];
if(array_key_exists($match[0], $conditions)) $conditions($match[0]);
else ///
Либо тот же switch.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.03.2017, 16:50
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 07.07.2016 
					
					
					
						Сообщений: 281
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 А полностью код, можно показать, а то запуталась? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |