Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Przypisanie sesji przy logowaniu
Croos22
post
Post #1





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


Witam.

Mam problem z sesją logowania. Dokładniej rzecz mówiąc chciałem aby przy logowaniu rejestrowała się sesja z numerem id a następnie chce to wykorzystać w zapytaniu aby kod wiedział do jakiej tabeli dodać rekord.

Zapytanie wygląda tak
  1. mysql_query("UPDATE users SET kasa=kasa-'$c[cena]' WHERE user_id='.$_SESSION['user_id'].'");


Z góry chciałem podziękować każdemu kto włoży coś od siebie do tematu.

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
verio
post
Post #2





Grupa: Zarejestrowani
Postów: 49
Pomógł: 1
Dołączył: 23.01.2007
Skąd: Wołomin

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


A czy na pewno na początku kodu zamieszczona jest funkcja session_start()?

Później wystarczy przypisać wartość do sesji jak do każdej innej zmiennej.

  1. <?
  2.  
  3. $SESSION['user_id']=$id_usera;
  4.  
  5. //zapytanie SQL
  6. ?>
Go to the top of the page
+Quote Post
Croos22
post
Post #3





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


A czy sesja będzie zachowana bo chce ją umieścić w całkiem innym pliku?

Do tego logowania chciałem przypisać sesję zalogowanego i wykorzystywać na innych podstronach.
http://wklej.org/id/411926/

Ten post edytował Croos22 3.11.2010, 16:11:56
Go to the top of the page
+Quote Post
Ghost_78
post
Post #4





Grupa: Zarejestrowani
Postów: 222
Pomógł: 34
Dołączył: 3.11.2010

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


żeby mieć dostęp do zmiennej sesyjnej $_SESSION musisz w każdym skrypcie zacząć od session_start();


--------------------
Always look on the bright side of life ;-)
Go to the top of the page
+Quote Post
ADeM
post
Post #5





Grupa: Zarejestrowani
Postów: 455
Pomógł: 69
Dołączył: 23.10.2004
Skąd: Oświęcim

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


  1. <?php
  2. session_register("zalogowany");
  3.  
  4. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  5.  
  6.  
  7.  
  8.  
  9. include ('includes/config_includes.php');
  10.  
  11. function ShowLogin($komunikat=""){
  12. echo "$komunikat<br>";
  13. echo "<form action='index.php' method=post>";
  14. echo "Login: <input type=text name=login><br>";
  15. echo "Hasło: <input type=text name=haslo><br>";
  16. echo "<input type=submit value='Zaloguj!'>";
  17. echo "</form>";
  18. echo "Jeśli nie jesteś zarejestrowany, <a href='rejestruj.php'>tu znajdziesz formularz</a>";
  19. }
  20.  
  21. ?>
  22. <!DOCTYPE html
  23. PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  24. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  25. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  26. <head>
  27. <title>Strona główna</title>
  28. </head>
  29. <body>
  30. <?php
  31. if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany z serwisu";}
  32. if($_SESSION["zalogowany"]!=1){
  33. if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
  34. $query = mysql_query("select * from users where user_name = '".htmlspecialchars($_POST["login"])."' AND user_password_short = '".htmlspecialchars($_POST["haslo"])."'");
  35. if(mysql_num_rows( $query )){
  36. echo "Zalogowano poprawnie. <a href='index.php'>Przejdź na stronę główną</a>";
  37. $_SESSION["zalogowany"]=1;
  38. $results = mysql_fetch_assoc( $query );
  39. $_SESSION["user_id"] = $results[ 'user_id' ];
  40. }
  41. else echo ShowLogin("Podano złe dane!!!");
  42. }
  43. else ShowLogin();
  44. }
  45. else{
  46. ?>
  47. Gratulacje! Zalogowałeś się pomyślnie! Możesz przejśc teraz do innych podstron, np. do <a href="stronka.php">tej</a>
  48. <br><a href='index.php?wyloguj=tak'>wyloguj się</a>
  49. <?php
  50. }
  51. ?>
  52.  
  53. </body>
  54. </html>
  55. <?php mysql_close(); ?>


--------------------
Go to the top of the page
+Quote Post
Croos22
post
Post #6





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


Zrobiłem tak:

  1. $_SESSION["user_name"] = $results[ 'user_name' ];


A na innej podstronie dałem:
  1. echo 'Zalogowany jako '.$results[ 'user_name' ];


Nie wyświetlił się login zalogowanego. Dlaczego?
Go to the top of the page
+Quote Post
CuteOne
post
Post #7





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  1. echo 'Zalogowany jako '.$_SESSION["user_name"];
Go to the top of the page
+Quote Post
Croos22
post
Post #8





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


Nadal nic chyba nie załapię tych sesji. :<

Czy aby przypisać do sesji login zalogowanego to musi być on najpierw wyciągnięty z bazy? Wydaje mi się, że w przeciwnym wypadku musiało by być przekazywane z formularza.

U mnie w 40 linii jest przypisana sesja to skąd login osoby zalogowanej miałby się tam znaleźć? Znowu jak tak zrobię:
  1. echo 'Zalogowany jako '.$_SESSION['zalogowany'];
