Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dziwne zachowanie Sesji, raz działa a raz nie
mcstar
post 18.03.2006, 04:41:01
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 8.07.2003

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


Robię system obsługi ogłoszeń (oparty na: smarty, językach, i upiększaniu adresów dla google - czyli jak kto woli mod_rewrite). Na stronie głównej (index.php) startuje sesję, gdy rejestruje tutaj zmienne do sesji to wszystko jest OK! Jednak na stronę głowną są wczytywane inne pliki np. z rejestracją użytkowników, logowaniem,etc za pomocą starej banalnej metody winksmiley.jpg (powiedzmy że index.php to ogólny szablon dla całego serwisu).

  1. <?php
  2.  
  3. if (file_exists(_SCIEZKA_PLIKU_)){
  4.     require_once(_SCIEZKA_PLIKU_);
  5. }
  6. else {
  7.     require_once(_SCIEZKA_PLIKU_404_);
  8. }
  9.  
  10. ?>


problem z sesją pojawia się właśnie w tym momęcie, załóżmy że pobieram plik rejestracja.php -> ten plik pobiera lang i tworzy szablon smarty tylko dla formularza rejestracji w pierwszym kroku, w drugim kroku wyświetla potwierdzenie danych, a w 3 zapisuje do bazy i tu równiez powinien zarejestrować nową zmienną w sesji, aby nie dało się po przypadkowym odświeżeniu strony ponownie dodać tych samych danych do bazy:

  1. <?php
  2.  
  3. if ($sess_dodano!='tak'){
  4.         if (zapytanie_mysql_insert('uzytkownicy',array(
  5.                 'id'=>'''',
  6.                 'login'=>'''.$f_login.''',
  7.                 'haslo'=>'''.$f_haslo1.''',
  8.                 'email'=>'''.$f_email1.''',
  9.                 'imie'=>'''.$f_imie.''',
  10.                 'nazwisko'=>'''.$f_nazwisko.''',
  11.                 'data_rejestracji'=>'''.time().''',
  12.                 'data_ostatnia'=>'''',
  13.                 'data_aktywacji'=>'''',
  14.                 'uprawnienia'=>'''.'user'.''',
  15.                 'aktywny'=>'''.$akt.''',
  16.                 'kod_aktywacyjny'=>'''.$kod_aktywacyjny.'''
  17.         ))){
  18.  
  19.             $sess_dodano='tak';
  20.             session_register("sess_dodano");
  21.         }
  22.     }
  23.  
  24. ?>


Na oko wszystko fajnie -> tylko że zmienna się nie rejestruje w sesji, co więcej nie pomogło nawet ponowne startowanie sesji przed samym session_register, to samo polecenie w index.php działa. Pomocy.... smile.gif


P.S.
żeby nie było krzyku biggrin.gif że nie ma $_SESSION['sess_dodano'] tylko jest po prostu $sess_dodano więc już pokazuje początek strony index.php

  1. <?php
  2.  
  3. extract($_COOKIE);
  4.  
  5. extract($_SESSION);
  6. extract($_GET);
  7. extract($_POST);
  8. extract($_SERVER);
  9.  
  10. ?>


Zmiennych jest dużo i ciągłe pisanie $_COSTAM['cos'] -> było by bardzo uciążliwe, a w ten sposób można uprościć sobie życie winksmiley.jpg

Ten post edytował mcstar 18.03.2006, 04:49:24


--------------------
Pozdrawiam serdecznie
Marcin
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
sf
post 18.03.2006, 07:13:08
Post #2





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


To oczywiscie, ze Ci to nie zadziala, niby czemu by miało działać? Uzywasz extract, wiec ta zmienna potem juz nie jest zmienna sesyjna, tylko zwykla zmienna. A to nie jest ulatwianie sobie zycia tylko tworzenie dziur w aplikacji.

Ten post edytował sf 18.03.2006, 07:14:34


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
mcstar
post 18.03.2006, 12:03:21
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 8.07.2003

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


No oczywiście że zmienna później powinna stać się zwykła zmienną - problem leży w tym że nie ma co się stać tą zwykła zmienną winksmiley.jpg bo sesja jest zupełnie pusta... problem leży w tym że session_register nic nie rejestruje!! Jak zarejestrowałem w innym pliku tą zmnienną to aplikacja ruszyła bez zarzutu... i odczytała wszystko bez problemu. Setno problemu leży w tym, że session_register i session_unregister działa tylko w index.php nie można użyć tego w plikach pobieranych za pomocą require_once (a w zasadzie to można tylko że efekt jest taki sam, tzn brak efektu, plik na serwerze z sesją ma: 0 kB). Z resztą jeśli wyrzucę extract($_SESSION); i będę odczytywał za pomocą $_SESSION['sess_dodano'] to aplikacja działa tak samo jak teraz - sesja jest pusa i nic się do niej nie chce zarejestrować.

Ten post edytował mcstar 18.03.2006, 12:07:05


--------------------
Pozdrawiam serdecznie
Marcin
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 Wersja Lo-Fi Aktualny czas: 17.06.2025 - 12:53