Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL][HTML] Tworzenie sesji
wiedzma92
post
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)

  1. <?php
  2. $id = $_SESSION['id'];
  3. $wylogowanie = $_POST['wylogowanie'];
  4.  
  5. include('baza_MySQL.php');
  6. $zapytanie = $mysql->prepare("SELECT * FROM uzytkownicy WHERE id = :id");
  7. $zapytanie->bindValue(':id', $id, PDO::PARAM_INT);
  8. $zapytanie->execute();
  9. $uzytkownik = $zapytanie->fetch();
  10.  
  11. echo 'Jesteś zalogowany. ID: '.$uzytkownik.'<br>';
  12. ?>
  13.  
  14. <!DOCTYPE html>
  15. <html>
  16. <head>
  17. <title>Wyloguj</title>
  18. <meta charset="utf-8">
  19. </head>
  20. <body>
  21.  
  22. <?php
  23. if (isset($_POST['wylogowanie'])) {
  24. header('Location: logowanie.php');
  25. }
  26. ?>
  27.  
  28. <form method="post" action="">
  29. <input type="submit" id="wylogowanie" name="wylogowanie" value="Wyloguj"></input>
  30. </form>
  31.  
  32. </body>
  33. </html>


Ten post edytował wiedzma92 17.03.2016, 14:05:10
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Geniesis
post
Post #2





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.
Go to the top of the page
+Quote Post
wiedzma92
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 17.03.2016

Ostrzeżenie: (0%)
-----


Cytat(Geniesis @ 17.03.2016, 16:21:29 ) *
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)
  1. <?php
  2. $login = strip_tags($_POST['login']);
  3. $haslo = strip_tags($_POST['haslo']);
  4. ?>
  5. <!DOCTYPE html>
  6. <html lang="pl">
  7. <head>
  8. <meta charset="utf-8">
  9. <title>Logowanie</title>
  10. </head>
  11. <body>
  12. <?php include('baza_MySQL.php');
  13. $zapytanie = $mysql->prepare("SELECT * FROM uzytkownicy WHERE login = :login && haslo = :haslo");
  14. $zapytanie->bindValue(':login', $login, PDO::PARAM_STR);
  15. $zapytanie->bindValue(':haslo', $haslo, PDO::PARAM_STR);
  16. $zapytanie->execute();
  17. $uzytkownik = $zapytanie->fetchALL();
  18.  
  19. if (count($uzytkownik) > 0) {
  20. header('Location: wylogowanie.php');
  21. } else {
  22. echo 'Nieprawidłowe dane logowania';
  23. }
  24. ?>
  25.  
  26. <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  27.  
  28. <div class="required field">
  29. <label>Login</label>
  30. <input type="text" name="login" id="login" value="">
  31. </div>
  32.  
  33. <div class="required field">
  34. <label>Hasło</label>
  35. <input type="text" name="haslo" id="haslo" value="">
  36. </div>
  37. <input type="submit" id="send" name="send" value="Wyślij"></input>
  38. </form>
  39. </body>
  40. </html>
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 08:39