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 Mesaje: 4343
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 Mesaje: 430
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 Mesaje: 4343
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 Mesaje: 430
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 Mesaje: 4343
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