problema $_SESSION - valori diferite in Chrome si Firefox

Ai o întrebare legată de PHP? Incercăm să îi găsim soluţie. Sau poate doar vrei să publici un cod interesant.

Moderatori: Zamolxe, Moderatori

IncDoDo
Junior Member
Mesaje: 30
Membru din: Lun Mar 18, 2013 9:18 pm

problema $_SESSION - valori diferite in Chrome si Firefox

Mesajde IncDoDo » Joi Apr 09, 2015 5:00 pm

Buna ziua!

M-am lovit de o problema foarte ciudata si pentru care nu reusesc sa gasesc o solutie, sau macar o explicatie.

Doresc sa setez o cheie de siguranta la fiecare incarcare a paginii (random), cheie ce va fi stocata pe sesiune, si care va fi verificata la fiecare trimitere a unui formular.
Intr-o ordine cronologica pasii ar fi urmatorii:
1)Setez cheia la accesarea paginii in care se afla formularul (o stochez pe sesiune si o atribui ca si valoare unui imput de tip hidden).
2) Trimit datele formularului (action este aceiasi pagina).
3) Verific daca cheia stocata initial pe sesiune este identica cu cea venita pe REQUEST de la formular.
4) Reinoiesc cheia pentru urmatoarea utilizare.

Problema este ca la a doua retrimitere a formularului valorile din sesiune difera de la Mozila la Chrome.
Chrome-ul returneaza corect, insa pe Firefox valoarea cheii salvate pe sesiune este cu totul alta, total diferita de cea actuala setata, sau cheia precedenta.
Mai jos aveti codul in care setez valoarea cheii si fac comparatie intre ce vine pe REQUEST si ce e in SESSION.
Inca o mentiune, metoda de trimitere a formularului este GET.

Cod: Selectaţi tot

if(!isset($_SESSION['csrf'])) {
    $sec = rand();
    $_SESSION['csrf'] = $sec;
}
else {
    if(isset($_GET['csrf']) || (!isset($_GET['csrf']) && isset($_GET['searchWord']))) {
        if($_SESSION['csrf'] != $_GET['csrf']) {
            echo "Redirect...";
        }
        echo $_SESSION['csrf']; //same value as $_GET['csrf'] in Chrome, different in Firefox
        echo $_GET['csrf']; //same value as $_SESSION['csrf'] in Chrome, different in Firefox
    }
    $sec = rand();
    $_SESSION['csrf'] = $sec;
}


Aveti idee de ce se intampla aceasta diferenta intre browsere? Care ar fi solutia pentru remedierea problemei?

Astept raspunsurile voastre si bineinteles va stau la dispozitie pentru orice nelamurire sau intrebare.

Multumesc,

Cu stima



nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Re: problema $_SESSION - valori diferite in Chrome si Firefo

Mesajde nevvermind » Joi Apr 09, 2015 5:54 pm

Mie-mi merge.
Vezi requestul si response-ul. Ai informatii de cookie acolo? E acelasi? Vezi URL sa fie acelasi. Ce cookie path ai? Fa refresh de cache la browser.

PS: Nu-ti sterge intrebarile de pe SO. Esti prea "ranibil".
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/


Înapoi la “Cod PHP”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 27 vizitatori