![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 11.05.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam pewien problem i nie potrafię znaleźć rozwiązania na internecie. Chciałem zacząć powoli i małymi kroczkami robić sobie system kont i logowania. Zrobiłem sobie prosty formularz w HTLM i zacząłem pisać do niego odpowiedni kod PHP. Mój kod potrafi już sprawdzić czy hasło oraz jego powtórzenie się zgadza (to samo z e-mailem), jednak zauważyłem przy testach że mogę równie dobrze zostawić pola puste i też będzie się to zgadzać (logiczne). Moje pytania są następujące: Jak sprawdzać czy pole nie jest puste? Jak ograniczyć użytkownika aby mógł wpisać tylko wybrane przezemnie znaki? Jak sprawdzić czy email jest poprawny? tzn czy posiada @ i domene Dołączam kody:
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
1) W html5 (może i wcześniej) wprowadzono required
<input type="text" name="username" required /> 2) Regexp 3) Regexp (email) |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 112 Pomógł: 22 Dołączył: 11.04.2010 Skąd: Tarnów Ostrzeżenie: (0%) ![]() ![]() |
Cytat Jak sprawdzać czy pole nie jest puste? required to bajer najlepiej jeszcze: Cytat Jak ograniczyć użytkownika aby mógł wpisać tylko wybrane przezemnie znaki? Jak kolega wyżej napisał: wyrażenia regularne i funkcja preg_match Cytat Jak sprawdzić czy email jest poprawny? Najlepiej mało znanym: PS. Nie używaj operatora === (zarezerwowoanego dla typów bool) do porównań tylko: == ![]() Ten post edytował session 11.05.2013, 23:59:05 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 11.05.2013 Ostrzeżenie: (0%) ![]() ![]() |
Spoko, tylko jak dokładnie to wstawić, bo jak dam tak to wyświetli że mam uzupełnić, ale mimo to wykona dalej :/
reszte waszych odpowiedzi sprawdze zaraz/jak uporam sie z tym ;d |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 386 Pomógł: 7 Dołączył: 22.04.2010 Skąd: Ziemia Ostrzeżenie: (20%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 11.05.2013 Ostrzeżenie: (0%) ![]() ![]() |
Ok, to zorumiem. jezeli nick jest pusty wyswietla echo, jak nie to jedzie dalej itd... tylko gdzie jak sprawdzi calosc i okaze sie ze wszystko jest ok to ma wykonac reszte kodu (w moim przypadku jak na razie to echo "git";). Gdzie to wstawić? ;] robie tak:
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 386 Pomógł: 7 Dołączył: 22.04.2010 Skąd: Ziemia Ostrzeżenie: (20%) ![]() ![]() |
Ten post edytował nikestylex7 12.05.2013, 00:55:30 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 11.05.2013 Ostrzeżenie: (0%) ![]() ![]() |
Gdzieś wyczytałem że ! ma zrobić "zaprzeczenie". Czyli empty normalnie zwraca gdy pusty, a !empty wyswietla gdy jest rozny od pustego. Zgodnie z tą myślą zrobiłem coś takiego:
Oczywiście niestety nie działa. Czegos nie rozumiem, czy to z wykrzyknikiem to nieprawda? |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 386 Pomógł: 7 Dołączył: 22.04.2010 Skąd: Ziemia Ostrzeżenie: (20%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 11.05.2013 Ostrzeżenie: (0%) ![]() ![]() |
Zauważyłem że to jednak nie ja mam złe myślenie tylko coś jest nie tak z moją funkcją preg_match. Wygląda ona następująco:
Gdy nickname to "a" wyświetla "GIT", gdy nickname to np. "stadi" wyświetla "nie ok". Nie rozumiem dlaczego.. część /^[a-zA-Z0-9]$/D wykonałem dokładnie tak jak na internecie. Powinna ona sprawić że znaki użyte w nickname muszą być z przedziału od a do z (duże lub małe) lub/oraz od 0 do 9. Dlaczego zatem coś się psuje i działa dobrze gdy nickname jest jednoznakowy (pasujący do klucza), a nie działa gdy nickname składa się z wielu znaków (także pasujących do podanego klucza)? EDIT: to samo tyczy sie polskich znakow Ten post edytował StadiPL 12.05.2013, 01:37:56 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 386 Pomógł: 7 Dołączył: 22.04.2010 Skąd: Ziemia Ostrzeżenie: (20%) ![]() ![]() |
|
|
|
![]() ![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 11.05.2013 Ostrzeżenie: (0%) ![]() ![]() |
Jako że w tym temacie wszystko już jest ogarnięte, to wrzucam efekt końcowy ;] Może komuś się przyda do przeanalizowania
register.php
register_function.php
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Nie robisz żadnych wcięć tylko tak wszystko w jednej linii zawsze?
Co do zmiennych zawierających tekst błędu, to trzymałbym to osobiście w jakiejś osobnej klasie i umieściłbym je tam jako stałe. Dodatkowo z tego co mi wiadomo nie używa się już <br /> na rzecz css. Teraz powyższy kod może Ci się wydawać trochę chaotyczny, ale w przyszłości na pewno nie poprzestaniesz tylko na echo. Ten post edytował Szymciosek 12.05.2013, 08:56:31 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 112 Pomógł: 22 Dołączył: 11.04.2010 Skąd: Tarnów Ostrzeżenie: (0%) ![]() ![]() |
Widze, że wszystko już zostało wyjaśnione, ale odnosząc się jeszcze do pierwszego postu:
W celu zachowania spójności można by to też w taki sposób zapisać, chociaż poprawność tego kodu jest dyskusyjna (to tylko dla ścisłości). Stosowanie jak w powyższym przykładzie elseif nie jest też do końca dobre dla użytkownika, ponieważ jeśli nie wypełni pierwszego pola, źle przepisze hasła, użyje niedozwolonych znaków w haśle i w nicku, zapomni o domenie w adresie email, będzie musiał wypełniać formularz 6 razy za każdym razem przepisując dwa razy hasła, jak nie cały formularz to krew go zaleje i to przy założeniu, że nie pomyli się gdzieś w trakcie, więc prędzej się nie zarejestruje. Błędy należy wyświetlać wszystkie jednocześnie, więc konstrukcja: if {} if{} do tego należy dodać $error=false; i zmieniać jej wartość na true jeśli wystąpi bład, a na końcu: Ten post edytował session 12.05.2013, 09:56:14 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 14:20 |