Maison  >  Article  >  développement back-end  >  Explication sur la façon d'utiliser la session dans thinkphp

Explication sur la façon d'utiliser la session dans thinkphp

韦小宝
韦小宝original
2018-03-06 13:00:411842parcourir

Lorsque nous apprendrons les bases de PHP, nous rencontrerons le contrôle de session session. Je ne pouvais tout simplement pas le comprendre lorsque je l'apprenais. Plus tard, je l'ai compris pendant le développement. si simple. Peut-être que le niveau de compréhension est encore trop superficiel, aujourd'hui nous allons parler de la façon d'utiliser la session dans le framework thinkPHP !

La classe Session est encapsulée dans ThinkPHP et les utilisateurs peuvent l'utiliser directement. Les méthodes couramment utilisées sont :

  • Session::set(name, value) : Enregistrer la session. .

  • Session::is_set(name) : Vérifiez si la valeur de Session est définie.

  • Session::get(name) : lecture de la session.

  • Session::clear() : effacez la session.

  • Session::destroy() : Détruire la session.

ThinkPHP ouvre la session par défaut, il n'est donc pas nécessaire d'utiliser la fonction session_start() pour ouvrir la session avant d'utiliser la classe Session

. Utiliser l'instance de session

Enregistrez la session en soumettant le formulaire ci-dessous, et lisez la valeur de la session en mode modèle et dans l'opération utilisant Session::get dans les deux autres pages.

Session d'enregistrement

Exemple de session d'enregistrement d'opération sessionTest du module utilisateur :

class UserAction extends Action{  
public function session(){  
if(!emptyempty($_POST['username'])){  
Session::set('username',$_POST['username']);  
}  
$this->display();  
}  
}

modèle sessionTest.html (fragment) :

<p>  
< present name="_SESSION[&#39;username&#39;]">{$_SESSION[&#39;username&#39;]} 你好!  
< a href="APP/">首页</a>  
< a href="URL/user">本模块其他页面</a>  
< a href="URL/logout">注销</a><else />请输入您的用户名:  
< /p>  
< form action="SELF" method="post">  
< p><input type="text" name="username" /></p>  
< p><input type="submit" value=" 提交 " /></p>  
< /form>  
< /present>

Quand en remplissant le nom d'utilisateur (tel que testuser), après avoir cliqué sur le bouton de soumission, soumettez-le à la méthode sessionTest (c'est-à-dire la page actuelle) pour traiter et enregistrer la valeur de session. Utilisez la balise de modèle présente pour contrôler. la logique de sortie et détecte que $_SESSION['username'] a été enregistré. Les variables sont affichées :

testuser Bonjour ! Accueil Déconnexion

Sinon, le formulaire sera affiché.

Vérifier si la session est enregistrée

Détecter dans le modèle

Dans le modèle, vous pouvez directement utiliser présent ou notempty ou même switch, etc. La balise détermine si la variable de session est enregistrée pour décider de générer la valeur de session correspondante (sortir directement la valeur de la variable de session en tant qu'unité de tableau de sortie) ou d'afficher d'autres éléments de page. Pour plus de détails, veuillez vous référer au . balise de modèle faisant partie de ce tutoriel et de l'exemple ci-dessus.

Détection en fonctionnement

En fonctionnement, vous pouvez utiliser la méthode Session::is_set pour vérifier si la valeur de Session est défini. Par exemple, le fonctionnement de l'utilisateur du module Utilisateur est le suivant :

public function user(){  
// 由于直接在操作里输出,为避免乱码  header("Content-Type:text/html; charset=utf-8");  
if(Session::is_set(&#39;username&#39;)){  
echo Session::get(&#39;username&#39;).&#39; 你好&#39;;  
}else{  
echo &#39;session 未注册&#39;;  
}  
}

Autres pages du module

Dans d'autres pages (telles que Index/index) , jugez et lisez l'extrait de code de la session :

<present name="_SESSION[&#39;username&#39;]">
{$_SESSION[&#39;username&#39;]} 你好!
<else />未登录
</present>

session 无效(无法传递)

ThinkPHP La session peut être invalide (impossible d'être transmise à d'autres pages :

).

La première lettre de la classe Session n'est pas en majuscule, comme : session::set.

La page contient des informations, telles que le fichier d'entrée a des lignes vides, etc. . Le

chemin de stockage de session (session.save_path) sur le serveur (Linux/Unix) a des autorisations incorrectes, ce qui entraîne l'impossibilité de sauvegarder correctement les informations de session.

. Suggestions pour les problèmes de portée :

La classe Session de ThinkPHP n'est qu'un simple wrapper pour la session. En fait, vous pouvez utiliser directement la fonction de session native de PHP dans l'opération, c'est aussi la recommandation officielle. 🎜>

Vous devriez également jeter un œil à ceux-ci :

Introduction au contrôle de session php et aux cookies

Détaillé explication du mécanisme de traitement Sessionid dans Laravel

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn