Utilizare $_SESSION in alt fisier php apelat cu Ajax

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
andras
Mesaje: 430

Utilizare $_SESSION in alt fisier php apelat cu Ajax

Salut,
am in pagina un Ajax() care trimite la sesiuneid.php care arata asa:

Cod: Selectaţi tot

<?php
if(!isset($_SESSION)) session_start();
if (isset($_REQUEST['id'])) {
    $id=$_REQUEST['id'];
$_SESSION['idturneu']=$id;
echo $_SESSION['idturneu']; // valoarea $_SESSION['idturneu'] se introduce intr-un element type="hidden" din pagina
}
?>
apoi aceeasi pagina (din care am apelat ajax) instantiaza imediat (fara refresh) un obiect:

Cod: Selectaţi tot

<?php 
$objRe = new AddPlayer($mysql);
   echo $objRe->result;
?>
Problema e ca in acel obiect am nevoie de $_SESSION['idturneu'] dar acolo nu-l vede, adica nu-l vede cu valoarea actualizata. Cum rezolv sa-l vada? Daca iau ca parametru de unde-l iau? Multumesc.

MarPlo
Salut
Ca sa folosesti $_SESSION cu valoarea retinuta de la un fisier php la altul, trebuie sa ai session_start(); la inceput la Toate acele fisiere php.
- Adauga si in fisierul apelat cu ajax functia: session_start();.

andras
Am pus in toate 3 fisierele (pagina, apelat cu ajax si AddPlayer) in prima linie:

Cod: Selectaţi tot

 if(!isset($_SESSION)) session_start();
dar tot nu actualizeaza. Daca pun doar session_start(); imi da eroare, zice ca mai este startata o sesiune.
Poate ar trebui cumva sa-l transmit ca parametru la instantiere, dar de unde-l iau?

MarPlo
Daca verifici cu

Cod: Selectaţi tot

var_dump($_SESSION); 
Si apare sesiune care te intereseaza, problema nu e de la session, posibil sa fie de la logica codului, cum ar fi, ordinea in care se creaza acea sesiune si momentul cand e necesara; sau in ce conditii se actualizeaza si nu sunt indeplinite.

andras
La concluzia asta am ajuns si eu, sesiunea se actualizeaza dar cu intirziere de un click. Cind dau click pe o linie din tabelul html ar trebui sa preia in sesiune id-ul acelei linii pe care apoi il folosesc in obiectul instantiat, dar de fapt in obiectul instantiat este afisat $_SESSION['id'] de la click-ul anterior, adica de la linia precedenta. Trebuie sa regindesc tot codul.

Intrebare: se poate crea un obiect (instantiere) intr-un fisier PHP apelat cu Ajax? La mine asta e problema, din fisierul apelat cu ajax (unde se declara $_SESSION) aplicatia se intoarce in pagina apoi din pagina se face instantierea dintr-un alt PHP, deci degeaba declar $_SESSION in ajax, daca nu exista Refresh la pagina fisierul PHP care contine clasa n-are cum sa vada accea variabila $_SESSION. Ma gindesc sa instantiez direct in fisierul ajax. Sau exista alta cale? Multumesc.

MarPlo
Nu conteaza in codul php daca fisierul php e accesat cu Ajax sau cu adresa in browser.
Poti sa creezi instanta de obiect in php daca ai inclusa clasa php respectiva. Instanta de obiect e valabila cat se executa acel cod php. $_SESSION ramane disponibil pe server in oricare fisier php in care exista session_start().

Subiecte similare