Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zmienne sesyjne
Forum PHP.pl > Forum > PHP
marcinp1984
Witam
mam problem z tym jak zapisać cokolwiek do zmiennej sesyjnej. Konkretnie chciałbym aby w zmiennej sesyjne przechowywane było id jakiegoś użytkownika ale robiąc tak ja robię nie otwiera mi się stronka czyli jest jakiś błąd :/ Tylko jaki?questionmark.gif B z tego co przeglądam inni tak robi i im działa sad.gif

np coś takiego:

  1. <?php
  2.  
  3. $_SESSION[id]=$id;
  4. ?>


jak tylko dodam to do kodu to już się strona nie chce wyświetlać w czym jest błąd?? Bo w zasadzie nie bardzo jest w czym tu popełnić błąd tongue.gif
230005
A czasem '' tam nie zapomniałeś? $_SESSION[id]=$id; a powinno być $_SESSION['id']=$id;

Jeśli to nie to, to najwyraźniej masz błąd w innym miejscu, pokaż więc resztę kodu :]
Crozin
Włącz raportowanie błędów: http://nospor.pl/php-faq-n29.html#faq-2
Fifi209
Cytat(230005 @ 14.06.2009, 13:52:00 ) *
A czasem '' tam nie zapomniałeś? $_SESSION[id]=$id; a powinno być $_SESSION['id']=$id;

Jeśli to nie to, to najwyraźniej masz błąd w innym miejscu, pokaż więc resztę kodu :]


Też tak kiedyś myślałem, ale może być bez '

Cytat(Crozin @ 14.06.2009, 13:52:22 ) *
Włącz raportowanie błędów: http://nospor.pl/php-faq-n29.html#faq-2


Tylko po co...

Cytat(marcinp1984 @ 14.06.2009, 13:48:51 ) *
jak tylko dodam to do kodu to już się strona nie chce wyświetlać w czym jest błąd?? Bo w zasadzie nie bardzo jest w czym tu popełnić błąd tongue.gif


Nagłówki muszą być wysyłane jako pierwsze, czyli nic przed session_start(); nie może polecieć.
Problemem może być też nieodpowiednie kodowanie plików (UTF8 [z DOM]), jeżeli masz takie kodowanie zmień na UTF-8 bez DOM.

Taką opcję posiada Notepad++
marcinp1984
No w zasadzie w kodzie mam $_SESSION['id']=$id; tongue.gif Jakoś dziwnie to tu przepisałem biggrin.gif

