Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] problem z sesją - nie przekazuje sesji przy kliknięciu
--olek--
post 9.10.2007, 17:26:57
Post #1





Goście







Witam, mam problem z sesją w PHP, przeszukałem manuale i fora, ale problemu nie rozwiązałem, może ktoś z was pomoże smile.gif

Mianowicie robię stronkę, która prawie w całości jest w jednym pliku (index.php), w którym można się zalogować, wyświetla się wtedy to, co dla niezalogowanych ukryte. Kod jest długi, więc wrzucę tylko ważniejsze fragmenty:

Początek pliku:
  1. <?php
  2. if($_POST['logout']==1) $_SESSION['user'] = 0;
  3. ?>


Trochę później mamy wyświetlanie tego co dostępne tylko po zalogowaniu:
  1. <?php
  2. if(isset($_SESSION['user']) && $_SESSION['user']!=0) submenu(2, $_GET['sub']);
  3. ?>

( funkcja submenu() to moja funkcja wyświetlająca dodatkowe menu )

Natomiast po logowaniu przekazanie nazwy użytkownika do zmiennej sesyjnej wygląda tak:
  1. <?php
  2. if(haslo_ok($_POST['login'], $_POST['pass'])){
  3. $_SESSION['user'] = $_POST['login'];
  4. }
  5. ?>

Logowanie działa, natomiast po kliknięciu w jakiś link i przeładowaniu strony zmienna $_SESSION['user'] przestaje istnieć, większość linków mam zbudowane na sposób:
index.php?id=x&sub=y
Próbowałem więc dodać id sesji do adresu w ten sposób:
  1. <?php
  2. $sid = session_id();
  3. echo "<a href=\"index.php?id=1&sub=1&PHPSESSID=$sid\" class=\"normal\">jakis link </a>";
  4. ?>

ale w niczym to nie pomogło.

Męczę się z tym cały dzień, a sprawa jest dosyć pilna, jeśli ktoś ma pomysł co robię nie tak to z góry dzięki za pomoc!
Go to the top of the page
+Quote Post
krzysiekk
post 9.10.2007, 21:03:53
Post #2





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 13.03.2006
Skąd: Jaworze

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


czesc a jakie masz kodowanie pliku podczs zapisu questionmark.gif
ja miałem kiedys taki prblem ktory zniknął kiedy zmieniłem kodowanie na UTF-8 (podczas zapisu) z ANSI
Go to the top of the page
+Quote Post
webdice
post 9.10.2007, 21:09:00
Post #3


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




W pozostałych plikach masz session_start?
Go to the top of the page
+Quote Post
--olek--
post 10.10.2007, 16:27:58
Post #4





Goście







Cytat(krzysiekk @ 9.10.2007, 21:03:53 ) *
czesc a jakie masz kodowanie pliku podczs zapisu questionmark.gif
ja miałem kiedys taki prblem ktory zniknął kiedy zmieniłem kodowanie na UTF-8 (podczas zapisu) z ANSI


Hmm, nie rozumiem pytania. Podczas zapisu czego? Jeśli pytasz o stronę kodową, to standardowo iso-8859-2, ale podejrzewam, że nie o to to pytanie.

Co do pytania o session_start() w pozostałych plikach, to tak jak to wcześniej pisałem nie ma na razie innych plików poza index.php, ale przy przeładowaniu tego pliku sesja gdzieś się "gubi".
Go to the top of the page
+Quote Post
Berkovits
post 10.10.2007, 16:38:50
Post #5





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.08.2007

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


Zmienna $_SESSION['user'] przestaje istnieć, czy jest wyzerowywana?
Go to the top of the page
+Quote Post
-Merko-
post 10.10.2007, 16:54:49
Post #6





Goście







Cytat
czesc a jakie masz kodowanie pliku podczs zapisu questionmark.gif
ja miałem kiedys taki prblem ktory zniknął kiedy zmieniłem kodowanie na UTF-8 (podczas zapisu) z ANSI


To jest kodowanie do zapisu na bazy jak cos ale ty raczej nie masz poloaczenia z bazą MySQL jak sadze co??
Go to the top of the page
+Quote Post
--olek--
post 10.10.2007, 18:48:02
Post #7





Goście







$_SESSION['user'] przestaje istnieć, isset($_SESSION['user']) zwraca false
Go to the top of the page
+Quote Post
--olek--
post 10.10.2007, 18:53:05
Post #8





Goście







Cytat(Merko @ 10.10.2007, 16:54:49 ) *
To jest kodowanie do zapisu na bazy jak cos ale ty raczej nie masz poloaczenia z bazą MySQL jak sadze co??


Mam połączenie z MySQL, natomiast nie ustawiałem żadnego kodowania, czyli musiało pozostać domyślne. Ale jakie znaczenie ma połączenie z bazą MySQL co do działania sesji? Kiedyś już kilka razy stosowałem sesje w podobny spoób i działało. Teraz zupełnie nie wiem co jest nie tak, w sumie nie ma za bardzo różnic w porównaniu do poprzednich moich skryptów, tyle że zmieniłem serwer.
Dodam, że z bazą łącze się w ten sposób:
  1. <?php
  2. try{
  3. $polaczenie = mysql_connect($serwer, $uzytkownik, $haslo_baza);
  4. }catch (SQLException $e){
  5. echo $e;
  6. }catch (Exception $e){
  7. echo $e;
  8. };
  9. ?>

czy to ma jakiś wpływ na sesję i należało by coś tu zmienić?
Go to the top of the page
+Quote Post
krzysiekk
post 10.10.2007, 22:46:51
Post #9





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 13.03.2006
Skąd: Jaworze

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


witam jesli chodzi o zapisywanie to mam na mysli cos takiego
(ja uzywam edit++ do pisania skryptow i wogole htmla)
otwieram nowy plik i pisze skrypt i gdy daje zapisz lub zapisz jako to nadaje mu nazwe np index.php i mam mozliwosc zakodowania pliku podczas zapisu UTF-8 lub ANSI i o to mi chodzilo
pozdrawiam
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: 24.07.2025 - 20:40