to w przypadku osoby zalogowanej jest 1.

  1. <?php
  2. session_register("zalogowany");
  3.  
  4. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  5.  
  6.  
  7.  
  8.  
  9. include ('includes/config_includes.php');
  10.  
  11. function ShowLogin($komunikat=""){
  12. echo "$komunikat<br>";
  13. echo "<form action='index.php' method=post>";
  14. echo "Login: <input type=text name=login><br>";
  15. echo "Hasło: <input type=text name=haslo><br>";
  16. echo "<input type=submit value='Zaloguj!'>";
  17. echo "</form>";
  18. echo "Jeśli nie jesteś zarejestrowany, <a href='rejestruj.php'>tu znajdziesz formularz</a>";
  19. }
  20.  
  21. ?>
  22. <!DOCTYPE html
  23. PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  24. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  25. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  26. <head>
  27. <title>Strona główna</title>
  28. </head>
  29. <body>
  30. <?php
  31. if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany z serwisu";}
  32. if($_SESSION["zalogowany"]!=1){
  33. if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
  34. $query = mysql_query("select * from users where user_name = '".htmlspecialchars($_POST["login"])."' AND user_password_short = '".htmlspecialchars($_POST["haslo"])."'");
  35. if(mysql_num_rows( $query )){
  36. echo "Zalogowano poprawnie. <a href='index.php'>Przejdź na stronę główną</a>";
  37. $_SESSION["zalogowany"]=1;
  38. $results = mysql_fetch_assoc( $query );
  39. $_SESSION["user_id"] = $results[ 'user_id' ];
  40. }
  41. else echo ShowLogin("Podano złe dane!!!");
  42. }
  43. else ShowLogin();
  44. }
  45. else{
  46. ?>
  47. Gratulacje! Zalogowałeś się pomyślnie! Możesz przejśc teraz do innych podstron, np. do <a href="stronka.php">tej</a>
  48. <br><a href='index.php?wyloguj=tak'>wyloguj się</a>
  49. <?php
  50. }
  51. ?>
  52.  
  53. </body>
  54. </html>
  55. <?php mysql_close(); ?>
Go to the top of the page
+Quote Post
Ghost_78
post
Post #9





Grupa: Zarejestrowani
Postów: 222
Pomógł: 34
Dołączył: 3.11.2010

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


oczywiscie ze musisz przypisac zapis z bazy:
  1. $_SESSION["zalogowany"]=$result['nazwa_pola_z_nazwa_usera'];


--------------------
Always look on the bright side of life ;-)
Go to the top of the page
+Quote Post
Croos22
post
Post #10





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


Hmm... Czyli jeśli dane muszą być wyciągnięte to czy prawidłowo mam tu w tym kodzie zrobione?

  1. <?php
  2. if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany z serwisu";}
  3. if($_SESSION["zalogowany"]!=1){
  4. if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
  5. $query = mysql_query("select * from users where user_name = '".htmlspecialchars($_POST["login"])."' AND user_password = '".sha1(htmlspecialchars($_POST["haslo"]))."'");
  6. if(mysql_num_rows( $query )){
  7. echo header('Location: index.php');
  8. $_SESSION["zalogowany"]=1;
  9. $results = mysql_fetch_assoc( $query );
  10. $_SESSION["user_name"] = $results[ 'user_name' ]; }
  11. else echo ShowLogin("Podano złe dane!!!");
  12. }
  13. else ShowLogin();
  14. }
  15. else{
  16. ?>
Go to the top of the page
+Quote Post
Ghost_78
post
Post #11





Grupa: Zarejestrowani
Postów: 222
Pomógł: 34
Dołączył: 3.11.2010

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


masz zla kolejnosc i nie potrzebne echo przed location
powinno byc tak:
  1. $_SESSION["zalogowany"]=1;
  2. $results = mysql_fetch_assoc( $query );
  3. $_SESSION["user_name"] = $results[ 'user_name' ];
  4. header('location: index.php');


--------------------
Always look on the bright side of life ;-)
Go to the top of the page
+Quote Post
CuteOne
post
Post #12





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  1. if(!$_SESSION["zalogowany"]){
  2.  
  3. if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
  4.  
  5. $login = mysql_real_escape_string($_POST["login"]);
  6. $pass = sha1($_POST["haslo"]);
  7.  
  8.  
  9. $query = mysql_query("SELECT * FROM users WHERE user_name = '{$login}' AND user_password = '{$pass}'");
  10.  
  11. if(mysql_num_rows( $query )) {
  12.  
  13.  
  14. $_SESSION["zalogowany"]=true;
  15. $results = mysql_fetch_assoc( $query );
  16. $_SESSION["user_name"] = $results[ 'user_name' ]; // w sesji ze względów bezpieczeństwa nie powinno przechowywać się jawnych informacji lepiej wstawić hash danej sessji
  17. header('Location: index.php');
  18. }
  19. else {
  20. echo ShowLogin("Podano złe dane!!!");
  21. }
  22. }
  23. else {
  24.  
  25. ShowLogin();
  26. }
  27. }


Ten post edytował CuteOne 5.11.2010, 21:30:08
Go to the top of the page
+Quote Post
Croos22
post
Post #13





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


Dziękuje bardzo smile.gif

Zauważyłem, że zniknęło htmlspecialchars a co zostało dodane to mysql_real_escape_string manual za dużo mi nie mówi...
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 10:15