Home > php教程 > PHP开发 > body text

Teach you how to use php session

高洛峰
Release: 2016-12-24 09:12:51
Original
1016 people have browsed it

PHP session usage is actually very simple. It can save the data submitted by the user in a session in the form of a global variable and generate a unique session_id. This is to avoid confusion and the same browser and the same site in the session. There can only be one session_id. Let's take a look at how to use session.
How to use session, anything related to session must call the function session_start() before;
Assigning a value to the session is very simple, such as:

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

After php4.2, you can directly assign a value to the session:

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

Cancel the session like this :

<?php
session_start();
session_unset();
session_destroy();
?>
Copy after login

Reading session

PHP’s built-in $_SESSION variable can easily access the set session variables.

<?php
session_start();
echo "登记的用户名为:".$_SESSION["username"];    //输出 登记的用户名为:nostop
?>
Copy after login
checks whether the variable is registered as a session variable session_is_registered
Syntax: boobean session_is_registered(string name);

This function can check whether the specified variable has been registered in the current session. The parameter name is the variable name to be checked. If successful, the logical value true is returned.

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

Access the current session name session_name
Syntax: boolean session_name(string [name]);
This function can get or reset the name of the current session. If there is no parameter name, it means to get the current session name, and adding the parameter means setting the session name to the parameter name.

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

Access the current session identification number session_id
Syntax: boolean session_id(string [id]);
This function can obtain or reset the identification number of the currently stored session. If there is no parameter id, it means that only the identification number of the current session is obtained. If the parameter is added, it means that the identification number of the session is set to the newly specified id.
Set the lifetime of the Session

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

session_set_cookie_params: Set the lifetime of the Session. This function must be called before the session_start() function is called.
If the client uses IE 6.0, the session_set_cookie_params(); function will have some problems setting cookies, so we still call the setcookie function manually to create cookies.

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

Set the save path of the Session file
session_save_path(): Must be called before the session_start() function is called.

<?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;]; //空
?>
Copy after login

Note:

1: There cannot be any output before calling Session_Start(). For example, the following is wrong.

Line 1
Line 2 Line 3 Session_Start(); // Before the first There are already output lines
4 lines...
5 lines?>

Tips 1:

Whenever "...headers already sent..." appears. , that is, information is output to the browser before Session_Start().
It will be normal if you remove the output. (This error will also occur in COOKIE, the cause of the error is the same)

Tips 2:

If your Session_Start() is placed in a loop statement, And it is difficult to determine where the information was output to the browser before. You can use the following method:
Line 1
.....Here is your program... ...


2: What is the error?

Warning: session_start(): open(/tmpsess_7d190aa36b4c5ec13a5c1649cc2da23f, O_RDWR) failed:....
Because you did not specify the storage path of the session file.

Solution:

(1) Create the folder tmp in the c drive
(2) Open php.ini, find session.save_path, and change it to session.save_path= "c:/tmp"

Please read more related articles that teach you how to use php session Follow PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!