web-dev-qa-db-fra.com

Séances en Yii

Ici je vais ce que je fais est que j'utilise 

 Yii::app()->SESSION['userid']

sans 

  Yii::app()->session->open();

à la connexion

  Yii::app()->session->destroy();

à la déconnexion

Je veux savoir si ne faites pas la session d'ouverture et de destruction est-elle digne. Est-ce que Yii le fait en interne?.

Une autre chose étrange que je ne sais pas ce qui se passe. Dans le même navigateur pour une session, je peux me connecter pour plusieurs utilisateurs .. cela ne devrait pas arriver ainsi. Est-ce que je n'utilise pas les méthodes d'ouverture et de destruction de session.

 public function actionLogout()
{
    Yii::app()->user->logout();
    Yii::app()->session->clear();
    $this->redirect(Yii::app()->controller->module->returnLogoutUrl);
}

S'il vous plaît laissez-moi savoir comment puis-je comprendre cela 

12
Tested

Pour créer votre session

Yii::app()->session['userid'] = "value";

Vous pouvez obtenir de la valeur comme ça 

$sleep = Yii::app()->session['userid'];

Et session non réglée comme 

unset(Yii::app()->session['userid']); # Remove the session

En cas de déconnexion de l'utilisateur, vous devez supprimer toute la session. 

Yii::app()->session->clear();

Après cela, vous devez supprimer les données réelles du serveur.

Yii::app()->session->destroy();
29
Moyed Ansari

N'effacez pas la session, ne vous déconnectez que:

Yii::app()->user->logout(false);
1
Zombyii

Une fois que vous avez une session craeted, il vous permettra de vous connecter plusieurs fois dans le même navigateur, ce qui vous permettra de renommer votre variable de session avec un nom différent et de vérifier cette variable particulière pour vous connecter avec cela.

Session est un composant d'application Web accessible via Yii :: $ app-> session.

Pour démarrer la session, appelez open (); Pour compléter et envoyer les données de session, appelez close (); Pour détruire la session, appelez destroy ().

Session peut être utilisé comme un tableau pour définir et obtenir des données de session. Par exemple,

$session = new Session;

$session->open();

$value1 = $session['name1'];  // get session variable 'name1'

$value2 = $session['name2'];  // get session variable 'name2'

foreach ($session as $name => $value) // traverse all session variables

$session['name3'] = $value3;  // set session variable 'name3'
0
user4153245

Dans YII, la session est gérée par la classe 'CHttpSession' - http://www.yiiframework.com/doc/api/1.1/CHttpSession

Si vous utilisez la méthode 'open ()' Yii::app()->session->open(); dépend de votre configuration. Si dans le main.php, vous avez défini le 
'session' => array ( 'autoStart' => true, ), alors la session sera automatiquement lancée par YII lui-même . Vous pouvez vous référer au code source de la méthode 'init ()' ici - https://github.com/yiisoft/yii/blob/ 1.1.16/framework/web/CHttpSession.php # L83

En ce qui concerne votre question sur l'utilisation des méthodes 'close ()' ou 'destroy ()', la méthode 'close ()' ne supprime que les clés de Session mais 'destroy' supprime toutes les données de la session.

0
Vinod Tigadi