Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Przypisanie zmiennej sesyjnej do logowania
Forum PHP.pl > Forum > Przedszkole
Croos22
Witam.
Nie mogę sobie poradzić z przypisaniem zmiennej sesji podczas logowania.
Wydaje mi się, że to ma wyglądać tak $_SESSION["user_id"] i $_SESSION["user_login"]? tylko nie wiem w którym miejscu to dać mam bo gdzie nie spróbowałem to mi nie działało.

Logowanie wygląda tak:
  1. <?php
  2. session_register("zalogowany");
  3. session_register("haslo");
  4.  
  5. mysql_connect("", "", "");
  6.  
  7. if(!isset($_SESSION["zalogowany"]) || $_SESSION["zalogowany"]==0)$_SESSION["zalogowany"]=0;
  8. else{
  9. $_SESSION["zalogowany"]=intval($_SESSION["zalogowany"]);
  10. mysql_query("select id from users where user_id=".$_SESSION["zalogowany"]." and user_haslo='".htmlspecialchars($_SESSION["haslo"])."'");
  11. }
  12.  
  13.  
  14. if($_POST["haslo"] && $_POST["login"]){
  15. $wynik=mysql_query("select * from users where user_login='".htmlspecialchars($_POST["login"])."' and user_haslo='".htmlspecialchars($_POST["haslo"])."'");
  16. if(!mysql_num_rows($wynik))Header("Location: index.php?err=1");
  17. else{
  18. $rekord=mysql_fetch_array($wynik);
  19. $_SESSION["zalogowany"]=$rekord["user_id"];
  20. $_SESSION["haslo"]=$rekord["user_haslo"];
  21. Header("Location: index.php");
  22. }
  23. }
  24.  
  25. if($_GET["ak"]=="wyl"){$_SESSION["zalogowany"]=0;$_SESSION["haslo"]="";Header("Location: index.php");}
  26.  
  27. function logowanie_okno($komunikat=""){
  28. if($komunikat)echo "<br>$komunikat<br>";
  29. echo "<form action='sesje.php' method=post>";
  30. echo "Login: <input name=login>";
  31. echo "<br>Hasło: <input type=password name=haslo>";
  32. echo "<br><input type=submit value='zaloguj'>";
  33. echo "</form>";
  34. echo "Nie masz jeszcze konta? <a href='rejestruj.php'>Zarejestruj się!</a>";
  35. }
  36. ?>



Ps. tak na boku chciałem zapytać czy istnieje możliwość automatycznego wygasania sesji po pewnym czasie i poinformowanie użytkownika o tym w okienku js?

krispak
Jakie Ty sobie ustawisz zmienne sesyjne to juz twoje kwestia i nie musza byc $_SESSION["user_id"] i $_SESSION["user_login"] ale jesli juz maja takie byc to moga i byc smile.gif Jesli maja byc tam przechowywane dane zalogowanego uzytkownika to tutaj:
  1. ...
  2. $rekord=mysql_fetch_array($wynik);
  3. $_SESSION["user_id"] = $rekord["user_id"]; // zmienna sesyjna przechowujaca id zalgowanego uzytkownika
  4. $_SESSION["user_login"] = $rekord["user_login"]; // zmienna sesyjna przechowujaca login zalgowanego uzytkownika
  5.  
  6. $_SESSION["zalogowany"]=$rekord["user_id"];
  7. $_SESSION["haslo"]=$rekord["user_haslo"];
  8. Header("Location: index.php");
  9. ...

Pozdrawiam
Croos22
Dzięki za pomoc bardzo mi na tym zależało.

Nie zakładając kolejnego tematu chciałem zapytać dlaczego to mi nie chodzi.Polega to na wyświetlaniu użytkowników po ich unikalnych identyfikatorach no i tak się dzieje lecz nie chce mi wyciągać jego danych z bazy tj. user_login czy user_id.
Fragment bez łączenia.

  1. $query = mysql_query("SELECT * FROM `users` WHERE user_id='{$_GET['user_id']}'");
  2. if($dane=mysql_fetch_array($query))
  3. {
  4. echo $dane['user_login'];
  5. echo $dane['user_id'];
  6. }
thek
or die( mysql_error() )
var_dump($query) przed IF
var_dump($dane) przed echo pierwszym.
Croos22
W taki sposób?Nie działa ;<

  1. $query = mysql_query("SELECT * FROM `users` WHERE user_id='{$_GET['user_id']}'");
  2. var_dump($query) if($dane=mysql_fetch_array($query))
  3. {
  4. var_dump($dane)
  5. echo $dane['user_login'];
  6. echo $dane['user_id'];
  7. }
krispak
or die miales dodac na koniec zapytania:
  1. $query = mysql_query("SELECT * FROM `users` WHERE user_id='{$_GET['user_id']}'") or die(mysql_error());

a var_dump sprawdzic czy masz cos w tablicach a nie podmieniac
Croos22
Treść błędu:
Cytat
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/user.php on line 7


Kod:
  1. <?php
  2. mysql_connect('', '' , '');
  3. $query = mysql_query("SELECT * FROM `users` WHERE user_id='{$_GET['user_id']}'") or die(mysql_error());
  4. var_dump($query)
  5. if($dane=mysql_fetch_array($query))
  6. {
  7. var_dump($dane)
  8. echo $dane['user_login'];
  9. echo $dane['user_id'];
  10. }
  11. ?>


Coś nadal mam nie tak ;(
thek
W końcu zacząłeś pokazywać błędy... Myślałem, że nie zaczniesz nigdy winksmiley.jpg Skoro wali taki to znaczy, że zapytanie się nie wykonuje. Najpewniej jest błędne i zwraca Ci informację o nieprawidłowościach. Czy jakiś inny komunikat się wyświetla?
Podmień ewentualnie zapytanie na:
  1. $query = mysql_query('SELECT * FROM `users` WHERE user_id='.$_GET['user_id'].' LIMIT 1' ) or die(mysql_error());
o ile $_GET['user_id'] to liczba i najlepiej wcześniej zwaliduj czy jest to liczba jeśli nie chcesz włamu.
Croos22
Jest jedyny błąd, który mi wywala. Podmiana zapytania nic nie dała.
thomson89
Cytat(Croos22 @ 5.08.2010, 23:42:54 ) *
Ps. tak na boku chciałem zapytać czy istnieje możliwość automatycznego wygasania sesji po pewnym czasie i poinformowanie użytkownika o tym w okienku js?

Dodaj do sesji czas zalogowania. Za każdym odświeżeniem, sprawdzaj czy to nie jest, np. 10 minut temu. Jak nie jest to uaktualniaj czas zalogowania. Alert z js, to kwestia linijki:
  1. print '<script type="text/javascript">alert("sesja wygasła - a kysz!");</script>';
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.