Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Błąd w połączeniu wyrażenia regularnego
Pcbecaw
post
Post #1





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 4.06.2011

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


  1. if(!preg_match('/^(http|ftp)([s]{0,1}):\/\/([a-z0-9]{1})((([a-z0-9-]*[-]{2})|([a-z0-9])*|([a-z0-9-]*[-]{1}[a-z0-9]+))*)((\.[a-z0-9](([a-z0-9-]*[-]{2})|([a-z0-9]*)|([a-z0-9-]*[-]{1}[a-z0-9]+))+)*)(\.([a-z0-9]{2,6})){0,1}((:[0-9]){0}|(:[1-9]{1}[0-9]*))\//iu', $_POST['avatar']) || !isset($_POST['avatar'])) $errors['znakiavatar']=true;

Powyższy kod miałby za zadanie sprawdzić, czy we wpisanym polu znajdują się dozwolone znaki (sprawdzenie URL) lub czy nie jest pusty. Jeśli ma dozwolone znaki, albo jest pusty = powinno być ok.
Jednak takie coś sprawdza url dobrze, jednak nie pozwala na wysłanie pustego pola. Dla porównania podobne sprawdzenie co do imienia:
  1. if (!preg_match('/^[a-ząćęłńóśźż]*$/ui', $_POST['imie']) || !isset($_POST['imie'])) $errors['znakiimie']=true;

i to działa. Jak zrobić, aby sprawdzenie URL też działało?

Uff... sporo męczenia, ale rozwiązaniem jest '&&' wink.gif
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Człowieku... filter_var
A poza tym dorzuć sobie warunek, że zmienna może być pusta i po sprawie...
Powód edycji: [wookieb]:


--------------------
Go to the top of the page
+Quote Post
Pcbecaw
post
Post #3





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 4.06.2011

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


filter_var nie pozwala na dodanie strony typu: "www.nazwa.pl" lub "nazwa.pl", więc zastąpiłem to odpowiednim wyrażeniem regularnym (innym, niż powyższe i dodałem warunek, że może być pusta).
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




filter_var + parse_url + empty i masz wszystko co chcesz... Nie posługiwałbym się wyrażeniami regularnym do sprawdzania formatu ze standardu RFC bo może coś przez przypadek ominąć a wtedy jest źle.


--------------------
Go to the top of the page
+Quote Post
Pcbecaw
post
Post #5





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 4.06.2011

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


coś nie wychodzi mi połączenie filter_var z parse_url. Mógłbyś/mógłby ktoś podrzucić materiał, z którego mógłbym się tego dowiedzieć, jak to zrobić? Albo jakiś mały przykład? Info z manuala nie są zbyt jasne.
Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Więc pokaż co masz.


--------------------
Go to the top of the page
+Quote Post
Pcbecaw
post
Post #7





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 4.06.2011

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


  1. if(!filter_var($_POST['www'], FILTER_VALIDATE_URL) && !empty($_POST['www'])) $errors['znakiwww']=true;

nie wiem jak do tego dodać parse_url.
Go to the top of the page
+Quote Post
wookieb
post
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  1. parse_url($_POST['www'], PHP_URL_HOST) === 'www.nazwa.pl'


--------------------
Go to the top of the page
+Quote Post
Pcbecaw
post
Post #9





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 4.06.2011

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


mi chodzi o to połączenie filter_var i parse_url w jedno, bo nie mam pojęcia jak to zrobić.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 23:59