Cały kod wygląda tak(pomijamy sprawę bezpieczeństwa logowania bo to nie jest ważne biggrin.gif A gorzej niż jest teraz już itak się nie da zrobić ):


  1. <?php
  2.  
  3.  
  4. $dbconn = pg_connect("host='localhost' port='5432' dbname='postgres' user='postgres' password='marcin'");
  5.  
  6. $login_pom = $_POST[login];
  7. $haslo_pom = $_POST[haslo];
  8.  
  9. $result = pg_query("SELECT * FROM uzytkownicy WHERE nick ilike '$login_pom'");
  10. $line = pg_fetch_array($result);
  11.  
  12. $haslo_z_bazy = $line[haslo];
  13. $login_z_bazy = $line[nick];
  14. $id = $line[id_uzytkownika];
  15. $moderator = $line[czy_moderator];
  16. $admin = $line[czy_admin];
  17. $zablokowany = $line[czy_zablokowany];
  18. $zarejestrowany = $line[czy_zarejestrowany];
  19.  
  20. $komentarz_null = "Pole login i hasło nie mogą być puste";
  21. $komentarz_zle = "Nieprawidłowy login lub hasło";
  22.  
  23. if($login_pom == null || $haslo_pom == null)
  24.   {
  25.   if($_GET[page]=='0')    
  26.       {
  27.       header("Location: ../index.php?komentarz=$komentarz_null");
  28.       }
  29.   else  
  30.       if($_GET[page]=='1')    
  31.          {
  32.          header("Location: forum.php?komentarz=$komentarz_null");
  33.          }
  34.       else
  35.          if($_GET[page]=='2')    
  36.             {
  37.             header("Location: forum2.php?id_tematu=$_GET[id_tematu]&komentarz=$komentarz_null");
  38.             }
  39.          else
  40.             {
  41.             if($_GET[page]=='3')    
  42.                 {        
  43.                 header("Location: tematyuzytkownikow.php?id_tematu=$_GET[id_tematu]&id_tematu_pom=$_GET[id_tematu_pom]&komentarz=$komentarz_null");    
  44.                 }
  45.             else
  46.                 {
  47.                 if($_GET[page]=='4')    
  48.                    {        
  49.                    header("Location: wpisy.php?id_tematu=$_GET[id_tematu]&id_tematu_pom=$_GET[id_tematu_pom]&id_tematu_pom2=$_GET[id_tematu_pom2]&komentarz=$komentarz_null");    
  50.                    }                
  51.                 }    
  52.              }    
  53.   }
  54. else
  55.   {
  56.   if (mb_strtolower($login_pom, 'UTF-8') == mb_strtolower($login_z_bazy,'UTF-8') &&
  57.      mb_strtolower($haslo_z_bazy, 'UTF-8') == mb_strtolower($haslo_pom, 'UTF-8') &&
  58.      $zablokowany == 'f' &&
  59.      $zarejestrowany == 't')
  60.  
  61.  $_SESSION['id']=$id;
  62.  
  63.   if($_GET[page]=='0')    
  64.       {
  65.       header("Location: ../index.php?id_uzytkownika=$id");
  66.       }
  67.   else  
  68.       if($_GET[page]=='1')    
  69.          {
  70.          header("Location: forum.php?id_uzytkownika=$id");
  71.          }
  72.       else
  73.          if($_GET[page]=='2')    
  74.             {
  75.             header("Location: forum2.php?id_uzytkownika=$id&id_tematu=$_GET[id_tematu]");
  76.             }
  77.          else
  78.             {
  79.             if($_GET[page]=='3')    
  80.                 {        
  81.                 header("Location: tematyuzytkownikow.php?id_uzytkownika=$id&id_tematu=$_GET[id_tematu]&id_tematu_pom=$_GET[id_tematu_pom]");    
  82.                 }
  83.             else
  84.                 {
  85.                 if($_GET[page]=='4')    
  86.                    {        
  87.                    header("Location: wpisy.php?id_uzytkownika=$id&id_tematu=$_GET[id_tematu]&id_tematu_pom=$_GET[id_tematu_pom]&id_tematu_pom2=$_GET[id_tematu_pom2]");    
  88.                    }                
  89.                 }    
  90.              }    
  91.   else
  92.      {
  93.      if($_GET[page]=='0')    
  94.         {
  95.         header("Location: ../index.php?komentarz=$komentarz_zle");
  96.         }
  97.      else  
  98.         if($_GET[page]=='1')    
  99.            {
  100.            header("Location: forum.php?komentarz=$komentarz_zle");
  101.            }
  102.         else
  103.            if($_GET[page]=='2')    
  104.               {
  105.               header("Location: forum2.php?id_tematu=$_GET[id_tematu]&komentarz=$komentarz_zle");
  106.               }
  107.            else
  108.               {
  109.               if($_GET[page]=='3')    
  110.                  {        
  111.                  header("Location: tematyuzytkownikow.php?id_tematu=$_GET[id_tematu]&id_tematu_pom=$_GET[id_tematu_pom]&komentarz=$komentarz_zle");    
  112.                  }
  113.               else
  114.                  {
  115.                  if($_GET[page]=='4')    
  116.                     {        
  117.                     header("Location: wpisy.php?id_tematu=$_GET[id_tematu]&id_tematu_pom=$_GET[id_tematu_pom]&id_tematu_pom2=$_GET[id_tematu_pom2]&komentarz=$komentarz_zle");    
  118.                     }                
  119.                  }    
  120.               }      
  121.      }
  122.   }
  123.  
  124. pg_close($dbconn);
  125. ?>


zmienna jest gdzieś w okolicy 62 wiersza
Fifi209
Potestuj na localhost i powiedz jednak jak z tymi błędami. (zastosuj się do rady kolegi) haha.gif
marcinp1984
wszystko robie na lokalhost... a co do błędów to nie bardzo umiem sobie poradzić z tym żeby były one pokazane... wkleiłem ten kod z tej stronki ale nic się nie pokazuje... wyskakuje tylko białe tło
Fifi209
Jaki serwer, jaki system?
marcinp1984
Więc niby ma wszystko tak jak powinno być... z kodowaniem też, używam właśnie notepada więc już nie wiem o co chodzi

system xp sp3 a server apache... a właściwie to paczka BitNami WAPPStack żeby łatwiej było z instalacją wszytskiego biggrin.gif
Do tej pory nie było najmniejszego problemu a teraz nie wiem co się dzieje
Fifi209
Spróbuj z inną paczką np. webserv (instalacja dla zaawansowanych php+, mysql 5+) lub xampp.
marcinp1984
muszę mieć postgresqla a to jedyna paczka tego typu jaką udało mi się w ogóle znaleźć
Fifi209
Postgresql możesz sobie doinstalować - z tym nie ma problemów. Ściągasz po prostu serwer postgresql i po sprawie.
Crozin
@fifi209: nie uważasz, że rada "weź wywal wszystko i przeinstaluj, może pomoże" jest trochę denna?

Zacznij od zrobienia prostego testu:
  1. <?php
  2.  
  3. ini_set('display_errors', true);
  4. error_reporting(E_ALL | E_STRICT);
  5.  
  6. #To powinno zadziałać poprawnie
  7. echo 'ABC';
  8.  
  9. #To powinno wygenerować błąd:
  10. echo $_SESSION['blah'];
  11. ?>
Powiedz czy taka strona się wyświetla, czy informacja o błędzie została pokazana. Jeśli tak, to już wiesz jak włączyć raportowanie błędów w Twoim skrypcie.

