Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Sesja - pobranie danych użytkownika
Forum PHP.pl > Forum > Przedszkole
konradkw
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.

..
fr33d0m
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.
konradkw
mogę prosić o podpowiedź jak połączyć ID z sesją?
fr33d0m
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...
konradkw
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
fr33d0m
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?
konradkw
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
nospor
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:
konradkw
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?
nospor
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.
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.