544 PHP i MySQL dla każdego
Pozwala ono stwierdzić, czy w tabeli Klienci znajduje się już użytkownik używający adresu e-mail zapisanego w zmiennej emai 1. Jeśli taki użytkownik istnieje, nie można dokonać rejestracji. Każdy bowiem adres e-mail wprowadzony do bazy — ze względu na to, że odgrywa on jednocześnie rolę nazwy użytkownika — musi być unikalny. W takiej sytuacji jest więc wyświetlana informacja o konieczności wyboru innego adresu e-mail oraz jest ponownie wyświetlany formularz rejestracyjny. Warto w tym miejscu zauważyć, że w ponownie wyświetlonym formularzu znajdą się wartości poprzednio wprowadzone przez użytkownika. Dzieje się tak dlatego, że w kodzie formularza zawartym w pliku sklep jegister Jorm.php jako wartości pól są wykorzystywane wartości zmiennych o nazwach zgodnych z nazwami tych pól.
Jeżeli adresu e-mail wprowadzonego do formularza i przekazanego do skryptu nie ma w bazie, dane rejestracyjne mogą zostać zapisane w tabeli KI ienci. W tym celu jest wykonywane zapytanie SQL:
INSERT INTO Klienci VALUES(NULL. 'Jimie'. 'Jnazwisko'. '$ulica'. 'Jnrdanu'.
'Jnrmieszkania'. 'Jmiasto'. 'Jkod'. 'Skraj'. 'Jemail'. 'Jhaslo')
Jeśli jego wykonanie zakończy się sukcesem (funkcja mysql_query zwróci wartość true), a w efekcie do bazy zostanie zapisany nowy wiersz (funkcja mysql_affected_rows zwróci wartość 1), następuje pobranie identyfikatora nowo wprowadzonego rekordu. Jeśli natomiast wykonanie zapytania nie zakończy się pomyślnie, do przeglądarki jest wysyłany komunikat o wystąpieniu błędu.
Identyfikator nowo wprowadzonego rekordu jest pobierany za pomocą funkcji mysql_ insert_id, a jego wartość jest zapisywana w zmiennej sesji o nazwie Userld. Tym samym proces rejestracji kończony jest automatycznym zalogowaniem nowego użytkownika w systemie. Użytkownik jest o tym fakcie informowany stosownym komunikatem. Jeśli natomiast wywołanie funkcji nąysql_insert_id zakończyłoby się niepowodzeniem (funkcja zwróciłaby wartość false), użytkownik jest informowany o prawidłowej rejestracji i jest wyświetlany odnośnik do strony logowania.
Funkcja logout, jak łatwo się domyślić, przeprowadza procedurę wylogowania użytkownika. Oczywiście jej działanie zaczyna się od sprawdzenia, czy wywołujący ją użytkownik jest faktycznie załogowany, a zatem czy jest ustawiona zmienna sesji o nazwie Userld. Jeśli takiej zmiennej nie ma, jest wyświetlany odpowiedni komunikat i funkcja kończy działanie przez wywołanie instrukcji return. Jeśli jednak użytkownik był załogowany, następuje usunięcie zmiennej Userld; jest także usuwana, o ile była wcześniej ustawiona, zmienna o nazwie koszyk. Wreszcie sesja jest kończona przez wywołanie funkcji session_destroy.
W pliku sklep Junctions.php znajdą się funkcje obsługujące procedury związane z wyszukiwaniem książek, obsługą koszyka oraz składaniem zamówień. Będą to: