一:COOKIE
1.创建COOKIE
关键字:setCOOKIE 用于保存COOKIE
原理:当浏览器访问COOKIE.php页面时,我们的服务器就会以set-COOKIE的方式将COOKIE信息回送到http响应,当浏览器获取到信息后,会保存在本机
//第一个参数:COOKIE(key).第二个参数:表示val.第三个参数表示COOKIE值
setCOOKIE("name","huahua",time()+3600);
echo "成功";
2.查询COOKIE(获取客户端的COOKIE信息)
COOKIE信息是保存在$_COOKIE超全局数组中的
// 超全局数组
echo "
";";
print_r($_COOKIE);
echo "
//获取指定的键对应的值
$name=$_COOKIE['name'];
echo "$name";
3.更新COOKIE(重新设置COOKIE)
关键字:setCOOKIE:参考创建COOKIE
4.删除COOKIE
// 删除某个键值对
setCOOKIE("password","",time()-3600);
// 删除所有键值对
foreach ($_COOKIE as $key => $value) {
setCOOKIE("$key","$value",time()-3600);
}
实例:判断你是否第一次登陆
if (!empty($_COOKIE['lastvisit'])){
echo "您上次登陆的时间为".$_COOKIE['lastvisit'];
setCOOKIE('lastvisit',date("Y-m-d H:i:s"),time()+3600);
}else{
echo "您是第一次登陆";
setCOOKIE('lastvisit',date("Y-m-d H:i:s"),time()+3600);
}
二:session
1.添加session
php
session_start();
// 字符串
$_SESSION["name"]="huahua";
// 数字
$_SESSION['aeg']=18;
// 布尔值
$_SESSION["isgirl"]=true;
// 数组
$arr1=array("hah","我们");
$_SESSION["arr1"]=$arr1;
// 对象
class Dog{
private $name;
private $intro;
function __construct($name,$intro){
$this->name=$name;
$this->intro=$intro;
}
public function getname(){
return $this->name;
}
}
$d=new Dog("xiaogou","i am good");
$_SESSION["dog1"]=$d;
echo "ook";
// 使用超全局数组查看session
echo "
";";
print_r($_SESSION);
echo "
?>
2.获取COOKIE数据
php
// 获取所有的session数据
echo "获取session数据";
// 需要开启session
session_start();
echo "
";";
print_r($_SESSION);
echo "
// 字符串
echo "name=".$_SESSION["name"];
echo "
";
// 数字
echo "age=".$_SESSION["aeg"];
echo "
";
// 数组
foreach ($_SESSION["arr1"] as $key => $value) {
echo "$key=$value
";
}
// 取对象数据
// 需要加载类的信息。因为是从session中取得数据,而session中并没有保存类的信息
class Dog{
private $name;
private $intro;
function __construct($name,$intro){
$this->name=$name;
$this->intro=$intro;
}
public function getname(){
return $this->name;
}
}
$xiaogou=$_SESSION["dog1"];
echo $xiaogou->getname();
?>
3.更新session数据
php
session_start();
$_SESSION["name"]="hei";
$_SESSION["aeg"]=99;
echo "更新成功";
echo "
";";
print_r($_SESSION);
echo "
?>
4.删除session数据
php
session_start();
// 删除指定键值对
unset($_SESSION['name']);
// 删除所有的session信息
session_destroy();
?>
购物大厅例题:
buy.php
php
echo "
购物大厅
";if (isset($_GET['PHPSESSID'])) {
session_id($_GET['PHPSESSID']);
// 重置该页面的ssesion_id
}
session_start();
$sid=session_id();
// echo SID; SID的输出为PHPSESSID=mpsav4071jlu8iue98tiujdp91
echo "$sid'>天龙八部
";
echo "$sid'>聊斋
";
echo "$sid'>红楼梦
";
echo "$sid'>西游记
";
echo "$sid'>查看您购买的商品列表";
?>
showpre.php
1 php
2 if (isset($_GET['PHPSESSID'])) {
3 session_id($_GET['PHPSESSID']);
4 }
5 //注意:sid的设置在session_start之前还是之后
6 $sid=session_id();
7 session_start();
8 // 接收书号和书名
9 $bookid=$_GET['bookid'];
10 $bookname=$_GET['bookname'];
11
12 $_SESSION["$bookid"]="$bookname";
13 echo "购买商品成功";
14 echo "$sid>返回购物大厅";
15 ?>
buglist.php
1 php
2 if (isset($_GET['PHPSESSID'])) {
3 session_id($_GET['PHPSESSID']);
4 }
5 session_start();
6 echo "购物车商品有:
";
7 foreach ($_SESSION as $key => $value) {
8 echo "书号是$key,书名是$value
";
9 }
10 ?>
界面显示:
问题:当用户禁用COOKIE后,怎样使用session技术共享多个页面呢?(重写url)
- 在每个超链接上添加一个 PHPSESSID=session id。同时每个页面判断是是否有已生成的session id 。看上例子
- 使用常量SID。
- 设置php.ini下的session.use_trans_sid = 1