Проверка ссылки на существование @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 31 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
Kurilshik
Goldmember
142
Сообщения: 12797
Зарегистрирован: 18.10.04
Откуда: Кожаное кресло
Заголовок сообщения: Проверка ссылки на существование
Сообщение Добавлено: 25 Январь 2006, 16:04:21 
У меня есть массив из ссылок
Код:
<?php
$url=array();
$url[0]='www.alexey-popov.com';
$url[1]='www.deforum.ru';
$url[2]='www.sdlkjfghlskdjfghlskdjfghlskdjfghlksjdglksjdhflgjkg.com';
?>


Как на пхп циклом определить какая ссылка работает, а какая нет?

_________________

Портфолио - ЖЖ - Кулинарные рецепты - Блог о дизайне, уроки фотошоп

icq: 295346452 | Почта: info()alexey-popov.com

.
.talisman Муж.
участник
84
Сообщения: 1562
Зарегистрирован: 13.01.05
Сообщение Добавлено: 25 Январь 2006, 16:15:13 
http://sitemaker.ru/forum/showthread.php?threadid=3124
Kurilshik
Goldmember
142
Сообщения: 12797
Зарегистрирован: 18.10.04
Откуда: Кожаное кресло
Сообщение Добавлено: 25 Январь 2006, 16:21:56 
.talisman, не работает та функция нифига, выдаёт пустое место

_________________

Портфолио - ЖЖ - Кулинарные рецепты - Блог о дизайне, уроки фотошоп

icq: 295346452 | Почта: info()alexey-popov.com

.
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 25 Январь 2006, 20:03:50 
ну решение в лоб
стучаться (curs, fsocket) смотреть, что выдают

_________________
:: metal kick ass ::
1NV1Z0R
соучастник
12
Сообщения: 971
Зарегистрирован: 27.09.05
Сообщение Добавлено: 25 Январь 2006, 21:42:43 
ага, через сокет заголвоки читать
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 25 Январь 2006, 22:33:28 
да простого fopen хватит же. зачем заморачиваться?

_________________
можно на ТЫ.
.talisman Муж.
участник
84
Сообщения: 1562
Зарегистрирован: 13.01.05
Сообщение Добавлено: 25 Январь 2006, 22:54:37 
bE(o0L, если закрыть на папку/файл права, то fopen не прокатит.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 26 Январь 2006, 03:37:39 
И к чему твой ответ? ;)
Прочитай внимательно вопрос. Там разве сказано про файлы гдето?
вот как ты закроешь права на URL www.deforum.ru например? оч интересно :confused:

_________________
можно на ТЫ.
.talisman Муж.
участник
84
Сообщения: 1562
Зарегистрирован: 13.01.05
Сообщение Добавлено: 26 Январь 2006, 09:56:00 
bE(o0L, а как ты проверишь на существования вот такой урл?
http://www.asdsadsadas.ru/sdadad

или такой:
http://www.asdsadsadas.ru/sdadad.rar

единственный правильный вариант — читать заголовки сервера.
читаем, получаем массив, обращаемся к нулевому элементу и получаем что-то вроде "HTTP/1.1 404 Not Found" в случае, если файл не существ. Потом ищем в полученной строке подстроку "404" и если она есть, то начинаем ругаться, иначе, говорим, что всё хорошо — url существует.

а в пятом пхп появилась функция get_headers, обязательным параметром которой является url-адрес. Таким образом задача упрощается еще больше:
Код:
$arr = get_headers($url);
if (strpos("$arr[0]", "404")
     echo "no";
else
     echo "yes";


функция get_headers работает через сокеты, то есть в четвертом пхп это тоже можно реализовать. Единственное что нужно учесть, это то, что при попытке коннекта функции fsockopen к несуществующему хосту появится два-три варнинга. поэтому, после отладки скрипта нужно отключить сообщения об ошибках, например, в самом начале добавить строчку "error_reporting(0)".
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 26 Январь 2006, 13:45:40 
ты всётаки не прочитал вопрос, как я тебе советовал. Зато нахватался чужих решений. ;)
Я так же совершенно не понял чем на твой взгляд отличаются два URL`a www.deforum.ru от например http://www.asdsadsadas.ru/sdadad (кроме названий конечно же)

fopen('http://www.url.com',r) вернёт true, если url существует.
это самый простой вариант. Великолепно подойдёт для задачи Kurilshik`а :)

Всё что предлагаешь ты, служит немнога другим целям.

