<?php
/*
* Session的初步介绍:
Session是服务器端技术+
注意:一个会话(浏览器)对应一个Session文件
session的基本用法(crud) 增删改查.
xampp中session文件默认保存在 C:\xampp\tmp
*/
?>
<?php
header("Content-type: text/html; charset=utf-8");
//屏蔽notice级错误
error_reporting(E_ALL^E_NOTICE);
echo "<br/><b>***演示如何保存session数据**</b><br/>";
//1.初始化session
session_start();
//2.保存数据
$_SESSION['name']="shunping";
//session文件中可以保存srring , dobule , integer, bool, array, object
//3、保存inter bool
$_SESSION['age']=100;
$_SESSION['isBoy']=true;
//4、保存数组
$arr1=array("北京","小明","hello");
$_SESSION['arr1']=$arr1;
//5、保存一个对象到session文件
class Dog{
private $name;
private $age;
private $intro;
function __construct($name,$age,$intro){
$this->name=$name;
$this->age=$age;
$this->intro=$intro;
}
public function getName(){
return $this->name;
}
}
$dog1=new Dog("大狗",5,"很好的一只狗");
$_SESSION['dog1']=$dog1;
echo "保存ok";
?>
<?php
// (1) 要使用session,都需要初始化 sesssion_start();
// (2) session文件中可以放入多个 key<==>val对 , 注意 key不能重复,val可以是基本数据类型,和array,对象.
// (3) 如果我们要取出对象,则需要实现申明一下类的定义信息.
echo "<br/><br/><b>***演示如何获取session数据***</b><br/>";
//1.初始化session
//session_start();
//获取session
//2.把所有的session获取
//pre 元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。
//<pre> 标签的一个常见应用就是用来表示计算机的源代码,用来格式化某文本。
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
//3.通过key来指定获取某个值
echo "<br/>名字是:".$_SESSION["name"];
$arr1=$_SESSION['arr1'];
echo "<br/>数组的数据是:";
foreach($arr1 as $key=>$val){
echo "<br/>--$val";
}
//4.取出对象
//保存一个对象到session文件
//类的定义重新引入到该文件,我们必须 把它放在session_start()前
$xiaogou=$_SESSION['dog1'];
echo "<br/>小狗的名字:".$xiaogou->getName();//
?>
<?php
echo "<br/><br/><b>***演示如何更新session数据***</b><br/>";
//1、初始化session
//session_start();
//2、session的更新即对session中对应的key重新赋值即可
$_SESSION['name']="顺平";
echo "更新成功!";
echo "<br/>名字是:".$_SESSION["name"];
?>
<?php
echo "<br/><br/><b>***演示如何删除session数据***</b><br/>";
//1、初始化session
//session_start();
//删除sessoin信息
//1.删除某一个key<==>val
//unset($_SESSION['name']);
//2.删除所有的 key<==>val
//这样就会把当前这个浏览器对应的session文件删除.
//session_destroy()虽然销毁了,但cookie中仍然存在
//session_destroy();
session_unset();
echo "删除session成功!";
if($_SESSION['age']=="")
echo "<br/>确实删除session成功!";
echo $_SESSION['age'];
?>
对比起 Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制,本文简单介绍 Session 的使用。
由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 内容。实际上在服务器端的 Session 文件,PHP 自动修改 Session 文件的权限,只保留了系统读和写权限,而且不能通过 ftp 修改,所以安全得多。
<?php
// 启动 Session
session_start();
// 声明一个名为 admin 的变量,并赋空值。
$_SESSION["admin"] = null;
?>
<?php
session_start();
// 这种方法是将原来注册的某个变量销毁
unset($_SESSION['admin']);
// 这种方法是销毁整个 Session 文件
session_destroy();
?>
<?php
session_start();
// 保存一天
$lifeTime = 24 * 3600;
setcookie(session_name(), session_id(), time() + $lifeTime, "/");
?>
<?php
// 保存一天
$lifeTime = 24 * 3600;
session_set_cookie_params($lifeTime);
session_start();
$_SESSION["admin"] = true;
?>
<?php
// 保存一天
$lifeTime = 24 * 3600;
// 取得当前 Session 名,默认为 PHPSESSID
$sessionName = session_name();
// 取得 Session ID
$sessionID = $_GET[$sessionName];
// 使用 session_id() 设置获得的 Session ID
session_id($sessionID);
session_set_cookie_params($lifeTime);
session_start();
$_SESSION['admin'] = true;
?>
<?php
// 设置一个存放目录
$savePath = './session_save_dir/';
// 保存一天
$lifeTime = 24 * 3600;
session_save_path($savePath);
session_set_cookie_params($lifeTime);
session_start();
$_SESSION['admin'] = true;
?>
另外,我们还可以使用 session_set_save_handler 函数来自定义 Session 的调用方式。