Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sprawdzenie czy URL istnieje
AoW
post
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 3.08.2005

Ostrzeżenie: (0%)
-----


Witam,

chciałbym napisać skrypt, który sprawdzi na mojej stronie np. abc.pl czy dany link np http://forum.php.pl/index.php?showforum=27 przekierowuje do strony ktora istnieje, czy może przekierowuje do strony błędu np. link http://forum.php.pl/index.php?showforum=274 nie istnieje i przekierowuje do strony z informacja "Link który zaprowadził cię do tej strony jest zły lub nieaktualny."

Reasumujac, chcialbym na swojej stronie sprawdzic, czy dany link przekieruje mnie do strony z zawartoscia prawidlowa, lub do strony bledu.

Pozdrawiam
AoW
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
netmare
post
Post #2





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

Ostrzeżenie: (0%)
-----


poczytaj o fsockopen() w php i metodzie HEAD w HTTP

Edit: W sumie kod kolegi powinien Ci pomóc Temat: Logowanie na forum skryptem

tylko zamień metodę POST na HEAD i w tym co odczytasz w odpowiedzi serwera sprawdź czy jest ten link czy go nie ma

Ten post edytował netmare 7.03.2008, 12:26:59
Go to the top of the page
+Quote Post
AoW
post
Post #3





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 3.08.2005

Ostrzeżenie: (0%)
-----


Ok, dziekuje za nakierowanie,

zaczynam czytac i testowac. Pierwszy problem, to zastanawiam sie, czy funkcja fsockopen() działa dla podstron.

kiedy uruchamiam funkcje:
  1. <?php
  2. echo fsockopen("forum.php.pl/index.php?showforum=27", 80, $errno, $errstr, 30);
  3. ?>


Otrzymuję wynik:
Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: hostname nor servname provided, or not known in /php/22/index.php on line 8

Warning: fsockopen() [function.fsockopen]: unable to connect to forum.php.pl/index.php?showforum=27:80 (Unknown error) in /php/22/index.php on line 8


kiedy uruchamiam funkcje:
  1. <?php
  2. echo fsockopen("forum.php.pl", 80, $errno, $errstr, 30);
  3. ?>


Otrzymuję wynik:
Resource id #2

Oczywiście na razie działam trochę po omacku. Ale wazne, ze mam jakis punkt zaczepienia.

Ten post edytował AoW 7.03.2008, 12:51:55
Go to the top of the page
+Quote Post
netmare
post
Post #4





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

Ostrzeżenie: (0%)
-----


nie, nie działa fsockopen nawiązuje połączenie z serwerem, a podstrony są obsługiwane przez metody HTTP

Ten post edytował netmare 7.03.2008, 12:53:45
Go to the top of the page
+Quote Post
Cezar708
post
Post #5





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


potestuj sobie z get_headers(), Myślę, że do Twoich potrzeb całkowicie wystarczy.
Go to the top of the page
+Quote Post
AoW
post
Post #6





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 3.08.2005

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $url='forum.php.pl';
  3.  
  4. $arrHeaders = get_headers($url);
  5. if ( $arrHeaders[0] == 'HTTP/1.1 200 OK' ){
  6. echo "url $url jest jest dostępny";
  7. } else {
  8. echo "url $url nie jest dostępny błąd: `{$arrHeaders[0]}`";
  9. }
  10. ?>


Czy w takim razie powyższy kod powinien wykazywać, że url jest dostępny?

Umnie pokazuje błąd, nie wiem co jest nie tak.
Go to the top of the page
+Quote Post
Cezar708
post
Post #7





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


tak dokładnie
HTTP status 200 oznacza że url istnieje i jest dostępny z tej lokalizacji, z której wykonywałeś sprawdzanie skryptem
Go to the top of the page
+Quote Post
AoW
post
Post #8





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 3.08.2005

Ostrzeżenie: (0%)
-----


a u mnie wynik wygląda taki:

  1. <?php
  2. Warning: get_headers() [function.get-headers]: This function may only be used against URLs. in /php/22/index.php on line 12
  3. url forum.php.pl nie jest dostępny błšd: ``
  4. ?>


Skrypt jest wykonywany z home.pl, gdzie jest php5, wiec chyba powinno grac.

Ten post edytował AoW 7.03.2008, 13:19:27
Go to the top of the page
+Quote Post
netmare
post
Post #9





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

Ostrzeżenie: (0%)
-----


pokaż KOD anie błąd (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
AoW
post
Post #10





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 3.08.2005

Ostrzeżenie: (0%)
-----


w sumie kod pokazałem, wklejam całość:

  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5.  
  6. <?php
  7.  
  8. /* echo fsockopen("forum.php.pl", 80, $errno, $errstr, 30); */
  9.  
  10. $url='forum.php.pl';
  11.  
  12. $arrHeaders = get_headers($url);
  13. if ( $arrHeaders[0] == 'HTTP/1.1 200 OK' ){
  14. echo "url $url jest jest dostępny";
  15. } else {
  16. echo "url $url nie jest dostępny błąd: `{$arrHeaders[0]}`";
  17. }
  18.  
  19. ?>
  20.  
  21. </body>
  22. </hmtl>
Go to the top of the page
+Quote Post
Cezar708
post
Post #11





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat
URL składa się z części określającej rodzaj zasobu/usługi (ang. scheme), dwukropka i części zależnej od rodzaju zasobu (ang. scheme-specific part). [źródło]



czyli adres url musi mieć podany protokół:

forum.php.pl -> nie jest poprawnym URL,

http://forum.php.pl -> to jest poprawny URL (z http:// na początku)

wtedy wszystko zadziała

Pozdrawiam
Go to the top of the page
+Quote Post
AoW
post
Post #12





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 3.08.2005

Ostrzeżenie: (0%)
-----


Warning: get_headers() [function.get-headers]: URL file-access is disabled in the server configuration in /php/22/index.php on line 12

Warning: get_headers() [function.get-headers]: This function may only be used against URLs. in /php/22/index.php on line 12
url http://forum.php.pl nie jest dostępny błšd: ``

  1. <?php
  2.  
  3. /* echo fsockopen("forum.php.pl", 80, $errno, $errstr, 30); */
  4.  
  5. $url='http://forum.php.pl';
  6.  
  7. $arrHeaders = get_headers($url);
  8. if ( $arrHeaders[0] == 'HTTP/1.1 200 OK' ){
  9. echo "url $url jest jest dostępny";
  10. } else {
  11. echo "url $url nie jest dostępny błąd: `{$arrHeaders[0]}`";
  12. }
  13.  
  14.  
  15. ?>


probowalem tez z www i bez


EDIT! Sprawdziłem na innym serwerze i zadziałało. Tak więc dziękuję, kombinuję dalej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował AoW 7.03.2008, 13:32:14
Go to the top of the page
+Quote Post
Cezar708
post
Post #13





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


dokłądnie przekleiłem Twój kod i wynika mam taki:

Kod
url http://forum.php.pl jest jest dostępny


wynika z tego, że home ma zablokowane jakieś sprawdzanie z swojej konfiguracji. funkcja korzysta ze strumieni... być może jakaś tamtejsza polityka bezpieczeństwa na to nie pozwala. Napisz do nich i zapytaj dlaczego to nie działa. Może Ci to odblokują.

Pozdrawiam
Go to the top of the page
+Quote Post
netmare
post
Post #14





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

Ostrzeżenie: (0%)
-----


chyba niestety musisz próbować przez fsockopen() (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) , @Cezar708 fajna ta funkcja get_headers()

  1. <?php
  2. $url=fsockopen("forum.php.pl",80);
  3. $header="HEAD /index.php HTTP/1.1r\n";
  4. $header.="Host: forum.php.plr\n";
  5. $header.="Connection: Closer\n";
  6. $header.="r\n"
  7. $reply=array();
  8. fwrite($url,$header);
  9. while(!feof($url)) $reply[]=fgets($url);
  10. ?>

i w reply[0] powinieneś mieć tą samą linię co po tych headers
Nie tesotwałem może coś wyskoczyć (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Edit: fsockopen również może być zablokowane na home.pl

Ten post edytował netmare 7.03.2008, 13:39:25
Go to the top of the page
+Quote Post
AoW
post
Post #15





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 3.08.2005

Ostrzeżenie: (0%)
-----


NA innym serwerze poszło.
Teraz analizuję sekcję head w tych 2 różnych linkach. Widze różnicę w elemencie [5], tak więc jest światełko (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Zaraz przetestuję na serwisie, na którym chcę to wdrożyć i dam znać, czy uda mi się wykorzystać tą funkcję.
Go to the top of the page
+Quote Post
specialplan
post
Post #16





Grupa: Zarejestrowani
Postów: 206
Pomógł: 21
Dołączył: 1.09.2006
Skąd: Edinburgh

Ostrzeżenie: (0%)
-----


A moze: checkdnsrr" title="Zobacz w manualu PHP" target="_manual?
Go to the top of the page
+Quote Post
netmare
post
Post #17





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

Ostrzeżenie: (0%)
-----


@specialplan on chcę sprawdzić stonę a nie hosta
Go to the top of the page
+Quote Post
AoW
post
Post #18





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 3.08.2005

Ostrzeżenie: (0%)
-----


Wszystko gra, działa tak jak chciałem.

Dziękuję pięknie za pomoc.
Pozdrwiam
AoW
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 00:22