PS. Tak z góry uprzedzę, że Twój kod powinien wygenerować przynajmniej kilkanaście błędów.
marcinp1984
no dobra... jak sobie stworze nowy pilk i dodam ten kod do niego to pokazuje błąd, ale jak wstawię to do mojego pliku to już nic nie pokazuje.... może jeszcze wywale na razie to kombinowanie z sesją i jeszcze raz sprawdzę

choć w zasadzie nie wiem jaki to ma sens bo skoro mi się stonka wyświetli to i tak błędów nie pokaże biggrin.gif
Crozin
Cytat
choć w zasadzie nie wiem jaki to ma sens bo skoro mi się stonka wyświetli to i tak błędów nie pokaże
Błąd... strona będzie się wyświetlać zarówno w przypadku błędów typu E_NOTICE czy E_WARNING.
Pokaż jeszcze jak wstawiłeś ten kod.
marcinp1984
  1. <?php
  2. Kod wstawiłem zaraz na początku:
  3.  
  4.  
  5.  
  6. ini_set('display_errors', true);
  7. error_reporting(E_ALL | E_STRICT);
  8.  
  9. $dbconn = pg_connect("host='localhost' port='5432' dbname='postgres' user='postgres' password='marcin'");
  10.  
  11. $login_pom = $_POST[login];
  12. $haslo_pom = $_POST[haslo];
  13.  
  14. $result = pg_query("SELECT * FROM uzytkownicy WHERE nick ilike '$login_pom'");
  15. $line = pg_fetch_array($result);
  16.  
  17. .....
  18. .....
  19. ?>


No i z sesjami nic się nie wyświetla a jak je usunę to normalnie się stronka otwiera

ahhh... no tak to normalne że w przypadku gdy wywaliłem sesje nic nie zobaczyłem bo przecież z haslo.php, przesyłany jestem po zalogowniu na inną stronę tongue.gif Więc nie mogłem nic widzieć biggrin.gif

No więc bez tych sesji jest coś tkiego :

Notice: Use of undefined constant login - assumed 'login' in D:\BitNami WAPPStack\apache2\htdocs\forum\haslo.php on line 26

Notice: Use of undefined constant haslo - assumed 'haslo' in D:\BitNami WAPPStack\apache2\htdocs\forum\haslo.php on line 27

Notice: Use of undefined constant haslo - assumed 'haslo' in D:\BitNami WAPPStack\apache2\htdocs\forum\haslo.php on line 32

Notice: Use of undefined constant nick - assumed 'nick' in D:\BitNami WAPPStack\apache2\htdocs\forum\haslo.php on line 33

Notice: Use of undefined constant id_uzytkownika - assumed 'id_uzytkownika' in D:\BitNami WAPPStack\apache2\htdocs\forum\haslo.php on line 34

Notice: Use of undefined constant czy_moderator - assumed 'czy_moderator' in D:\BitNami WAPPStack\apache2\htdocs\forum\haslo.php on line 35

Notice: Use of undefined constant czy_admin - assumed 'czy_admin' in D:\BitNami WAPPStack\apache2\htdocs\forum\haslo.php on line 36

Notice: Use of undefined constant czy_zablokowany - assumed 'czy_zablokowany' in D:\BitNami WAPPStack\apache2\htdocs\forum\haslo.php on line 37

Notice: Use of undefined constant czy_zarejestrowany - assumed 'czy_zarejestrowany' in D:\BitNami WAPPStack\apache2\htdocs\forum\haslo.php on line 38

Notice: Use of undefined constant page - assumed 'page' in D:\BitNami WAPPStack\apache2\htdocs\forum\haslo.php on line 81

Notice: Use of undefined constant page - assumed 'page' in D:\BitNami WAPPStack\apache2\htdocs\forum\haslo.php on line 86
ddd
Fifi209
To pokaż ten plik haslo.php
marcinp1984
to jest dokładnie ten pliczek który wkleiłem gdzieś na początku tematu

No chyba w końcu doszedłem do tego czemu się nie wyświetlała stronka z tą zmienną sesyjną...

po tym warunku:

  1. <?php
  2. if (mb_strtolower($login_pom, 'UTF-8') == mb_strtolower($login_z_bazy,'UTF-8') &&
  3.      mb_strtolower($haslo_z_bazy, 'UTF-8') == mb_strtolower($haslo_pom, 'UTF-8') &&
  4.      $zablokowany == 'f' &&
  5.      $zarejestrowany == 't')
  6.  
  7.       {
  8.       .............
  9.       }
  10. ?>


brakowało chyba klamerek bo jak dostawiłem to wszystko się wyświetla winksmiley.jpg

No dobra wszystko ładnie działa z tymi zmiennymisesyjnymi właściwie zmienną bo przechowuje w niej tylko id użytkownika ale mam teraz problem z wylogowaniem :/ Wiem że do tego służy na pewno session_destroy()
Jak teraz mogę tego użyć w linku <a href='index.php' class='wyloguj' > (wyloguj)</a> żeby zniszyczyć tą zmienną sesyjnąquestionmark.gif? W linku też normalnie działa zdarzenie onclick czy nie bardzo? biggrin.gif Bo coś kombinowałem ale nic z tego :/
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.