Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL][HTML] Tworzenie sesji
wiedzma92
post 17.03.2016, 13:48:21
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 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 17.03.2016, 18:02:06
Post #2





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:
  1. ini_set("display_errors", 1);
  2. require_once('db.php');
  3. if(isset($_POST['submit'])) {
  4. $db = new ConnectionSQL(); //
  5. $conn = $db->connectWithDb(); // dane do połączenia
  6. $stmt = $conn -> prepare('SELECT * FROM user WHERE `username`=:u AND `password`=:te_emitikontki LIMIT 1');
  7. $stmt->bindValue(':u', $_POST['u'], PDO::PARAM_STR);
  8. //pomijam md5()
  9. $stmt->bindValue(':te_emitikontki', $_POST['p'], PDO::PARAM_STR);
  10. $stmt->execute();
  11. $resultDb = $stmt ->fetchAll(PDO::FETCH_ASSOC);
  12. if (count($resultDb) > 0) {
  13. $_SESSION['id'] = $resultDb[0]['id']; // ustawiam dane do sesji
  14. header('Location: wylogowanie.php');
  15. } else {
  16. echo 'Nieprawidłowe dane logowania';
  17. }
  18.  
  19. }
  20. ?>
  21. <!DOCTYPE html>
  22. <html>
  23. <head>
  24. <title></title>
  25. </head>
  26. <body>
  27. <form method="POST">
  28. <input type="text" name="u">
  29. <input type="password" name="p">
  30. <button name="submit" type="submit">sub</button>
  31. </body>
  32. </html>

wylogowanie.php
  1. <?php
  2. var_dump($_SESSION); //wyświetla ["id"]=> string(2) "moje id z bazy"


Ten post edytował Geniesis 17.03.2016, 18:04:20
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 Wersja Lo-Fi Aktualny czas: 23.06.2025 - 15:59