Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 17.03.2016 Ostrzeżenie: (0%)
|
Witam. Od kilku tygodni bawię się w programowanie i chyba porwałam się z motyką na Słońce. Stworzyłam formularz logowania, który działa bez zarzutu, teraz chcę napisać kod, który po zalogowaniu utworzy sesję z ID użytkownika i na jej podstawie przeprowadzi proces autoryzacji usera, znajdującego się w bazie MySQL. Niestety, za nic mi to nie wychodzi...
W skrypcie jest na pewno masa błędów, ale wierzę, że ktoś z szanownych kolegów i koleżanek forumowych wyjaśni mi, co mam zrobić, żeby było dobrze (IMG:style_emoticons/default/smile.gif)
Ten post edytował wiedzma92 17.03.2016, 14:05:10 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 5 Dołączył: 4.12.2013 Skąd: Śląsk Ostrzeżenie: (0%)
|
Witam, całość wygląda dosyć niekompletnie i nie logicznie jeżeli dobrze zrozumiałem Twoje intencje,
1)Przed logowaniem powinno zostać sprawdzone czy użytkownik już nie jest zalogowany a) jest -> nie można wejść na stronę z formularzem -przekierowanie -opcjonalnie komunikat błędu b)nie jest -> pojawia się formularz -wyświetlanie formularza -po wciśnięciu "submit" =validacja danych =polecenie SELECT id, username, password FROM db_name.table_name u WHERE u.username=:username AND u.password=:password LIMIT 1 (oczywiście wszystko bindowane!) *jeżeli zwróci puste to błąd logowania (nie prawidłowe dane) *jeżeli zwróci wynik to przechodzi dalej = ustawienie sesji (id, username) 2)Przed wylogowaniem powinno zostać sprawdzone czy użytkownik już jest zalogowany a) nie jest -> nie można wejść na stronę z formularzem -przekierowanie -opcjonalnie komunikat błędu b)jest -> pojawia się przycisk -po naciśnięciu usunięcie sesji użytkownika -przekierowanie Ten post edytował Geniesis 17.03.2016, 14:53:25 |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 17.03.2016 Ostrzeżenie: (0%)
|
W skrócie chodzi mi o to, żeby po przekierowaniu z formularza logowania do strony z wylogowaniem (kod, który wrzuciłam), pokazało mi się ID użytkownika, który się zalogował. Dodam tylko, że formularzem logowania jest wszystko okej i kiedy wprowadzam prawidłowe dane z bazy MySQL (login, hasło), loguję się i zostaję przekierowana na stronę wylogowanie.php. Szkopuł w tym, że nie widzę ID zalogowanego użytkownika… :/
Ten post edytował wiedzma92 17.03.2016, 16:07:19 |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 5 Dołączył: 4.12.2013 Skąd: Śląsk Ostrzeżenie: (0%)
|
W miejscu gdzie sprawdzasz czy dane są poprawne (moment logowania) leci zapytanie do bazy danych (w końcu musisz skąś wiedzieć czy dane są ok), w SELECT dodaj 'id', i nadpisz wtedy sesję $_SESSION['id'] = $userIdFromDb, wtedy powinnaś mieć dostęp do owego id.
Zmienna $userIdFromDb to id wyniku z bazy danych. Nie wiem co dokładnie się dzieje podczas logowania (przed kodem, który podałaś), więc to trochę wróżenie z fusów. Dodam, że nie powinno mieszać się FRONT endu z BACK end'em, tak więc kod PHP powinien być w osobnym pliku. |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 17.03.2016 Ostrzeżenie: (0%)
|
Dodam, że nie powinno mieszać się FRONT endu z BACK end'em, tak więc kod PHP powinien być w osobnym pliku. Dzięki za radę! (IMG:style_emoticons/default/smile.gif) Dla pełnego obrazu podrzucę kod z formularzem logowania (IMG:style_emoticons/default/smile.gif)
|
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 5 Dołączył: 4.12.2013 Skąd: Śląsk Ostrzeżenie: (0%)
|
Dodam, że input z hasłem powinien mieć type="password", hasło powinno być potrakowane najlepiej md5 Podczas rejestracji tak samo zapisywane w bazie z użyciem md5. Edit: pierdoła: jezeli się tego trzymać to zrobiłbym raczej warunek:
Edit2: jeżeli nie znasz standardów: https://github.com/php-fig/fig-standards/tr...master/accepted Ten post edytował Geniesis 17.03.2016, 16:51:37 |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 17.03.2016 Ostrzeżenie: (0%)
|
Chyba jestem jakaś ograniczona… Wstawiam ten fragment kodu i nic, wciąż przekierowuje mnie do stronki z przyciskiem „Wyloguj“, nie pokazując ID użytkownika.
BTW Dzięki za wszystkie rady (IMG:style_emoticons/default/smile.gif) |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 5 Dołączył: 4.12.2013 Skąd: Śląsk Ostrzeżenie: (0%)
|
Po przekierowaniu na stronę wylogowanie.php próbowałaś użyć var_dump() na $_SESSION? Zwróciło Ci to dane czy pustą zmienną?
Zrobiłem króciutki skrypt na podstawie Twojego:
wylogowanie.php
Ten post edytował Geniesis 17.03.2016, 18:04:20 |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 17.03.2016 Ostrzeżenie: (0%)
|
Ech, u mnie cały czas zwraca pustą tablicę array(0) { }. Ale popracuję jeszcze nad tym, bo sporo nowych rzeczy mnie nauczyłeś (IMG:style_emoticons/default/smile.gif)
|
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 5 Dołączył: 4.12.2013 Skąd: Śląsk Ostrzeżenie: (0%)
|
Ustaw testową zmienną sesyjną przed przekierowaniem np. $_SESSION['test'] = 'test'; i w wylogowanie.php sprawdź czy się pojawi, jeżeli tak to niepoprawnie deklarujesz obecnie sesję, jeżeli zwróci pustą to trzeba będzie pomyśleć dalej.
|
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 17.03.2016 Ostrzeżenie: (0%)
|
Kiedy pisałeś ostatniego posta, udało mi się rozwiązać problem (IMG:style_emoticons/default/smile.gif) Do instrukcji warunkowej z mojego kodu, dodałam rozpoczęcie sesji i wszystko działa. Dziękuję za pomoc i cierpliwość (IMG:style_emoticons/default/smile.gif)
|
|
|
|
![]() ![]() |
|
Aktualny czas: 20.12.2025 - 17:48 |