Hm, to może zabrzmieć trochę dziwnie. Mieliśmy pewne problemy z konkretną przeglądarką w bardzo specyficznym stanie i ostatecznie zawęziliśmy problem do faktu, że nie wykonywaliśmy poprawnie starych sesji po wykonaniu session_regenerate_id(). Sądzę, że rozwiązałem ten problem, wykonując teraz session_regenerate_id (true), ale jak można zweryfikować, że poprzednie sesje naprawdę już nie istnieją? Ktoś zasugerował cURL, ale nie mogę znaleźć sposobu na obejrzenie ich dokumentów. Niestety (?) Szef nie przyjmuje "po prostu działa" na odpowiedź, więc naprawdę doceniam każdą radę!jak sprawdzić, czy stara sesja jest naprawdę zniszczona?
Odpowiedz
Domyślnie session_regenerate_id();
zastąpi tylko bieżącą sesję na nową. Tak więc stary plik sesji nie musi zostać usunięty. Ale wykonanie session_regenerate_id(true);
spowoduje usunięcie starego pliku sesji. (http://php.net/session_regenerate_id)
Aby sprawdzić, czy stara sesja zostanie usunięta można zrobić coś takiego
<?php
$file=ini_get('session.save_path')."/sess_".session_id();
$gotDeleted = file_exists($file);
?>
Można również zrobić session_destroy()
. Jeśli zachowujesz niektóre zmienne, możesz wypróbować unset()
dla konkretnych wartości $_SESSION
.
Tak, w większości przypadków jest to prawda, ale w niektórych szczególnych przypadkach to nie zadziała. Zwłaszcza gdy używasz kodu session_name ("WHATEVERNAMESESSID"). Nie ma sposobu, aby go usunąć. Sesja pozostaje tam na zawsze, dopóki przeglądarka (firefox) nie jest już blisko. Bardzo dziwny! – B4NZ41
Aby upewnić się, że dane sesji zniknęły, należy spojrzeć na backend oszczędzania sesji. Domyślnie przechowuje sesje jako zwykłe pliki dyskowe (dlatego na przykład sesja przeżywa restart komputera). Możesz przejrzeć je i sprawdzić, czy odpowiadające sesji, którą obserwujesz, zostały skutecznie usunięte.
Lub, jeśli jest to taka ważna informacja, możesz zbudować własne zaplecze sesji (co nie jest wcale trudne), aby mieć jeszcze większą kontrolę i więcej opcji debugowania (możesz ręcznie zniszczyć dane i można dodać wyciągi z logów, aby wykazać, że dane zostały usunięte).
Zobacz tutaj: http://php.net/manual/en/function.session-set-save-handler.php
lub tutaj: http://devzone.zend.com/article/141
- 1. Jak sprawdzić, czy sesja jest aktywna?
- 2. Jak sprawdzić, czy sesja PHP jest pusta?
- 3. Jak sprawdzić, czy sesja istnieje, czy nie?
- 4. Jak sprawdzić, czy sesja szyn jest już załadowana?
- 5. Jak sprawdzić, czy sesja ChromeCast jest już w toku?
- 6. Aby sprawdzić, czy sesja jest dostępna lub nie
- 7. Jak sprawdzić, czy sesja wygasła, czy nie w asp.net
- 8. Gdzie i jak sprawdzić, czy pamięć podręczna hibernacji naprawdę działa
- 9. Czy __del__ naprawdę jest destruktorem?
- 10. Czy KillTimer jest naprawdę potrzebny?
- 11. Czy ta sesja logowania jest bezpieczna?
- 12. jak się dowiedzieć, czy sesja audio jest aktywna w iOS
- 13. Jak sprawdzić, czy jest konsola?
- 14. Jak duży jest sesja Meteor
- 15. jak sprawdzić, czy słowo jest palindromem?
- 16. Codeigniter i PHP sprawdź czy sesja istnieje
- 17. Jak sprawdzić, czy mój DirectoryEntry jest naprawdę podłączony do mojego katalogu LDAP?
- 18. Jak mogę sprawdzić, czy Dispatcher.DisableProcessing jest aktywny?
- 19. Jak sprawdzić, czy jest sobota/niedziela?
- 20. Jak mogę sprawdzić, czy scenarzysta jest zamknięty?
- 21. Wykryj, czy sesja PHP istnieje
- 22. Czy usługa fastcall jest naprawdę szybsza?
- 23. Czy CultureInfo.CurrentCulture jest naprawdę potrzebne w String.Format()?
- 24. Przechowuj ciasteczko, nawet jeśli sesja jest zamknięta
- 25. Czy Python GIL jest naprawdę dla interpretera?
- 26. Czy usługa .NET Remoting jest naprawdę przestarzała?
- 27. Współbieżność Haskella - czy forkIO jest naprawdę niedeterministyczne?
- 28. Jak ciężki jest naprawdę QObject?
- 29. CodeIgniter - Jak sprawdzić sesja ma być używany w każdych metod
- 30. com.fasterxml.jackson.databind.JsonMappingException: wersja Jackson jest zbyt stara 2.5.3
Wygląda na to, że ludzie z SO mają tendencję do pisania pytań, których nie rozumieją. co dokładnie masz na myśli pod "sesją"? Jakie materiały mają znaczenie? I dlaczego jesteś tak pewny, że naprawdę ograniczyłeś problem? –