Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Sesja - pobranie danych użytkownika
konradkw
post 26.02.2012, 23:34:34
Post #1





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 31.05.2010

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


Plik index.php:

  1. <?php
  2.  
  3. session_register("zalogowany");
  4.  
  5. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  6.  
  7. mysql_connect("serwer", "user", "haslo")or die("Nie mozna nawiazac polaczenia z baza");
  8. mysql_select_db("baza")or die("Wystapil blad podczas wybierania bazy danych");
  9.  
  10. function ShowLogin($komunikat=""){
  11. echo "$komunikat<br>";
  12. echo "<form action='index.php' method=post>";
  13. echo "Login: <input type=text name=login>";
  14. echo "Haslo: <input type=password name=haslo>";
  15. echo "<input type=submit value='Zaloguj!'>";
  16. echo "</form>";
  17. echo "<a href='info.php?id=zarejestruj'></a>";
  18. }
  19. ?>
  20.  
  21. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  22. <html xmlns="http://www.w3.org/1999/xhtml">
  23. <head>
  24. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  25. <link href="style.css" rel="stylesheet" type="text/css" />
  26.  
  27.  
  28. <title>CMS</title>
  29. </head>
  30.  
  31. <body>
  32.  
  33. <div id="logo">
  34.  
  35. <div id="logowanie">
  36.  
  37. <?php
  38. if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostales wylogowany";}
  39. if($_SESSION["zalogowany"]!=1){
  40. if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
  41. if(mysql_num_rows(mysql_query("select * from users where user_login = '".htmlspecialchars($_POST["login"])."' AND user_haslo = '".htmlspecialchars($_POST["haslo"])."'"))){
  42. $_SESSION["zalogowany"]=1;
  43. }
  44. else echo ShowLogin("Podano zle dane!");
  45. }
  46. else ShowLogin();
  47. }
  48. else{
  49.  
  50. echo "Witaj! ";
  51.  
  52. echo " Jestes zalogowany! <a href='index.php?wyloguj=tak'>Wyloguj sie</a>";
  53. echo "<br />";
  54. ?>
  55.  
  56. <a href=index.php?id=profile>PROFIL</a>
  57.  
  58.  
  59. <?php
  60.  
  61. }
  62.  
  63. ?>



To jest zawartość pliku profil.php który jest wyświetlany w głównym div-e na index.php
Zależy mi na tym aby ten plik wyświetlił dane aktualnie zalogowanego usera

  1. <?php
  2.  
  3. if($_SESSION["zalogowany"]!=1){echo " Nie masz dostępu do tej części witryny. Musisz się zalogować"; exit();}
  4.  
  5.  
  6. echo "Dane Twojego profilu:"; echo "<br />"; echo "<br />";
  7.  
  8. $wyn = mysql_query("select * from `users` where `user_id` = `$_SESSION['id']` ");
  9. while ($wiersz = mysql_fetch_array($wyn, MYSQL_ASSOC)) {
  10.  
  11. echo "Twoje ID to: \"";
  12. echo $wiersz['user_id'];
  13. echo "\"";
  14. echo "<br />";
  15. echo "Twoja nazwa użytkownika to: ";
  16. echo $wiersz['user_login'];
  17.  
  18. }


Problem jest w tym że nie dane się nie wyświetlają bo mi brakuje tam gdzieś porównania IDz bazą - znaczy jest porównanie ale nie działa.
Bardzo proszę o pomoc.

..

Ten post edytował konradkw 26.02.2012, 23:33:39
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
fr33d0m
post 26.02.2012, 23:41:02
Post #2





Grupa: Zarejestrowani
Postów: 132
Pomógł: 4
Dołączył: 22.10.2010

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


A co masz w: $_SESSION['id'] questionmark.gif wink.gif
Musisz najpierw pobrać z bazy ID i przypisać do sesji ['id'], a dopiero później szukać poprzez daną sesje z ID w pętli.


--------------------
UWAGA! Stwierdzono naruszenie paragrafu §33 ustawy ACTA. Podpis użytkownika został usunięty.
Go to the top of the page
+Quote Post
konradkw
post 26.02.2012, 23:43:28
Post #3





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 31.05.2010

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


mogę prosić o podpowiedź jak połączyć ID z sesją?
Go to the top of the page
+Quote Post
fr33d0m
post 26.02.2012, 23:49:05
Post #4





Grupa: Zarejestrowani
Postów: 132
Pomógł: 4
Dołączył: 22.10.2010

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


np. tak...
  1. $Zalogowany = mysql_fetch_array(mysql_query("select user_id from users where user_login = '".htmlspecialchars($_POST["login"])."'"));
  2. $_SESSION['id'] = $Zalogowany['user_id'];


