[PHP] - Jak dodać walidację do formularza rejestracji?


(jacko1998) #1

Tutaj miałem problem z poprawnym wysłaniem danych do bazy, przez walidację którą napisałem(kod):

    if(isset($_POST['reguser'])){$username)){$errors[] = 'You have to type your username !';

(kostek135) #2

Pisałem już w drugim wątku, w momencie gdy wysyłasz submit ustawiasz reguser i nie dochodzisz do warunku wykonania SQL. Twoje pół-puste rekordy nie dodają się jak klikniesz submit, ale jak wejdziesz na stronę (wpisz url w przeglądarkę i zobacz).

Innymi słowy query powinno zostać wykonane jak errors[] jest puste. Pozbądź się też else.

PS

Walidacja w JS może służyć tylko jako ułatwienie wprowadzania danych dla zwykłego usera (responsywność, zmniejszenie liczby wymienianych danych z serwerem), ale nigdy jako zabezpieczenie.


(jacko1998) #3

Jakoś się udało :o , ale mam jeszcze jeden problem, Mianowicie, chciałbym zrobić tak, że jak user wpisze jakiś login i on będzie zajęty, to żeby go nie zarejestrowało. Próbowałem z takim zapytaniem, ale nie działa:

mysql_query("INSERT INTO users (username, password) VALUES ('$_POST[username]', '$_POST[password]') WHERE NOT EXISTS (SELECT username FROM users WHERE username='$_POST[username]') LIMIT 1"); [/code]

(kostek135) #4

Masz dwie opcje:

  1. http://stackoverflow.com/a/3164741

  2. Rozbij na dwa zapytania. Pierwszy wybierze usera o podanym nicku i wykona na nim COUNT. Jeśli zwrócona wartość wynosi zero (nie znaleziono rekordu o tym nicku), to dodajesz użytkownika (czyli drugie zapytanie z INSERT). Przy czym ta opcja musi istnieć jako element jednej transakcji. Gdyż przykładowo scheduler mógłby przy równoległym przetwarzaniu ustawić do wykonania to tak:

    Select1 -> Select2 -> Insert1/Insert2.


(jacko1998) #5

Widzisz o której post wysłany ? Tak do tej pracowałem nad kodem, ale w końcu się udało :slight_smile: Dzięki wielkie za pomoc !