Maison  >  Article  >  php教程  >  Apprenez à utiliser la session PHP

Apprenez à utiliser la session PHP

高洛峰
高洛峰original
2016-12-24 09:12:511059parcourir

L'utilisation d'une session PHP est en fait très simple. Il peut enregistrer les données soumises par l'utilisateur dans une session sous la forme d'une variable globale et générer un session_id unique afin d'éviter toute confusion et d'utiliser le même navigateur dans la session. Le même site ne peut avoir qu'un seul session_id. Voyons comment utiliser session.
Comment utiliser session, tout ce qui concerne la session, vous devez appeler la fonction session_start() avant
Attribuer une valeur à la session est très simple, comme :

<?php
Session_start();
$Name = "这是一个Session例子";
Session_Register("Name");//注意,不要写成:Session_Register("$Name");
Echo $_SESSION["Name"];
//之后$_SESSION["Name"]为"这是一个Session例子"
?>

Après php4.2 ; , vous pouvez attribuer une valeur à la session Affectation directe :

<?PHP
Session_Start();
$_SESSION["name"]="value";
?>

Annuler la session comme ceci :

<?php
session_start();
session_unset();
session_destroy();
?>

Lire la session

La variable $_SESSION intégrée de PHP peut accéder facilement à la variable de session définie.

<?php
session_start();
echo "登记的用户名为:".$_SESSION["username"];    //输出 登记的用户名为:nostop
?>
Vérifier si la variable est enregistrée en tant que variable de session session_is_registered
Syntaxe : boobean session_is_registered(string name);

Cette fonction peut vérifier si la variable spécifiée a été enregistrée dans la session en cours . Le nom du paramètre est le nom de la variable à vérifier. En cas de succès, la valeur logique true est renvoyée.

<?php
    session_start();
    if(!session_is_registered("gender")){ //判断当前会话变量是否注册
        session_register("gender");    //注册变量
    }
    $gender="女";
    echo $_SESSION[&#39;gender&#39;];  //女
?>

Accéder au nom de la session actuelle session_name
Syntaxe : boolean session_name(string [name]);
Cette fonction peut obtenir ou réinitialiser le nom de la session en cours. S'il n'y a pas de nom de paramètre, cela signifie obtenir le nom de la session actuelle, et ajouter le paramètre signifie définir le nom de session sur le nom du paramètre.

<?php
$sessionName = session_name();   //取得当前 Session 名,默认为 PHPSESSID
$sessionID = $_GET[$sessionName];   //取得 Session ID
session_id($sessionID);      //使用 session_id() 设置获得的 Session ID
?>

Accéder au numéro d'identification de la session en cours session_id
Syntaxe : boolean session_id(string [id]);
Cette fonction peut obtenir ou réinitialiser le numéro d'identification de la session actuellement stockée. S'il n'y a pas d'identifiant de paramètre, cela signifie que seul le numéro d'identification de la session en cours est obtenu. Si le paramètre est ajouté, cela signifie que le numéro d'identification de la session est défini sur l'identifiant nouvellement spécifié.
Définir la durée de vie de la session

<?php
    session_start
    // 保存一天
    $lifeTime = 24 * 3600;
    setcookie(session_name(), session_id(), time() + $lifeTime, "/");
?>

session_set_cookie_params : Définir la durée de vie de la session. Cette fonction doit être appelée avant l'appel de la fonction session_start().
Si le client utilise IE 6.0, la fonction session_set_cookie_params(); aura quelques problèmes pour définir les cookies, nous appelons donc toujours la fonction setcookie manuellement pour créer des cookies.

<?php
// 保存一天
  $lifeTime = 24 * 3600;
  session_set_cookie_params($lifeTime);
  session_start();
  $_session["admin"] = true;
?>

Définir le chemin de sauvegarde du fichier de session
session_save_path() : doit être appelé avant l'appel de la fonction session_start().

<?php
  // 设置一个存放目录
  $savePath = "./session_save_dir/";
  // 保存一天
  $lifeTime = 24 * 3600;
  session_save_path($savePath);
  session_set_cookie_params($lifeTime);
  session_start();
  $_session["admin"] = true;
?>
<?php
session_start();    //启动Session
$username=&#39;nostop&#39;;
session_register(&#39;username&#39;);    //注册一个名为username变量
echo &#39;登记的用户:&#39;.$_SESSION[&#39;username&#39;];    //登记的用户:nostop   读取Session变量
$_SESSION[&#39;age&#39;]=23;    //声明一个名为age的变量,并赋值
echo &#39;年龄:&#39;.$_SESSION[&#39;age&#39;]; //年龄:23
session_unregister(&#39;username&#39;); //注销Session变量
echo $_SESSION[&#39;username&#39;];  //空
echo $_SESSION[&#39;age&#39;];//23
unset($_SESSION[&#39;age&#39;]); //注销Session变量
echo &#39;登记的用户:&#39;.$_SESSION[&#39;username&#39;]; //空
echo &#39;年龄:&#39;.$_SESSION[&#39;age&#39;]; //空
?>

Remarque :

1 : Il ne peut y avoir de sortie avant d'appeler Session_Start(). Par exemple, ce qui suit est faux.

Ligne 1
Ligne. 2< ;?PHP
3 lignes Session_Start();//Il y avait déjà une sortie dans la première ligne
4 lignes....
5 lignes ?>

Invite 1 :

À chaque fois que ".....en-têtes déjà envoyés............" apparaît, cela signifie que les informations sont envoyées au navigateur avant Session_Start()
Supprimez la sortie. ce sera normal. (Cette erreur se produira également dans COOKIE, et la raison est la même)

Astuce 2 :

Si votre Session_Start() est placée dans une instruction de boucle, et elle est difficile de déterminer où afficher le navigateur avant. Pour information, vous pouvez utiliser la méthode suivante :
1 ligne.....Voici votre programme.. .


2 : Quelle est l'erreur ?

Avertissement : session_start() : open(/tmpsess_7d190aa36b4c5ec13a5c1649cc2da23f, O_RDWR) a échoué :....
Parce que vous n'avez pas spécifié le chemin de stockage du fichier de session.

Solution :

(1) Créez le dossier tmp dans le lecteur c
(2) Ouvrez php.ini, recherchez session.save_path et remplacez-le par session.save_path= "c: /tmp"

Pour plus d'articles connexes qui vous apprennent à utiliser la session php, veuillez faire attention au site Web PHP 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