Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] sesje
Forum PHP.pl > Forum > PHP
fernet
Napisalem prosty mechanizm zminy id sesji przy kazdym wywolaniu zalogowanego uzytkownika na stronie.

Dzalala to nastepujaco

Skryp sprawdza czy zmienna sesji ma nalozona wartosc jesli tak to dalej sprawdza czy ciacho uzytkownika ma wartosc bierzacego id sesji jesli tak to nastepuje zmiana id sesji i wysylane jest ciasteczko z nowa wartoscia id sesji.


Wylogowanie nastepuje jesli bierzace id sesji nie je pasuje do wartosci z ciasteczka lub jesli zmienna w sesji nie ma wartosci.

I wszystko smiga ale w stronach "adresowych". Kiedy pisze strony "adresowe" mam na mysli te strony w do ktorych odwoluje sie z adresu przegladarki. Jednak niektore elementow strony sa aktualizowane ajaxowo. Tam tez z chwila kiedy zmianiam id sesji pojawia sie problem.


Chodzi o to ze moge zminic id sesji w skryptach ktore sa wykonywane ze stron adresowych. A skrpyty wykonywalne przez ajaxa traca id sesji czy cos tam w rezultacie wywala mi logout

Zalezy mi by kazda aktywnosc uzytkownika zminiala id sesji i aktualizowala ciasteczko a puki co moge tego dokonac tylko z poziomu zapytan "adresowych".

Za pomoc i zainteresowanie z gory dziekuje i pozdrawiam
okitoki
możesz dać kod?
fernet
blad jaki wyskakuje to taki ze header juz jest i zebym sobie darowal co jest nawet logiczne z tym ze mnie to nie zadawala

wyglada to mniej wiecej tak

index.php (strona adresowa)

  1. <?php
  2. require("include/set_offline.php");
  3. ?>
  4.  
  5. <html>
  6. <a href="java script:bambam();">Odpal ajaxa</a>
  7. <div id="ajaxowy">
  8. <?php include("include/strona_servera.php")?>
  9. </div>
  10. <html>


plik strona_servera.php nie jest strona adresowa i mam tam znowu require("set_offline.php"); no i zwrot tagow html ktore albo z include strony adresowej albo za pomoca ajaxa i responseText przypisuje do <div id="ajaxowy">. Operacja requre include itd w pliku strona_servera.php jest problematyczna jak wpisze tam samo session_start() bez fikolkow ze zmiana id sesj to smiga.


najistotniejsza cześć kodu z set_offline.php

  1. <?php
  2. if(isset($_SESSION['user'])) {
  3.    if(isset($_COOKIE['ciacho'])) {
  4.        if($_COOKIE['ciacho'] == session_id()) {
  5.            //cacy            
  6.            session_regenerate_id();
  7.            setcookie("ciacho",session_id(),time()+60*30,"/" );
  8.  
  9.        } else {
  10.            //zle
  11.        }
  12.    } else {
  13.        //zle
  14.    }    
  15. } else {
  16.    //zle
  17. }
  18. ?>
okitoki
tu tworzysz sesje, modyfikujesz nagłówek exclamation.gif
Kod
require("include/set_offline.php");


potem php wysyła do przeglądarki

Kod
<html>
<a href="javascript:bambam();">Odpal ajaxa</a>
<div id="ajaxowy">


potem mówisz że w pliku <?php include("include/strona_servera.php")?> masz wpis

Kod
require("include/set_offline.php"); :)


niestety tu masz błąd, tu nie możesz modyfikować nagłówka jak już coś wysłałeś a wysłałeś

Kod
<html>
<a href="javascript:bambam();">Odpal ajaxa</a>
<div id="ajaxowy">



takie komendy jak header, session_start, setcookies powinno się robić na początku, do momentu aż nic nie wyślesz do przeglądarki

pozdrawiam Paweł
fernet
No ja doskonale to rozumiem ale dzięki za potwierdzenie mojego przeswiadczenia o specyficekacji działania header. Szukam rozwiązaia które zapewni mi zmianę id sesji w adresowych plikach jak i w typach ajaxowych plików. Właściwie to chyba nawet je znam i szczerze to liczyłem na to że jest jeszcze coś pomiędzy ingerencji w mechanizm sesji a defaultowym jej wywołaniem. Mysle ze jedyne rozwiazanie tego na zasadzie pomiedzy wywola niesutanne Loading wyswietlane w przegladarce, nie zadawala mnie ono ale chalbym je poznac.
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.