Předávání hodnot session

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
symmetry
Člen | 71
+
+1
-

Zdravím, jelikož s Nette začínám, využívám v drtvivé většině pouze třídu forms, na dlaší věci používám dibi a své metody.
Narazil jsem ale na problém při předávaní hodnot session.

Po autorizaci a přidělení příst práv uživateli, se snažím přejít na jinou stránku, kde chci vypsat hodnoty session a pracovat s nimi.

<?php
include './class_users.php';
$user = new Users();
$user->AccessProtect();
$a = $_SESSION["is_logged"];
$b = $_SESSION["identity"];
echo $a;
echo $b;
?>

Bohužel se mi ale nepodaří je tímto klasickým postupem vypsat hodnotu session.

Ve formuláři je vytvoření session zpracováno takto:

<?php
include './libs/nette-0.9-PHP-5.2/Nette/loader.php';
include './db_connect.php';
include './class_users.php';
//In production version must be unlinked
Debug::enable();
//Creating form
$form = new Form;

$form->addGroup('Login');

$form->addText('email', 'Mail:')
->setEmptyValue('')
->addRule(Form::FILLED, 'Vlozte svuj mail pro login')
->addRule(Form::EMAIL, 'Zadejte prosím mail pro login');

$form->addText('password', 'Heslo:')
->setEmptyValue('connec')
->addRule(Form::FILLED, 'Zadejte prosím heslo');

$form->addSubmit('send', 'Odeslat');
//End of form

if($form ->isSubmitted()&&$form ->isValid())
{

	//Geting values from form
	$mail = $form['email']->getValue();
	$passwd = $form['password']->getValue();
	$user = new Users();
    //Inserting returned values from methods
	$is_logged = $user->AuthenticateUser($mail,$passwd);
	$identity  = $user->AssignUserIdentify($mail,$passwd);
	//Verifying user identity
	if($is_logged==1&&is_numeric($identity))
	{
		$_SESSION['is_logged']=1;
		$_SESSION['identity']=$identity;
		header('Location: admin.php');
		echo('ok');
	}
	else
	{echo("Nexistujici uzivatel nebo spatne heslo?");}

}
else
{
	$form->getErrors();
}

?>

Pokud by někdo tušil, jak to vyřešit, nebo jak to udělat lépe v Nette(pokud možno s nějakým názorným příkladem) budu moc vděčný.

symmetry
Člen | 71
+
0
-

Opravdu nikdo netuší?

norbe
Backer | 405
+
0
-

Je možné, že Nette ze sessions odstraní hodnoty které samo nevytvořilo… Zkus podívat jak se práce se sessions řeší přímo v nette: Nette\Web\Session

symmetry
Člen | 71
+
0
-

Ach so, to je ale docela zákeřný:) Co jsem ale z API nette/session nepochopil je to. Jak vlastně session jako takovou zaregistruji a přiřadím jí hodnotu.
Pokud napíši něco takového, tak sice inicializuji session ale již ji nepřiřadím například hodnotu z proměnné.
$session = Environment::getSession();
$session->setName(‚uuubbu‘);

norbe
Backer | 405
+
0
-

Úplně jednoduše :-) Všechno je té tránce co jsem postoval výše.

Malá ukázka:

$session = Environment::getSession('autentizace');
$session->cokoliChces = "tvoje data";

// pak můžeš i testovat, jestli už daná proměnná v namespacu existuje
if(!isset($session->cokoliChces))
   $this->redirect("Auth:login");
symmetry
Člen | 71
+
0
-

diky za vysvetleni, jen tedy nechapu, proc je pouzito.
Environment::getSession();
Prijde mi to trochu matoucí, něco na způsob newSession(), by bylo srozumitelnější..

Tomik
Nette Evangelist | 485
+
0
-

symmetry napsal(a):

diky za vysvetleni, jen tedy nechapu, proc je pouzito.
Environment::getSession();
Prijde mi to trochu matoucí, něco na způsob newSession(), by bylo srozumitelnější..

Vždyť ty ale nevytváříš novou session, ale bereš si již existující…

symmetry
Člen | 71
+
0
-

Jasny,
session nastavim a vypisu.

<?php
$namespace = Environment::getSession('user_identity');
$namespace->user_identity = 'ales';
echo $namespace->user_identity;
?>

Ale pokud si ji chci prenest do dalsi stranky, musim zavolat

<?php
$namespace = Environment::getSession('user_identity');
echo $namespace->user_identity;
?>

Coz mi prijde docela neprakticke, je nejaky jednodussi zpusob, jak prenaset hodnoty session?

Editoval symmetry (9. 11. 2009 12:57)

symmetry
Člen | 71
+
0
-

Vyřešeno, díky za rady..