Sprawdzanie poprawności dodanego linku RS


(Sobladen) #1

Witam

Jak sprawdzić czy dodany link w formularzu jest prawidłowy?

http://rapidshare.com/files/330051615/S ... .part5.rar

Czyli musi sprawdzić czy na początku jest: http://rapidshare.com/files/

I na końcu: .rar

Próbowałem coś takiego:

$linki2 = $_POST['linki'];


if (eregi("^http://rapidshare.com/files/[a-z0-9-]/[a-z0-9-]$", $linki2)) {

Ale nie działa;/ Do tego skryptu przesyłane są metoda post linki

if(isset($_GET['linki']) && $_GET['linki']=='dopisz') {


$linki2 = $_POST['linki'];


if (eregi("^http://rapidshare.com/files/[a-z0-9-]/[a-z0-9-]$", $linki2)) {



    $linki = $_POST['linki'];

    $tablica = explode("\r\n", $linki);


    foreach($tablica as $klucz) {

			mysql_query("INSERT INTO `pliki` VALUES('', '$klucz')") or die('Błąd: '.mysql_error().'');


} else { echo 'Podano błędne linki! }

}[/code]

Proszę o modyfikacje tego skryptu.

Z góry dzieki.


(Sitemaster) #2

yyy.... ale

primo - na rapidzie pliki mają też inne rozszerzenia niż rar

secundo - czy aby na pewno potrzebujesz regexpa (którego i tak błędnie konstruujesz) ? Nie wystarczy np. funkcja strpos lub pokrewna ?

tertio - taka validacja jest i tak o kant wiadomo czego potłuc, bo nie sprawdza czy plik faktycznie jest dostępny

zobacz przykładowo http://rapidshare.com/files/310051615/costamcostam.rar - link wygląda ok, a wejdź sobie zobacz co pod nim się kryje!

quatro - funkcje ereg / eregi są zdeprecjonowane, jak już musisz korzystać z regexpa, to z preg_match / preg_match_all

Lepiej pobierz sobie stronę curlem albo przez file_get_contents i sprawdź po jej zawartości czy link jest ok, czy tez nie