Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как определить существует ли URL
 
 автор: Warmonger   (17.11.2006 в 20:15)   письмо автору
 
 


<?
if (!$_POST['url'])
{
    echo 
'
        <FORM METHOD="POST">
        Введите ссылку: <input type="text" name="url" size="20" value="">
        <input type="submit" value="Начать регистрацию">
        </FORM>
    '

}

if (
$_POST['url']) // Проверка на введение ссылки в главном поле регистрации

$url=str_replace("http://","",$url);
$url='http://'.$url;
if (!
file_get_contents($url))
    {
        echo
'
            <form>
                <input type="submit" size="20" value="<<Назад">
            </form>
            '
;
        echo 
'Некорректно введена ссылка!';
        exit;
    }
else {
    echo
'Ссылка существует';

    
/********* 
        далее следует обработка данных
                                    ********/
    
}
}
?>


Вот кусок кода, где необходимо проверить существует ли ссылка, вводимая в первом окне..
Необходимо, чтобы при некорректном вводе URL он не выводил ошибки типа:
Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: gethostbyname failed in z:\home\localhost\www\_vneshka\test0.php on line 16

Warning: file_get_contents(http://ghj) [function.file-get-contents]: failed to open stream: Invalid argument in z:\home\localhost\www\_vneshka\test0.php on line 16


То есть необходимо просто устранить эти строчки об ошибках, сам код рабочий..
заранее спасибо..

   
 
 автор: Poison   (17.11.2006 в 22:53)   письмо автору
 
   для: Warmonger   (17.11.2006 в 20:15)
 

Вот. Такие дела решаються знаком "@" перед функцией:)


<?
    
if (!$_POST['url']) { 
    echo 
"<form method='post'>Введите ссылку:<input type='text' name='url' size='20' value='' /><input type='submit' value='Начать регистрацию' /></form>";  


if (
$_POST['url']) {
    
$url trim($_POST['url']);
    if ((empty(
$url)) || (!preg_match("#^(http://|www)[^\s]+$#i"$url)) || (!@file_get_contents($url))) {
        echo 
"<form><input type='submit' size='20' value='<<Назад'></form>"
        echo 
"Некорректно введена ссылка!"
        exit(); 
    } else {
        echo 
"Ссылка существует";    
    }
}

?>

   
 
 автор: Warmonger   (18.11.2006 в 00:19)   письмо автору
 
   для: Poison   (17.11.2006 в 22:53)
 

Большое спасибо, теперь все работает..

И все же я не вижу смысла вообще использовать функции trim() и preg_match() как это было в твоём примере :)

Поясняю почему я так думаю:
<?
$url
=str_replace("http://","",$url);
$url='http://'.$url;
?>

Это я делал, для того чтобы было все равно пишет пользователь запрос "http://www.ya.ru" или он пишет "www.ya.ru" или же он вообще пишет "ya.ru" во всех случаях обработчик проверит нужную ссылку и не будет ругаться, а в твоём случае preg_match() указывает на то, что ссылка www.ya.ru - введена некорректно.. Но это ведь не так.. :)

Окончательный кусок кода совместного творчества такой:
 <?
if ( empty($url) || (!@file_get_contents($url))) 
    {
        echo
'
            <form>
                <input type="submit" size="20" value="<<Назад">
            </form>
            '
;
        echo 
'Некорректно введена ссылка: '.$url;
        exit;
    }
else {
    echo
'Ссылка существует';
         }
?>



как бы то ни было, свою проблему я решил, еще раз спасибо.. :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования