Jesteś tutaj: webmade.org >> porady >> php + mysql
autor: Piotr 'Redelek' Redel, ostatnia modyfikacja: 2008-04-09
Na podstawie artykułu Mateusza Zapis i odczyt pliku postaram się pokazać Wam drugie oblicze fopen. Dla przypomnienia opiszę co potrafi fopen():
Uchwyt ten może mieć dwa zastosowania file (uchwyt do lokalnego pliku) i url (uchwyt do zasobu wykorzystując wrapper-a).
Opis uchwytu fopen:
fopen (string $filename , string $mode [, bool $use_include_path [, resource $context ]] )
Lista możliwych trybów (mode):
$uchwyt = fopen ('c:\\data.txt', 'r');
Prawda, że proste? Zobaczmy jak to działa w skrypcie. Przygotowałem bardzo prostą stronę, której zadaniem jest sprawdzenie czy adres innej strony lub link do artykułu istnieje.
Na początku skryptu zajmiemy się funkcją, w której zamkniemy sprawdzanie URL-a.
function spr_url($url) { $uchwyt = @fopen($url,'r'); if($uchwyt !== false){ echo '<b><font color="green">DZIAŁA !!! )</font></b>'; }else { echo '<b><font color="red">NIE DZIAŁA ( !!!</font></b>'; } }
Funkcja ma za zadanie sprawdzenie naszej strony lub linku i podać wynik, tzn. czy działa czy nie. Dopiszmy więc formularz, do którego będzie wpisywany adres strony. Będzie on wyglądał tak:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Sprawdzanie URL</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> <meta name="generator" content="PSPad editor, www.pspad.com"> </head> <body> <form action="sprawdzanie_linku.php" method="post" enctype="text/html" name="uploadform"> <div> <div> <label for="f_url">Podaj adres URL</label> <input size="100" maxlength="100" name="f_url" class="text" type="text" value="http://"> </div> <div> <input id="upload" name="upload" class="submit" type="submit" value="Sprawdź linka"> </div> </form> </div> </body> </html>
Samego formularza html nie ma co wyjaśniać, jest bardzo prosty i przejrzysty. Składa się z jednego pola typu text i jednego klawisza submit.
Całość przedstawia się tak:
<?php function spr_url($url) { $handle = @fopen($url,'r'); if($handle !== false){ echo '<b><font color="green">OK</font></b>'; } else { echo '<b><font color="red">FILLED</font></b>'; } } #### koniec funkcji ### if(isset($_POST['upload'])) { $p_url = $_POST['f_url']; if ($p_url == ''or $p_url == 'http://') { echo '<p><span style="color:red;">BRAK URL. POPRAW</span></p>'; echo '<a href="sprawdzanie_linku.php" style="text-decoration:none;">Popraw</a>'; exit; } else { spr_url($p_url); echo '<br>'; echo '<a href="sprawdzanie_linku.php" style="text-decoration:none;">Sprawdź kolejny link..</a>'; exit; } } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Sprawdzanie URL</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> <meta name="generator" content="PSPad editor, www.pspad.com"> </head> <body> <form action="sprawdzanie_linku.php" method="post" enctype="text/html" name="uploadform"> <div> <div> <label for="f_url">Podaj adres URL</label> <input size="100" maxlength="100" name="f_url" class="text" type="text" value="http://"> </div> <div> <input id="upload" name="upload" class="submit" type="submit" value="Sprawdź linka"> </div> </form> </div> </body> </html>
Dodałem zabezpieczenie formularza, żeby przypadkiem nikt z innej strony nam się nie podszył. Zabezpieczenie polega na sprawdzeniu nazwy klawisza (submit).
Dzięki tak użytemu uchwytowi możemy sprawdzić czy działa taki url http://www.onet.pl lub link http://jakastrona/www/index.php .
Skrypt zareaguje na wszystko poprawnie i pokaże odpowiedni komunikat ujęty w kodzie. Może nie jest szybki, ale pomysły do modernizacji i przyspieszenia go pozostawiam Wam.
Źródła:
Piotr 'Redelek' Redel
szukaj: sprawdzanie adresu URL funkcja fopen wrapper
Osoby czytające tę publikację przeglądały również:
© 2004-2008 copyright by webmade.org