BTW. lepiej stosować czyszczenie poprzez mysql_real_escape_string, a ogólnie masz bardzo zawiłą całą konstrukcje...

Ten post edytował fr33d0m 26.02.2012, 23:50:26


--------------------
UWAGA! Stwierdzono naruszenie paragrafu §33 ustawy ACTA. Podpis użytkownika został usunięty.
Go to the top of the page
+Quote Post
konradkw
post 26.02.2012, 23:54:45
Post #5





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 31.05.2010

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


wybacz moją niewiedzę ale gdzie byś to proponował dać? znaczy gdzie w kodzie?

programuję w php dopiero około tygodnia może 10 dni i wszystko co piszę jest z głowy - nie używam gotowców.
Ważne dla mnie jest żeby działało smile.gif

Ten post edytował konradkw 26.02.2012, 23:57:10
Go to the top of the page
+Quote Post
fr33d0m
post 27.02.2012, 00:04:33
Post #6





Grupa: Zarejestrowani
Postów: 132
Pomógł: 4
Dołączył: 22.10.2010

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


Szczerze to proponowałbym znalezienie innego kodu do logowania się, bo obecny to jakiś taki, hm... nowatorski? tongue.gif
Dziwie się, że to nie wywala żadnego błędu... i szczerzę wątpię aby to sprawnie funkcjonowało.

edit: wstaw mój kod między linią 41 - 42. W linii 6 zgubiłeś klamry - nie wywala błędu?


Ten post edytował fr33d0m 27.02.2012, 10:06:29


--------------------
UWAGA! Stwierdzono naruszenie paragrafu §33 ustawy ACTA. Podpis użytkownika został usunięty.
Go to the top of the page
+Quote Post
konradkw
post 27.02.2012, 10:20:17
Post #7





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 31.05.2010

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


skrypt logowania nie wywala błędów i wygląda na to że działa przynajmniej jak narazie - jeszcze go nie testowałem na większej ilości użytkowników.

błąd jaki otrzymuję to tylko to co poniżej (nie w index.php ale w profile.php):

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in .../profile.php on line 14

Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively in Unknown on line 0

.

Gdzie tu jest blad? pisalem tak w innych miejscach i dzialalo.. przypuszczam ze chodzi o zmienna id - inaczej trzeba jakos ja tam wstawic ale probowalem juz ' ', " ", ( ), (' '), (" "), '( )', "( )", nie wiem co jeszcze moge tam dac.

  1. $wyn = mysql_query("select * from `users` where `user_id` = ($_SESSION['id']) ");


Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/morpheus/ftp/konrad/cms/include/profile.php on line 12
Go to the top of the page
+Quote Post
nospor
post 27.02.2012, 11:02:05
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Wkładanie zmiennej do tekstu - to są podstawy. Tyle czasu na forum to mógłbyś już te podstawy znać.

Lektura obowiązkowa
http://www.php.net/manual/pl/language.types.string.php
http://www.php.net/manual/pl/language.types.array.php

Zaś konkretny przypadek co tu masz bardzo dobrze wyjaśniono tu:
http://www.php.net/manual/pl/language.types.array.php
w sekcji:
More examples to demonstrate this behaviour:


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
konradkw
post 27.02.2012, 11:13:28
Post #9





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 31.05.2010

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


dziekuje za komentarz nospor ale pozwole sobie nadmienic ze mimo daty rejestracji w 2010 roku, aktywnie ucze sie php od okolo 11 dni. Lektury ktre wstawiles czytalem caly skrypt jest jednak z deka skomplikowany i pomimo ze go napisalem to nie wszystko wylapie. Dodatkowo, nie bylo by o wiele szybciej poprostu piszac co jest nie tak z kodem zamiast odsylac mnie do trzech lektur?

Ten post edytował konradkw 27.02.2012, 11:16:44
Go to the top of the page
+Quote Post
nospor
post 27.02.2012, 11:18:24
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nie odesłałem cię do trzech lektur a do dwóch. Mało tego, w drugiej napisałem dokładnie, gdzie masz rozwiązanie, podane na przykładach, z identycznym błędem jak twój. Ale ty nie raczyłeś nawet zajrzeć. Widzę wymagasz motywacji - zamykam (w razie pytań, tudzień rozwiązania tego problemu i chęci kontynuowania tematu - zapraszam na PW).

Cytat
Dodatkowo, nie bylo by o wiele szybciej poprostu piszac co jest nie tak z kodem zamiast odsylac mnie do trzech lektur?
Nie chodzi o szybkośc a o jakość. Podajac ci te banalne rozwiązanie banalnego problemu, za chwile przylecisz z równie banalnym, bo nie masz opanowanych podstaw. Lektura dwóch lektur, zawiera niezbędne informacje na temat podstaw, z którymi teraz masz niesamowite problemy.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Closed TopicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 18:35