eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.wwwJak zapanować nad sesjami w PHP?
Ilość wypowiedzi w tym wątku: 13

  • 1. Data: 2010-09-12 19:52:12
    Temat: Jak zapanować nad sesjami w PHP?
    Od: Marek <b...@e...com>

    Witam,

    Doświadczam ciekawego zjawiska pod IE8. Nie sprawdzałem pod innymi
    przeglądarkami. Mam spory problem z rozwiązaniem sytuacji. Otóż otwieram
    sobie dwie zakładki do jednego serwisu www w technologii PHP. Adesy są w
    postaci:

    www.serwis.x
    www.serwis.x/admin

    Obie zakładki zyskują w PHP inne identyfikatory sesji. W serwisie
    www.serwis.x/index.php skrypt startowy zawiera Flasha, który w tle łączy
    się z innym skryptem np. www.serwis.x/flash.php Okazuje się, że w skrypcie
    flash.php odtwarzany jest zupełnie inny identyfikator sesji niż był on w
    index.php ustanowiony. Wraz z cookies został przekazany ID sesji z innej
    zakładki: www.serwis.x/admin!!!

    Dzieje się tak tylko gdy pierwszy raz wchodzimy na stronę startową, w
    sensie, że nie odwiedzaliśmy przedtem żadnej innej wewnętrznej strony
    serwisu. Czy ktoś z Was wie jak wymusić przekazywanie właściwego
    identyfikatora sesji?


  • 2. Data: 2010-09-14 15:40:34
    Temat: Re: Jak zapanować nad sesjami w PHP?
    Od: Borys Pogoreło <b...@p...edu.leszno>

    Dnia Sun, 12 Sep 2010 21:52:12 +0200, Marek napisał(a):

    > flash.php odtwarzany jest zupełnie inny identyfikator sesji niż był on w
    > index.php ustanowiony. Wraz z cookies został przekazany ID sesji z innej
    > zakładki: www.serwis.x/admin!!!

    Kombinowanie z różnymi sesjami w ramach tej samej domeny to proszenie się
    o kłopoty. Zwłaszcza, gdy adresy się na siebie nakładają.

    Użyj jednej sesji i w niej rozróżniaj czego dotyczy - serwisu czy admina.

    --
    Borys Pogoreło
    borys(#)leszno,edu,pl


  • 3. Data: 2010-09-14 21:15:06
    Temat: Re: Jak zapanować nad sesjami w PHP?
    Od: Marek <b...@e...com>

    Dnia Tue, 14 Sep 2010 17:40:34 +0200, Borys Pogoreło napisał(a):


    > Kombinowanie z różnymi sesjami w ramach tej samej domeny to proszenie się
    > o kłopoty. Zwłaszcza, gdy adresy się na siebie nakładają.
    >
    > Użyj jednej sesji i w niej rozróżniaj czego dotyczy - serwisu czy admina.

    Sęk w tym, że to nie ja kombinuję lecz przeglądarka + PHP. To naturalny
    sposób funkcjonowania tego mechanizmu. Wymuszenie tej samej sesji to jest
    dopiero kombinowanie. Trzeba to specjanie oprogramowywać i chyba zawsze
    będzie szwankować.


  • 4. Data: 2010-09-15 11:16:25
    Temat: Re: Jak zapanować nad sesjami w PHP?
    Od: "William Bonawentura" <n...@i...pl>


    Użytkownik "Marek" <b...@e...com> napisał w wiadomości
    news:10n397sauf42u$.15wnth0ldc7z0$.dlg@40tude.net...
    > Dnia Tue, 14 Sep 2010 17:40:34 +0200, Borys Pogoreło napisał(a):
    >
    >
    >> Kombinowanie z różnymi sesjami w ramach tej samej domeny to proszenie
    >> się
    >> o kłopoty. Zwłaszcza, gdy adresy się na siebie nakładają.
    >>
    >> Użyj jednej sesji i w niej rozróżniaj czego dotyczy - serwisu czy
    >> admina.
    >
    > Sęk w tym, że to nie ja kombinuję lecz przeglądarka + PHP. To naturalny
    > sposób funkcjonowania tego mechanizmu. Wymuszenie tej samej sesji to jest
    > dopiero kombinowanie. Trzeba to specjanie oprogramowywać i chyba zawsze
    > będzie szwankować.
    >
    W takim razie musisz sobie podebugować jakie cookies i z jakimi parametrami
    ścieżki są ustawiane (np. CookieMonster w Firefoxie).


  • 5. Data: 2010-09-15 12:11:52
    Temat: Re: Jak zapanować nad sesjami w PHP?
    Od: Marek <b...@e...com>

    Dnia Wed, 15 Sep 2010 13:16:25 +0200, William Bonawentura napisał(a):


    > W takim razie musisz sobie podebugować jakie cookies i z jakimi parametrami
    > ścieżki są ustawiane (np. CookieMonster w Firefoxie).

    No dobrze, zerknąłem z ciekawości. Chyba coś nie działa najlepiej ten
    dodatek. Mam jedno cookies z danej domeny a w nazwie, zawartości itp
    wyświetla się "nie zaznaczono ciasteczka" choć klikam na nim do upadłego.
    Gdy wszedłem w obszary serwisu gdzie wygenerowałem samodzielnie dodatkowo
    dwa inne ciasteczka: pokazuje mi się zawartość tylko jednego. Gdy klikam na
    pozostałych, to cały czas pokazuje mi tylko stan tego pierwsze. (Windows 7
    x64). Gdy usunę pierwsze, to dwa pozostałe nie zawierają żadnych informacji
    (choć to nieprawda).

    Zerknij np. tu http://www.chlopskiejadlo.pl/main.php i zobacz cookies. Nie
    mozna odczytać PHPSESSID, screenWidth, _utma. Pokazuje stany innych
    ciasteczek.

    Wracając do wątku: w czym miałaby mi pomóc ta informacja? PHP wysyła
    cookies takie jak wysyła a przeglądarka je tylko zapisuje i odczytuje w
    celu przesłania z powrotem do PHP w kolejnych zapytaniach. Wygląda to tak
    jakby powstawał hazard w chwili jednoczesnego (i tylko wtedy) otwierania
    dwóch zakładek. Gdy otworzymy jedną zakładkę a potem drugą (ręcznie) to
    zjawisko nie wystąpi. Gdy ręcznie sprawdziłem oba ciasteczka, to wyglądają
    ok. Jedno z nich jest dla ścieżki / a drugie /admin.

    Ta zakładka, która się wczyta jako druga tak jakby nadpisywała cookie tej
    pierwszej (w trybie automatycznego otwierania zakładek). No i dzieje się to
    tylko przy otwieraniu browsera, jak wspomniałem. Gdy poruszamy się potem w
    obrębie obu zakładek już nie ma efektu mieszania cookies.


  • 6. Data: 2010-09-15 16:44:12
    Temat: Re: Jak zapanować nad sesjami w PHP?
    Od: Borys Pogoreło <b...@p...edu.leszno>

    Dnia Wed, 15 Sep 2010 14:11:52 +0200, Marek napisał(a):

    > Zerknij np. tu http://www.chlopskiejadlo.pl/main.php i zobacz cookies. Nie
    > mozna odczytać PHPSESSID, screenWidth, _utma. Pokazuje stany innych
    > ciasteczek.

    U mnie wszystko OK. 6 ciasteczek, każde wygląda poprawnie.

    > zjawisko nie wystąpi. Gdy ręcznie sprawdziłem oba ciasteczka, to wyglądają
    > ok. Jedno z nich jest dla ścieżki / a drugie /admin.

    Powtarzam - nie kombinuj z ciasteczkami, gdzie nakładają się ścieżki.
    Efekty mogą być różne i niekoniecznie takie, jakich sobie życzysz.

    Nie kombinowałem nigdy z Flashem + sesje, ale czy on potrafi poprawnie
    pobrać PHPSESSID by później wszystkie zapytania wysyłać z poprawnym
    ciasteczkiem? Czy automatycznie dostaje własną sesję, bo nic nie wysyła?

    --
    Borys Pogoreło
    borys(#)leszno,edu,pl


  • 7. Data: 2010-09-15 18:12:21
    Temat: Re: Jak zapanować nad sesjami w PHP?
    Od: Marek <b...@e...com>

    Dnia Wed, 15 Sep 2010 18:44:12 +0200, Borys Pogoreło napisał(a):

    > Dnia Wed, 15 Sep 2010 14:11:52 +0200, Marek napisał(a):
    >
    >> Zerknij np. tu http://www.chlopskiejadlo.pl/main.php i zobacz cookies. Nie
    >> mozna odczytać PHPSESSID, screenWidth, _utma. Pokazuje stany innych
    >> ciasteczek.
    >
    > U mnie wszystko OK. 6 ciasteczek, każde wygląda poprawnie.

    A zobacz jak u mnie: :-(
    http://img215.imageshack.us/img215/9263/99286252.jpg

    Przypuszczam, że z W7 x64 ten plugin nie działa poprawnie.

    > Powtarzam - nie kombinuj z ciasteczkami, gdzie nakładają się ścieżki.
    > Efekty mogą być różne i niekoniecznie takie, jakich sobie życzysz.

    NIE UŻYWAM ciasteczek - raz jeszcze powtarzam :-) One same się używają bo
    TAK DZIAŁAJĄ sesje w PHP.

    > Nie kombinowałem nigdy z Flashem + sesje, ale czy on potrafi poprawnie
    > pobrać PHPSESSID by później wszystkie zapytania wysyłać z poprawnym
    > ciasteczkiem?

    Flash niczego nie musi pobierać, to PHP mu "daje" ID sesji bezpośrednio do
    FlashVars. Potem Flash łączy się z innym skryptem, który debuggingowo
    przykazuje swoje ID sesji. Flash wyświetla oba i okazuje się, że zazwyczaj
    są inne choć sporadycznie bywają takie same. To jest to zjawisko hazardu o
    jakim wspominałem, które występuje tylko wtedy gdy automatycznie na starcie
    browsera otwierają się 2 zakładki o adresach do dwóch różnych sekcji
    serwisu.

    > Czy automatycznie dostaje własną sesję, bo nic nie wysyła?

    Flash, a konkretnie plugin nie działa w oderwaniu od browsera. Plugin nie
    dubluje funkcji browsera lecz korzysta z jego funkcji w zakresie łączenia
    się z siecią. Dlatego masz inne pluginy pod różne przeglądarki. Tak więc de
    facto pytasz o to jak działa browser. A browser w tym inicjalnym momencie
    działa źle: wysyła cookies z ID sesji z sąsiedniej zakładki.


  • 8. Data: 2010-09-15 21:19:10
    Temat: Re: Jak zapanować nad sesjami w PHP?
    Od: Borys Pogoreło <b...@p...edu.leszno>

    Dnia Wed, 15 Sep 2010 20:12:21 +0200, Marek napisał(a):

    > NIE UŻYWAM ciasteczek - raz jeszcze powtarzam :-) One same się używają bo
    > TAK DZIAŁAJĄ sesje w PHP.

    Używasz. Niejawnie czy nie, ale używasz.

    I możesz parametry tych ciasteczek sobie zmienić:
    http://pl2.php.net/manual/en/function.session-set-co
    okie-params.php

    Nie wymuszasz gdzieś na ciasteczku sesji ścieżki /admin ?
    Ew. w drugą stronę - wymuś /

    >> Czy automatycznie dostaje własną sesję, bo nic nie wysyła?
    >
    > Flash, a konkretnie plugin nie działa w oderwaniu od browsera. Plugin nie
    > dubluje funkcji browsera lecz korzysta z jego funkcji w zakresie łączenia
    > się z siecią. Dlatego masz inne pluginy pod różne przeglądarki. Tak więc de
    > facto pytasz o to jak działa browser. A browser w tym inicjalnym momencie
    > działa źle: wysyła cookies z ID sesji z sąsiedniej zakładki.

    Pytam tylko jak kwestię ciastek rozwiązali we Flashu, bo ja na niego mam
    alergię. Skoro jednak dostaje ID we flashvars, to powinien być tego
    świadomy i sobie z tym radzić. Choć w sumie race condition mogłoby wystąpić
    - o ile twórcy przeglądarki takiej sytuacji nie przewidzieli (a IMO
    powinni).

    --
    Borys Pogoreło
    borys(#)leszno,edu,pl


  • 9. Data: 2010-09-16 05:40:33
    Temat: Re: Jak zapanować nad sesjami w PHP?
    Od: "William Bonawentura" <n...@i...pl>


    Użytkownik "Marek" <b...@e...com> napisał w wiadomości
    news:wqwg0qshzki6.13x1ay6x6wvh1$.dlg@40tude.net...
    > Dnia Wed, 15 Sep 2010 13:16:25 +0200, William Bonawentura napisał(a):
    >
    >

    Mam wrażenie, że obserwujesz styuację gdy request ze ścieżką /admin wysyła
    cookie ze ścieżki / (bo jest bardziej ogólna) a z odpowiedzią otrzymuje
    setcookie ze ścieżką /admin. Przy kolejnym zapytaniu wysyła już to nowe
    cookie z "precyzyjniejszą" ścieżką. Jeśli tak to jest to normlane.


  • 10. Data: 2010-09-16 05:41:40
    Temat: Re: Jak zapanować nad sesjami w PHP?
    Od: "William Bonawentura" <n...@i...pl>


    Użytkownik "William Bonawentura" <n...@i...pl> napisał w wiadomości
    news:i6saki$dlg$1@news2.ipartners.pl...
    >
    > Użytkownik "Marek" <b...@e...com> napisał w wiadomości
    > news:wqwg0qshzki6.13x1ay6x6wvh1$.dlg@40tude.net...
    >> Dnia Wed, 15 Sep 2010 13:16:25 +0200, William Bonawentura napisał(a):
    >>
    >>
    >
    > Mam wrażenie, że obserwujesz styuację gdy request ze ścieżką /admin wysyła
    > cookie ze ścieżki / (bo jest bardziej ogólna) a z odpowiedzią otrzymuje
    > setcookie ze ścieżką /admin. Przy kolejnym zapytaniu wysyła już to nowe
    > cookie z "precyzyjniejszą" ścieżką. Jeśli tak to jest to normlane.

    Całkiem możliwe, że rozwiazaniem twojego problemu będzie wymuszenie w tym
    PHP aby dla tej dedykowanej sesji "admin" stosował również inną nazwę cookie

strony : [ 1 ] . 2


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: