Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]Sesje, zniszczenie sesji
watas
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.06.2009

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


Witam,
Potrzebuje troche pomocy lub jakiejs wskazowki bo nie moge sobie z tym poradzic, a nic sensownego w tym temacie nie moge znalesc. Wiec do rzeczy, mam sobie oto taki kawalek kodu
  1. ...
  2. echo "<form action='index.php' method='post'>
  3. <input type='tekst' name='n_name' value='$name' maxlength='30'>
  4. <input type='tekst' name='n_pass' value='$pass' maxlength='30'>";
  5. <input type='submit' name='submit' value='ZAPISZ'>
  6. </form>";
  7. ...
  8. if (isset($n_name) || isset($n_pass)){
  9. $tmp = array($n_name,sha1($n_pass));
  10. $dane = implode("||",$tmp);
  11. if(file_exists("user.php")){
  12. $plik = "user.php";
  13. $fp = fopen($plik, "w");
  14. @fwrite($fp,$dane) or die ("Nie mozna zapisac danych");
  15. fclose($fp);
  16. session_destroy(); // <----------- ?
  17. }
  18. }
  19. ...


Chodzi mi dokladnie o niszczenie sesji. Kod zmienia mi haslo i urzytkownika wszytsko dziala poprawnie, ale ... nie tak jak oczekuje :-). W zamysle chcialem uzyskac sytuacje, ze po zapisie w pliku sesja zostaje przerwana i urzytkownik (admin) zostaje przeniesiony z powrotem na strone logowania do panelu. Owszem kod dziala w ten sposob, ale nastepuje zapis i strona "stoi" nie nastepuje przeniesienie. Dopiero jak wystapi odswierzenie strony lub proba przejscia na inna zakladke itp. I tu moje pytanie czy da sie temu jakos zaradzic? Wydaje mi sie, ze probowalem juz wszytskiego, a i moja sesja jest bez ciasteczka. Jesli ktos ma jakies sugestie to prosze o pomoc.

Pozdrawiam
Wojtek M.
Go to the top of the page
+Quote Post
Zyx
post
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


A dlaczego niby przeglądarka/serwer miałyby Cię automatycznie przekierowywać gdziekolwiek, jeśli im nie powiedziałeś, że mają to robić? Dodaj kod robiący przekierowanie i problem rozwiązany.

Ten post edytował Zyx 4.11.2009, 09:53:58


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
Hpsi
post
Post #3





Grupa: Zarejestrowani
Postów: 483
Pomógł: 50
Dołączył: 15.03.2005
Skąd: Poznań

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


zgodzę się, z poprzednikiem twój kod aktualnie nie ma prawa przekierunkować na inną podstronę , poczytaj o
  1. <?php header('location:adres.php'); ? >


Ten post edytował Hpsi+ 4.11.2009, 10:06:27


--------------------
Daiquiri: T1 = (dx/dt * s)^hpsi
Daiquiri: gdzie T1 - Twój czas przybycia na miejsce, dx/dt - prędkość, s droga
Daiquiri: brb trzeba by to poprawić T1 - Czas jaki Ci to zajmie
Daiquiri: Zatem T - czas dotarcia p T1 + T2 gdzie T2 = aktualny czas

===
po prostu kocham ją :D haha
Go to the top of the page
+Quote Post
watas
post
Post #4





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.06.2009

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


oczywiscie na koncu mam skryptu mam header("Location: index.php"); Chodzi mi wlasnie o to automatyczne przekierowanie po wykonaniu procesu zapisu nowego hasla i loginu. Jakos w czoraj nie moglem tego znalesc, mozecie cos podpowiedziec czego szukac?
Go to the top of the page
+Quote Post
Hpsi
post
Post #5