_________________
можно на ТЫ.
.talisman Муж.
участник
84
Сообщения: 1562
Зарегистрирован: 13.01.05
Сообщение Добавлено: 26 Январь 2006, 13:59:00 
bE(o0L, попробуй — fopen возвращает что угодно, но только не то, что требует от него логика.

а вопрос не совсем корректно поставлен. Kurilshik`у нужно проверить, можно ли зайти на данный адрес, или нельзя. и не важно, какая там ошибка.

попробуй запусить:
Код:
$fp = fopen('http://usadasdsa', r);
if ($fp == true)
    echo "true";
else
    echo "false";

как ни странно, вёрнет true.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 26 Январь 2006, 15:08:04 
гыгы
маладца.

а теперь напиши пральна.
if(fopen('http://usadasdsa', r)){
echo "talisman maladec!";
}

_________________
можно на ТЫ.
.talisman Муж.
участник
84
Сообщения: 1562
Зарегистрирован: 13.01.05
Сообщение Добавлено: 26 Январь 2006, 15:28:59 
bE(o0L, в 4.4 это работает, в 5ом — нет.
метод не универсальный, это не устраивает.

и если в 4.4 поставить урл "http://usadasdsa.ru/sdsadsadsa", то ничего не выведет.
еще раз повторю, что нужны читать заголовки сервера.
Kurilshik
Goldmember
142
Сообщения: 12797
Зарегистрирован: 18.10.04
Откуда: Кожаное кресло
Сообщение Добавлено: 26 Январь 2006, 15:36:55 
bE(o0L, я непойму, так ты знаешь решение проблемы?
Есть х.туча ссылок, нужно проверить их статус, 200 ОК или какаята ошибка, неважно 404,403 или другая
Если знаешь, напиши пожалуйста, если нет, к чему пустые слова то


Код:
<?php
//Вот массив:
$url=array();
$url[0]='www.deforum.ru';
$url[1]='www.yandex.ru';
$url[2]='www.icq.com';
$url[3]='www.hren_znaet_kakoy_domen_kotorogo_v_reale_net.com';

//Здесь нужно както проверить масиив ссылок
?>

_________________

Портфолио - ЖЖ - Кулинарные рецепты - Блог о дизайне, уроки фотошоп

icq: 295346452 | Почта: info()alexey-popov.com

.
Kurilshik
Goldmember
142
Сообщения: 12797
Зарегистрирован: 18.10.04
Откуда: Кожаное кресло
Сообщение Добавлено: 26 Январь 2006, 15:43:27 
COLT, :eek: Неужели всё так сложно

_________________

Портфолио - ЖЖ - Кулинарные рецепты - Блог о дизайне, уроки фотошоп

icq: 295346452 | Почта: info()alexey-popov.com

.
.talisman Муж.
участник
84
Сообщения: 1562
Зарегистрирован: 13.01.05
Сообщение Добавлено: 26 Январь 2006, 15:53:58 
COLT, не работает...

http://talisman87.com/temp/xml/check2.php
запрос "www.sdlfkjghlskdjfglksdjg.ru"
Kurilshik
Goldmember
142
Сообщения: 12797
Зарегистрирован: 18.10.04
Откуда: Кожаное кресло
Сообщение Добавлено: 26 Январь 2006, 15:58:28 
ага

_________________

Портфолио - ЖЖ - Кулинарные рецепты - Блог о дизайне, уроки фотошоп

icq: 295346452 | Почта: info()alexey-popov.com

.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 26 Январь 2006, 17:22:26 
Kurilshik, а что тебе не понятно? пропусти через цикл свой массив, тока добавь к URL : HTTP://

Код:
foreach($url as $k=>$v){
 if(@fopen($v,r))echo 'URL!<br>';
}

_________________
можно на ТЫ.
.talisman Муж.
участник
84
Сообщения: 1562
Зарегистрирован: 13.01.05
Сообщение Добавлено: 26 Январь 2006, 19:44:33 
bE(o0L, ДА НЕ РАБОТАЕТ ТВОЯ СХЕМА!!
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 26 Январь 2006, 20:02:50 
.talisman, не надо орать. если у тебя что то не работает - смотри внимательно на свои руки.

_________________
можно на ТЫ.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 26 Январь 2006, 20:09:05 
http://www.ps.lv/url.php

_________________
можно на ТЫ.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 26 Январь 2006, 20:19:12 

Цитата:
tvoj url: http://www.deforum.ru

status: Vidish, vse okey! takoj url est :)


_________________
можно на ТЫ.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 26 Январь 2006, 20:21:20 
кольт да ты никак на отладку попал :laugh:

_________________
можно на ТЫ.
.talisman Муж.
участник
84
Сообщения: 1562
Зарегистрирован: 13.01.05
Сообщение Добавлено: 26 Январь 2006, 20:23:47 
bE(o0L, :confused:
работает... а какой php?

и еще надо добавить для полного счастья:
Код:
if(substr($url, 0, 7) == "http://")
      $url = "http://".$url;


иначе на "deforum.ru" ругается.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 26 Январь 2006, 20:29:57 
ну лень же ;)

PHP 4.3.c чем то.

это стандартная возможность. Не работает в двух случаях. Либо файрвол на сервере не даёт пхп коннектиться на 80 порт, либо не проставленно allow_url_fopen="1"

_________________
можно на ТЫ.
.talisman Муж.
участник
84
Сообщения: 1562
Зарегистрирован: 13.01.05
Сообщение Добавлено: 26 Январь 2006, 20:37:21 
bE(o0L, у меня на хостинге 4.4 — так не работает нифига! =(
allow_url_fopen="On"… странно...
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 26 Январь 2006, 21:04:22 
значит firewall не пускает php

_________________
можно на ТЫ.
gregzem Муж.
новый человек
2
Сообщения: 252
Зарегистрирован: 29.04.03
Сообщение Добавлено: 26 Январь 2006, 22:12:11 
правильный ответ - посылать запрос HEAD'ом, а не GET'ом.

Это

1. быстрее
2. меньше входящего траффика
Kurilshik
Goldmember
142
Сообщения: 12797
Зарегистрирован: 18.10.04
Откуда: Кожаное кресло
Сообщение Добавлено: 27 Январь 2006, 11:41:47 
bE(o0L, покажи код плиз

_________________

Портфолио - ЖЖ - Кулинарные рецепты - Блог о дизайне, уроки фотошоп

icq: 295346452 | Почта: info()alexey-popov.com

.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 27 Январь 2006, 14:19:48 
Kurilshik, :confused:
вон же написано. чуть выше.

_________________
можно на ТЫ.
Kurilshik
Goldmember
142
Сообщения: 12797
Зарегистрирован: 18.10.04
Откуда: Кожаное кресло
Сообщение Добавлено: 27 Январь 2006, 15:26:24 
bE(o0L, понял :beer:

_________________

Портфолио - ЖЖ - Кулинарные рецепты - Блог о дизайне, уроки фотошоп

icq: 295346452 | Почта: info()alexey-popov.com

.
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 31 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100