Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Warunek na poprawny LINK
Forum PHP.pl > Forum > Przedszkole
Deusx
Witam, mam w swoim serwisie możliwość zmiany wyglądu zewnętrznym linkiem.

Jednak nie umiem do tego stworzyć zabezpieczenia, aby w przypadku wpisania złego "linku" wyskoczył komunikat.

Link powinien kończyć się znakiem " / "

czyli:

http://domena.pl/skin/

Może być również tak
http://domena.pl/cos/ktos/skin/ (lub podobne)


Proszę o pomoc.

Jeżeli jednak nie da się zrobić na to odpowiedniego warunku, to przynajmniej zablokowanie TYLKO znaków "," ">" "<" (i podobnych, tak żeby link przeszedł).
H4eX
MOD REWRITE, zmienia się kod w .htaccess
Deusx
Zupełnie nie o to mi chodzi, to się wpisuje do formularza.
H4eX
To napisz jaśniej?
Deusx
Napisałem bardzo dokładnie, trzeba umieć czytać ze zrozumieniem.
Ulysess
ten typ tylko nabija posty pisząc pierwsze co mu do głowy przyjdzie..
Może sprawdzaj czy ost znak w linku to slash a jeśli nie to dopisuj.
kapuch
preg_match
http://www.php.net/manual/en/function.preg-match.php
3 przyklad

PS. Co masz na mysli piszac "w przypadku zlego linku"?
Tzn ze jak ktos wpisze np "ajdfdxkgnflkg" to ma to wykryc, czy chodzi o to aby link byl poprawyny, czyli prowadzil do istniejeacej strony?
Jesli to 1, to wystarczy sam preg_match, jesli zas drugie to dodaj do tego jeszcze file_get_contents.
Np.
  1. if(preg_match('@^(?:http://)?([^/]+)@i', $_POST['adres']))
  2. {
  3. if(@file_get_contents($_POST['adres']))
  4. {
  5. echo 'strona ok';
  6. }
  7. else
  8. {
  9. echo 'strona nie istnieje';
  10. }
  11. }
  12. else
  13. {
  14. echo 'zly format adresu';
  15. }


edit: zapomnialem dodac @ przed file_get_contents winksmiley.jpg
Deusx
No dobrze, tylko jeszcze nie umiem tworzyć tam "warunków"

  1. preg_match('@^(?:http://)?([^/]+)@i',"http://www.php.net/index.html", $matches);


To mi zmieni na
php.net (przynajmniej manual tak mówi winksmiley.jpg )

A mi ma nie zmieniać, tylko sprawdzić,
Jeżeli link nie będzie się kończył znakiem "/" lub zawierał znaki specjalne (poza ":" oraz "/" [do http]) to komunikat i die();.
kapuch
Cytat(Deusx @ 4.07.2010, 20:33:35 ) *
No dobrze, tylko jeszcze nie umiem tworzyć tam "warunków"

  1. preg_match('@^(?:http://)?([^/]+)@i',"http://www.php.net/index.html", $matches);


To mi zmieni na
php.net (przynajmniej manual tak mówi winksmiley.jpg )

A mi ma nie zmieniać, tylko sprawdzić,
Jeżeli link nie będzie się kończył znakiem "/" lub zawierał znaki specjalne (poza ":" oraz "/" [do http]) to komunikat i die();.

to ci zwroci tablice z poprawnym ciagiem, ale nie musisz jej uzywac.
wystarczy dac

  1. if(preg_match('@^(?:http://)?([^/]+)@i',"http://www.php.net/index.html"))
  2. {}

wtedy gdy warunek zostanie spelniony (ciag bedzie odpowiadal matchowi) to wykona sie to co w ifie

preg_match nic nie zmienia, to preg_replace zmienia winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.