Grupa: Zarejestrowani
Postów: 483
Pomógł: 50
Dołączył: 15.03.2005
Skąd: Poznań

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


  1. ...
  2. echo "<form action='index.php' method='post'>
  3. <input type='tekst' name='n_name' value='$name' maxlength='30'>
  4. <input type='tekst' name='n_pass' value='$pass' maxlength='30'>";
  5. <input type='submit' name='submit' value='ZAPISZ'>
  6. </form>";
  7. ...
  8. if (isset($n_name) || isset($n_pass)){
  9. $tmp = array($n_name,sha1($n_pass));
  10. $dane = implode("||",$tmp);
  11. if(file_exists("user.php")){
  12. $plik = "user.php";
  13. $fp = fopen($plik, "w");
  14. @fwrite($fp,$dane) or die ("Nie mozna zapisac danych");
  15. fclose($fp);
  16.  
  17.  
  18. session_destroy(); // <----------- ?
  19. //tutaj masz koniec procesu
  20. // dajesz sobie tutaj header
  21. header('location:xxx.php');
  22. // kończysz działanie skryptu
  23. exit;
  24. }
  25. }
  26. ...
  27.  


Jesli dobrze rozumiem to ci powinno pomoc
Po całej proceduże przekierunowuje Cię, na stronę xxx.php, dzieki Exit; skrypt nie działa dalej tylko kończy działanie na tym co zrobiłeś


--------------------
Daiquiri: T1 = (dx/dt * s)^hpsi
Daiquiri: gdzie T1 - Twój czas przybycia na miejsce, dx/dt - prędkość, s droga
Daiquiri: brb trzeba by to poprawić T1 - Czas jaki Ci to zajmie
Daiquiri: Zatem T - czas dotarcia p T1 + T2 gdzie T2 = aktualny czas

===
po prostu kocham ją :D haha
Go to the top of the page
+Quote Post
watas
post
Post #6





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.06.2009

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


No wlasnie tez tego probuje i juz to przerabialem wczesniej dodajac do mojego kodu kawalek:
  1. ...
  2. header('location:xxx.php');
  3. ...


Z tym, ze powoduje to wywalenie bledu:
Cannot modify header information - headers already sent by
Poczytalem sobie i znalazlem, ze:

" może pojawić się w przypadku korzystania z edytora do edycji plików php domyślnie stosującego kodowanie utf8. W przypadku gdy zapiszemy plik w kodowaniu utf8, zostaną przesłane dodatkowe znaki znajdujące się na początku pliku i nie widoczne w edytorze."
lub
" oznacza, że nie możemy za pomocą PHP wstawić nagłówków dla danej strony (np. przekierowanie albo zmiana typu 'mime') ponieważ wcześniej wysłaliśmy już jakieś dane do użytkownika (najczęściej kod HTML, dowolny znak, nawet spacje lub znak nowej linii)."

Macie jakies pomysly?

P.S Probowalem tez dodac to przez pentle warunkowa laczac z inputem w formularzu i efekt jest taki sam.

Ten post edytował watas 4.11.2009, 11:08:58
Go to the top of the page
+Quote Post
Hpsi
post
Post #7





Grupa: Zarejestrowani
Postów: 483
Pomógł: 50
Dołączył: 15.03.2005
Skąd: Poznań

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


ob_start() na poczatku skryptu powinno pomoc, to raz, dwa przed header NIE moze być nic wyświetlane ;p


--------------------
Daiquiri: T1 = (dx/dt * s)^hpsi
Daiquiri: gdzie T1 - Twój czas przybycia na miejsce, dx/dt - prędkość, s droga
Daiquiri: brb trzeba by to poprawić T1 - Czas jaki Ci to zajmie
Daiquiri: Zatem T - czas dotarcia p T1 + T2 gdzie T2 = aktualny czas

===
po prostu kocham ją :D haha
Go to the top of the page
+Quote Post
watas
post
Post #8





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.06.2009

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


Wielkie dzieki Hpsi+, bufer pomogl, i to wlasciwie calkiem ciekawa sprawa :-) a juz napewno pomocna. Wszystko dziala jak powinno.
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 Aktualny czas: 21.08.2025 - 19:35