Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Różne sesje i cookie w zakładkach Google Chrome
Forum PHP.pl > Forum > PHP
Krokodyl
Witam.

Mam dziwny problem z Google Chrome.
W dwóch plikch index.php i admin.php sa tworzone sesje.
Po wylistowaniu tablic we wspomnianych plikach i nawet wielokrotnym odświezeniu,

zakładka index.php wyświetla z tablicy $_SESSION
Array ( [ile] => 12 )

zakładka admin.php wyświetla z tablicy $_SESSION
Array ( [logo] => ok )

To samo z tablicą $_COOKIE.

W Firefox i Opera zakładki widza wszystkie zmienne z tablic globalnych.
Array ( [ile] => 12 [logo] => ok )
Wygląda to jakby Chrome traktował zakładki jak osobne okna/przegladarki tudziesz osobne tablice sesji dla kart?

Ktoś wie o co chodzi z tym Chromem? oneeyedsmiley02.png

Liczę na Waszą pomoc.
b4rt3kk
Jakbyś jeszcze przedstawił mechanizm tworzenia zmiennych sesyjnych?

Próbowałeś coś takiego? Plik index.php:

  1. $_SESSION['ile'] = 50;
  2. var_dump($_SESSION);


Plik admin.php:

  1. $_SESSION['logo'] = 'dupa';
  2. var_dump($_SESSION);


I przejdź teraz z indexu do admin i zobacz co się wyświetli.

Dodatkowo porównaj session_key() na stronie index i admin.
Krokodyl
Zmienne sa tworzone tak jak podałeś.

Zrobiłem jak napisałeś i mam taki wynik po logowaniu

  1. array(2) { ["ile"]=> string(2) "12" ["logo"]=> string(2) "ok" } array(2) { ["ile"]=> string(2) "12" ["logo"]=> string(2) "ok" }


po przejściu do index.php faktycznie widać w tablicy $_SESSION obie zmienne.

Mam dwa pytania
1. Jak 'załadować' zmienne do $_SESSION bez 'printowania' [ przez var_export() ? ]
2. Dlaczego Chrome wymaga takiej specjanej troski? Trochę to chore. Reszta przeglądarek, których używam czyta tablie $_SESSION bez takich zabiegów.
b4rt3kk
Domyślam się, że tworzysz zmienne sesyjne bez wystartowania sesji? To raczej reszta przeglądarek nie trzyma standardów w tym zakresie, skoro przechowuje zmienne, mimo braku zainicjowania sesji. Przedstaw swój pierwotny kod.
Krokodyl
Cytat(Krokodyl @ 29.10.2013, 00:55:23 ) *
Zmienne sa tworzone tak jak podałeś.

Napisałem to wyżej.

Czyli
  1. $_SESSION['ile'] = 12;
  2.  
  3. // i po logowaniu w login.php
  4. $_SESSION['logo'] = 'ok';

Po co miałbym używać sesji bez jej wcześniejszej inicjacji?
W obu plikach sesja startuje w pierwszej lini z require('cfg.php')

To samo jest z $_COOKIE.
Jedna zakładka widzi swoje zmienne inna swoje. Jakbyś używał dwóch przeglądarek w dwóch plikach.
Ten sam schemat co w $_SESSION.

Jak to wytłumaczysz dla Google Chrome?
To jest pytanie kluczowe.
jackraymund
Też miałem problemy ze startem sesji z innych plików, też nikt mi nie odpowiedział.
Dokładniej to importowałem klase z pliku, w niej włączałem session_start lecz odczyt w innych miejscach był niemożliwy.
Alternatywą stało się użycie przed każdą funkcja wymagajaca sesji, session_start() i na koncu session_write_close()
Spróbuj przed session_start przestawić ustawienia
  1. session_set_cookie_params(3600*24*4,"/",'domena.pl'); // na 4 dni
  2. ini_set("session.gc_maxlifetime", 3600*24*4);


Cytat
Mam dwa pytania
1. Jak 'załadować' zmienne do $_SESSION bez 'printowania' [ przez var_export() ? ]
2. Dlaczego Chrome wymaga takiej specjanej troski? Trochę to chore. Reszta przeglądarek, których używam czyta tablie $_SESSION bez takich zabiegów.

1. Załadować, czyli ustawić zmienną? "$_SESSION['ile'] = 12;", dodatkowo polecam do var_dumpa wyprintować tag <pre> i po </pre> zamienia PHP_EOL na <br>(taki mała pomoc ;p)
2. Zawsze to firefox był specjalnej troski ze względu że nie jest komercyjnym projektem. Jakie zabiegi masz na myśli?
3. Powiedz mi jaki masz serwer? Nie przypadkiem lighttpd?
Krokodyl
ZNALAZŁEM!

Mój bład! facepalmxd.gif
Ładowałem cfg.php (gdzie jest start sesji) przez require_once() i zmieniłem na require()

Wygląda na to, że narobiłem niepotrzebnego zamieszania.
Ale kilka interesujących rzeczy się nauczyłem!

Dziękuje za pomoc.
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.