Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wylogowanie, przez cofanie strony.
Forum PHP.pl > Forum > PHP
waqmaz
Cześć. Mam rejestracje, logowanie i wylogowanie na stronie.
Problem w tym, że kiedy się zaloguję i poklikam w różne linki na stronie, wtedy, gdy cofam sobie stronę tymi strzałkami od przeglądarki (wstecz), to po kilku takich kliknięciach, czasem wraz z pojawieniem się:
, ale nie zawsze i kliknięciu prześlij, po prostu na stronie jest napisane, że nie jestem zalogowany. Normalnie w takim wypadku powinienem wdusić tylko odśwież i już powinienem być zalogowany od nowa, no ale nie jestem jednak zalogowany. W czym może tkwić problem? Session_start() mam w index.php. i to do niego pobieram całe logowanie i wylogowanie ; /

To może jeszcze jedno pytanie. Kiedy wyłączę stronę będąc wylogowanym po ponownym jej włączeniu już jestem wylogowany. Wie ktoś jak przechować to, że jestem zalogowany?

Pliki COOKIES? Jakieś przykłady, pomysły? ; <
CuteOne
1. Podczas logowania po zapisaniu danych do sesji wyślij nagłówek, który wymusi na przeglądarce przejście do innej strony.
  1. header('Location: http:// example . pl');


2. Przykłady użycia cookie znajdziesz na necie - google nie boli
waqmaz
To nie o to chodzi. Po za tym header w sesji nie mogę użyć, bo wywala już błąd, gdyż wysłano sesję. Moje logowanie w index.php prowadzi do index.php, więc użycie header było by także bez sensu ; /
CuteOne
1. Nie rozumiesz chyba istoty takiego "zagrania" - uniemożliwia on ponowne wysłanie tych samych danych więc nie jest bezsensu.. no ale jak widać ty wiesz lepiej
2. Na błąd, który przytoczyłeś również jest rozwiązanie:

na początku pliku index.php dodaj


a na końcu
waqmaz
Chyba się troszkę pośpieszyłem z tym pomógł, gdyż skrypt jednak nie działa.
  1. <?php ob_start();
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  4. <head>
  5. <title>dgdfgd</title>
  6. </head>
  7. <body>
  8.  
  9. //kody
  10.  
  11. </body>
  12. </html>
  13. <?php ob_end_flush(); ?>


Po wyłączeniu strony na czerwony krzyżyk(Zamknij) w prawym rogu, zalogowany użytkownik staje się niezalogowany i tak. ; / Pomógł dałem bo zdawało mi się, że działa, no i za pierwszym razem zadziałało, a teraz już nie działą.

Coś mi się wydaje, że to działa tylko wtedy, kiedy usunę historię z przeglądarki ze wszystkim (ciasteczka itp.), i się zaloguję po raz pierwszy. Wtedy jak wyłączę stronę nadal jestem zalogowany po ponownym włączeniu. Jednak za drugim razem jak wyłączę, już jestem wylogowany.
CuteOne
Ale co to za skrypt... użyj ciasteczek zamiast sesji o czym wspomniałem w pierwszym poście
waqmaz
  1. <?php if($_GET['akcja']!=NULL) { require $_GET['akcja'] . ".php"; }
  2.  
  3. $nazwa_uz = $_POST['nazwa_uz_l'];
  4. $haslo = $_POST['haslo_l'];
  5.  
  6. if ($nazwa_uz && $haslo) {
  7. try {
  8. loguj($nazwa_uz, $haslo);
  9. $_SESSION['prawid_uzyt'] = $nazwa_uz;
  10. }
  11. catch (Exception $e) {
  12. echo 'Zalogowanie niemoliwe. aby ogladac te strony trza byc zxalogowanym.';
  13. wyswietl_link('index.php', 'Powrot');
  14. }
  15. }
  16.  
  17. sprawdz_prawid_uzyt();
  18.  
  19. ?>


Tak wygląda index.php ; /

  1. <?php if($_GET['akcja']!=NULL) { require $_GET['akcja'] . ".php"; }
  2.  
  3. $nazwa_uz = $_POST['nazwa_uz_l'];
  4. $haslo = $_POST['haslo_l'];
  5.  
  6. if ($nazwa_uz && $haslo) {
  7. try {
  8. loguj($nazwa_uz, $haslo);
  9. $_SESSION['prawid_uzyt'] = $nazwa_uz;
  10. }
  11. catch (Exception $e) {
  12. echo 'Zalogowanie niemoliwe. aby ogladac te strony trza byc zxalogowanym.';
  13. wyswietl_link('index.php', 'Powrot');
  14. }
  15. }
  16.  
  17. sprawdz_prawid_uzyt();
  18.  
  19. ?>


Tak wygląda index.php ; /
CuteOne
1. Widzę, że includujesz akcje do index.php więc dlaczego nie stworzysz osobnego pliku dla tej akcji(logowania)?
2. cookie
waqmaz
No mam przecież:
loguj($nazwa_uz, $haslo);

haha.gif

  1. function loguj($nazwa_uz, $haslo) {
  2.  
  3. $lacz = lacz_bd();
  4.  
  5. $wynik = $lacz->query("select * from uzytkownik where nazwa_uz='".$nazwa_uz."' and haslo = sha1('".$haslo."')");
  6. if (!$wynik) {
  7. throw new Exception('Logowanie sie nie powiodlo.');
  8. }
  9.  
  10. if ($wynik->num_rows>0) {
  11. return true;
  12. } else {
  13. throw new Exception('Logowanie sie nie powiodlo.');
  14. }
  15. }


Ale to nie ma nic do rzeczy, ja chce po prostu, aby po wyjsciu z przegladarki nadal uzytkownik byl zalogowany przez jakies 5 minut powiedzmy ;[
CuteOne
Masz problemy ze zrozumieniem słowa pisanego? użyj cookie zamiast sesji
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.