

PHP - objekty a $_SESSION
Zdravím,
můj dotaz se týká uložení dat objektu do session a jejich následném získání zpět. Nefunguje, jak má. Nechci popisovat celý dlouhý skript, snad to bude aspoň trošku pochopitelné:
1) Vytvořím objekt třídy ($o) s nějakými předdefinovanými hodnotami proměnných (definováno ve třídě).
2) Těmto proměnným v tomto objektu přiřadím nové hodnoty, které získám z formuláře ($_GET)
Pomocí foreach je vyplním. Pomocí echo je ověřím - objekt opravdu obsahuje "nové hodnoty".
//book.php
if ($add!='')
{
$o = new $object(time());
foreach ($_GET as $k => $v)
{
$o->k = $v;
echo $o->k . '<br>';
}
3) Tento objekt uložím do SESSION.
$o->save();
4) Pomocí níže uvedeného odkazu se přesunu na další stránku,...
echo "<a href='book.php?id={$o->id}'>rezervovat</a>";
//book.php?id=nejake_cislo
if ($id == '' or $id == FALSE)
header("location: index.php");
5) na další stránce chci opět vytáhnout dané hodnoty objektu ze SESSION.
$r = Resource::getById($id);
foreach ($r as $ii => $iii)
{
echo "$ii => $iii<br>";
}
6) a objeví se opět původní předdefinované hodnoty, nikoliv ty zadané ve formuláři
//část definice třídy Resource:
public function save()
{
$_SESSION['resource'][$this->id] = $this;
}
public function getById($id)
{
if (array_key_exists($id,$_SESSION['resource']))
return $_SESSION['resource'][$id];
else
return FALSE;
}
Děkuji.
Asi budeš muset ty session nějak "nastartovat", máš tam na začátku skriptů session_start(); ?
Mám. Na začátku každého souboru/skriptu je:
přičemž soubor/skript main.php obsahuje (na začátku):
zkoušel jsem session_start() umístit úplně na začátek, ještě před 3 položky "require_once" (nepomohlo), navíc vygooglil jsem, že by měly být nejdřív vloženy definice tříd a pak až nastartovat session ...
Tak si zkus udělat jednoduchý skript a do něho dej:
Pokud se ti zobrazí test, tak ti session fungují v pohodě
Dík, něco podobnýho jsem zkoušel, session fungují.
Dokonce, i když se podívam do souboru sessionstore.js (data aplikací - firefox), objeví se tam hodnoty vyplněné ve formuláři a odeslané ...
Data z formuláře se získávají pomocí $_POST.
to je pravda, nicméně pokud toho neni moc, tak lze použít i $_GET a já chtěl sledovat pohyb v URL ...
už jsem na to přišel ...
1) oprava 1. části
5) oprava 5. části