Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zapis sesji do bazy danych i odczyt.
Forum PHP.pl > Forum > Przedszkole
imashjan82
Jak zapisać sesje do bazy danych (login), a potem ją odczytywać ? Potrzebne mi to po zalogowaniu się do strony. Tak aby móc potem na każdej ze stron odczytać dane uzytkownika.
b4rt3kk
Nie da się sesji zapisać do bazy danych, co innego zmienne sesyjne, o ile ma to jakiś sens. Na stronie logowania:

  1. $_SESSION['login'] = 'jakis tam login'; // przypisz wartość prawdziwego użytkownika, pobraną z bazy danych
  2. echo $_SESSION['login'];


Użycie sesji na innej podstronie:

  1. echo $_SESSION['login']; // zmienna przechowuję wartość z poprzedniej podstrony
imashjan82
Okej, to rozumiem i wiem. Ale mi nie odczytuje sesji, miedzy stronami. Loguje sie wchodząc powiedzmy na index.php wyświetla mi wszystko o to co chce, ale jak zmienie na powiedzmy konto.php,to juz traci sesje, i nie wyświetla mi nic. Musze miedzy stronami przesyłać sesje? Chyba nie?. To wiedz jak to zrobić aby na każdej stronie mi otczytywało sesje. tak wiem
na początku wyświetlić albo wkleić to
  1. $_SESSION[''nazwa_sesji]
.
b4rt3kk
Na każdej podstronie musisz otworzyć sesję, dodając na samym początku:

imashjan82
To jest plik odbierający dane z formularza logowania:
  1. // tu jest połaczenie z bazą danych
  2. $login = $_SESSION['login'];
  3. if(isset($_POST['Login'])) {
  4.  
  5.  
  6. if(mysql_num_rows(mysql_query("SELECT login, password
  7. FROM users WHERE login = '".$_POST['login']."'
  8. && password = '".$_POST['password']."' ")) > 0) {
  9.  
  10.  
  11. if(mysql_num_rows(mysql_query("SELECT * FROM users
  12. WHERE login = '".$_POST['login']."'
  13. && password = '".$_POST['password']."' ")) > 0 ) {
  14.  
  15.  
  16. $_SESSION['zalogowany'] = true;
  17. $_SESSION['login'] = $_POST['login'];
  18. $_SESSION['password'] = $_POST['password'];
  19.  
  20. header("Location: adresstrony/wejsce.php");
  21. } else {
  22.  
  23. echo "zle haslo lub login. <a href=\"../dostep.php\">Back</a>";
  24. }
  25. } else {
  26. echo"zle haslo lub login <a href=\"../dostep.php\">Back</a>";
  27. }
  28. } else {
  29. echo". <a href=\"../dostep.php\">Back</a>";
  30. }
  31. ?>
  32.  


Plik wejsce wygląda tak:
  1. <?
  2. $login = $_SESSION['login'];
  3. if(isset($_POST['Login'])) {
  4.  
  5.  
  6. if(mysql_num_rows(mysql_query("SELECT login, password
  7. FROM users WHERE login = '".$_POST['login']."'
  8. && password = '".$_POST['password']."' ")) > 0) {
  9.  
  10.  
  11. if(mysql_num_rows(mysql_query("SELECT * FROM users
  12. WHERE login = '".$_POST['login']."'
  13. && password = '".$_POST['password']."' ")) > 0 ) {
  14.  
  15.  
  16. $_SESSION['zalogowany'] = true;
  17. $_SESSION['login'] = $_POST['login'];
  18. $_SESSION['password'] = $_POST['password'];
  19.  
  20. header("Location: adresstrony/wejsce.php");
  21. } else {
  22.  
  23. echo "zle haslo lub login. <a href=\"../dostep.php\">Back</a>";
  24. }
  25. } else {
  26. echo"zle haslo lub login. <a href=\"../dostep.php\">Back</a>";
  27. }
  28. } else {
  29. echo"zle haslo lub login. <a href=\"../dostep.php\">Back</a>";
  30. }
  31. // nagłowki html itp
  32. <? if(isset($_SESSION['zalogowany'])) {
  33. echo "".$_SESSION['login'];
  34. }else{
  35. echo"";
  36. }
  37. echo"</h2><br />";
  38.  
  39. echo"index";

I to działa. Ale na następnej stronie, jest zrobione tak samo, i juz nie wyswietla sesji. Dlaeczego??
b4rt3kk
Pokaż co jest na tej następnej stronie, to może być pomocne.
imashjan82
  1. <?
  2. $login = $_SESSION['login'];
  3. // połaczenie z bazą danych
  4. if(isset($_POST['Login'])) {
  5.  
  6.  
  7. if(mysql_num_rows(mysql_query("SELECT login, password
  8. FROM users WHERE login = '".$_POST['login']."'
  9. && password = '".$_POST['password']."' ")) > 0) {
  10.  
  11.  
  12. if(mysql_num_rows(mysql_query("SELECT * FROM users
  13. WHERE login = '".$_POST['login']."'
  14. && password = '".$_POST['password']."' ")) > 0 ) {
  15.  
  16.  
  17. $_SESSION['zalogowany'] = true;
  18. $_SESSION['login'] = $_POST['login'];
  19. $_SESSION['password'] = $_POST['password'];
  20.  
  21. header("Location: adresstrony/wejsce.php");
  22. } else {
  23.  
  24. echo "zle haslo lub login. <a href=\"../dostep.php\">Back</a>";
  25. }
  26. } else {
  27. echo"zle haslo lub login. <a href=\"../dostep.php\">Back</a>";
  28. }
  29. } else {
  30. echo"zle haslo lub login. <a href=\"../dostep.php\">Back</a>";

treśc html
  1. if(isset($_SESSION['zalogowany'])) {
  2. echo "".$_SESSION['login'];
  3. }else{
  4. echo"";
  5. }
  6. echo"</h2><br />";
  7.  
  8. echo"index";
  9.  
  10. ?>
  11. </h2>
  12. <?
  13. $dn = ("SELECT * FROM users WHERE login='$login'");
  14. $result= mysql_query($dn);
  15.  
  16. while ($row = mysql_fetch_array($result)) {
  17. extract($row);
  18. echo "Name : ";
  19. echo $name ;
  20. echo $surname ;
  21. echo "<br />";
  22. echo "Date of Birth : ";
  23. echo $dob ;
  24. echo "<br />";
  25. echo "e-mail : ";
  26. echo $email ;
  27.  
b4rt3kk
Jeśli powyższe dwa to te Twoje kolejne strony, to nie możesz tak robić, próbujesz pobierać dane z $_POST i nadpisujesz $_SESSION pustymi wartościami. Tylko po poprawnym zalogowaniu nadawaj wartości dla zmiennych $_SESSION, w innych miejscach tylko je odczytuj. Zrób sobie testowy plik, a w nim umieść:

  1. <?php
  2. print_r($_SESSION);
  3. ?>


i przejdź do niego, zaraz po zalogowaniu się.
imashjan82
Juz wiem o co chodzi. Dzieki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.