76696 skanuj0381 (2)

76696 skanuj0381 (2)



Rozdział 14. ♦ Autoryzacje 395

Kod funkcji rejestruj rozpoczyna się od sprawdzenia poprawności przekazanych danych. Można by zadać pytanie, po co ponownie sprawdzać dane, skoro czynność ta była już raz wykonana przez skrypty JavaScript w formularzu rejestracyjnym? Niestety nigdy nie możemy mieć pewności, jakie dane otrzyma serwer i czy na pewno pochodzą one właśnie z formularza. Mogą przecież zostać wysłane w inny sposób, np. napisaną przez kogoś oddzielną aplikacją współpracującą z interfejsem naszego serwisu.

Takiej ewentualności nie sposób wykluczyć i zawsze trzeba weryfikować otrzymane przez skrypt dane. Sprawdzamy zatem, czy nazwa i hasło mają poprawne długości oraz czy imię, nazwisko i e-mail nie są pustymi ciągami znaków. Jeśli stwierdzone zostaną nieprawidłowości, w zależności od sytuacji zwracana jest jedna z wartości:

♦    BAD_USER_NAME_LENGTH,

♦    BADJJS ER_PASS_LENGTH,

♦    EMPTY_FIELDS.

Jeśli jednak dane przekazane funkcji spełniają założone warunki, jest wykonywane połączenie z bazą oraz jest wybierana baza test. W razie niepowodzenia którejkolwiek z wymienionych czynności zwracana jest wartość SERVER_ERROR oznaczająca wystąpienie błędu serwera.

Jeśli jednak połączenie z serwerem MySQL zostanie nawiązane, w pierwszej kolejności sprawdzamy, czy w bazie istnieje użytkownik o nazwie przekazanej w postaci parametru nazwa. Czynność ta jest wykonywana przez zapytanie SQL w postaci:

SELECT COUNTC*) FROM Users WHERE Nazwa-'Jnazwa'

Jeżeli wynik takiego zapytania jest większy od zera, czyli w bazie istnieje już użytkownik o nazwie wskazywanej przez parametr nazwa, jest zwracana wartość USER_NAME_ ALREADY_EXISTS, nowy wpis nie może bowiem zostać wykonany. Jeśli natomiast wynikiem powyższego zapytania jest zero, może zostać wykonane zapytanie wstawiające dane do tabeli, w postaci:

INSERT INTO Users VALUES(NULL. 'Jnazwa', 'Jhaslo'. 'Jimie'. 'Jnazwisko'. 'Jemail')

Po wykonaniu tego zapytania następuje sprawdzenie, czy faktycznie został dodany jeden wiersz (ściślej, czy miało ono wpływ na jeden wiersz w tabeli bazy danych). Służy do tego, wykorzystywana już przez nas, funkcja mysql_affected_rows. W przypadku gdy wartość zwrócona przez mysql_affected_rows jest różna od 1, funkcja rejestruj zwraca wartość SERVER_ERROR, natomiast jeśli wartością zwróconą przez mysql_affected_ rows jest 1, funkcja rejestruj zwraca wartość OK, kończąc tym samym swoje działanie.


Wyszukiwarka

Podobne podstrony:
skanuj0374 (3) Rozdział 14. ♦ Autoryzacje 389 Listing 14.8. Kod formularza umożliwiającego wprowadze
skanuj0368 (2) Rozdział 14. ♦ Autoryzacje 383 else if($vai — 1){ S_SESSI0N[ komunikat ] » "Błąd
skanuj0376 (3) Rozdział 14. ♦ Autoryzacje 391 z parametrem type ustawionym na button. Do zdarzenia o
skanuj0378 (2) Rozdział 14. ♦ Autoryzacje $query - "INSERT INTO Users VAIUESC: $query .= "
56459 skanuj0366 (2) Rozdział 14. ♦ Autoryzacje 381 W jego wyniku zostanie zwrócony jeden wiersz, za
13704 skanuj0364 (2) Rozdział 14. ♦ Autoryzacje 379 Rozdział 14. ♦ Autoryzacje 379 Listing 14.2. Skr
62981 skanuj0372 (2) Rozdział 14. ♦ Autoryzacje 387 ♦    nazwa użytkownika (konta), ♦
63897 skanuj0370 (2) Rozdział 14. ♦ Autoryzacje 385 zmienna załogowany jest ustawiona, do przeglądar
skanuj0452 (2) Rozdział 17. ♦ System news Kod rozpoczyna się od wywołania funkcji session_start, doł

więcej podobnych podstron