一.超全局变量
- 因为我们需要长久保存数据的功能,并且这个数据能在不同的页面中被访问并且加载出来,所有我们需要用到超全局变量
1. cookie
cookie 是把数据存在浏览器上,存在用户电脑上
$_COOKIE 超全局变量,服务器对用户访问的跟踪手段
- 直接用$_COOKIE 超全局变量数组,存进去的数据不能在其他页面访问
- $_COOKIE 只能用来获取,存进去的都是临时的
$_COOKIE[name] = '路飞'; // 临时储存为名字是路飞
print_r(#_COOKIE); // 只能在自己的域名下才能访问
- setcookie 可以把数据存进超全局变量中,
- setcookie 有两个参数,第一个参数是下标,第二个参数是值
- setcookie 第一次是存,获取不到数据,只有第二次刷新才能获取到数据
setcookie('name','山治'); // 两个参数,第一个是下标.第二个是值
print_r($_COOKIE); // 需要刷新两次,第一次是储存进去,不能获取值,第二次才能获取值
- cookie 只能在自己的域名下才能访问
- setcookie 的值可以被覆盖,没有时间限制,但是我们可以设置过期时间,
- 过期时间: 时间戳 + 要存放的时间 ,是秒
setcookie('name','索隆',time() + 60*60*12); // 第三个参数是就是设置过期时间, 现在设置的是12个小时后过期
- 还可以进行数组存放
setcookie('php[id]',18);
setcookie('php[name]','路飞');
setcookie('php[email]','lufei@php.cn'); // 存放数组
- 删除cookie
setcookie('php[id]','',time() - 100); // 马上删除 id
setcookie('php[name]','',time() - 100); // 马上删除 name
setcookie('php[email]','',time() - 100); // 马上删除 email
2. SESSION
- $_SESSION 超全局变量数组
- $_SESSION 是存在服务器上的
- session_start() 开启一个SESSION会话
session_start(); // 开启一个SESSION会话
- 添加和设置
$_SESSION['id'] = 20;
$_SEESION['name'] = '龙';
$_SESSION['email'] = 'long@php.cn'; //可以直接这样添加数据
- 修改数据
$_SESSION['id'] = 24;
// 更改id 改为24
- 删除
unset($_SESSION['id']); // 删除session 的 id
session_unset(); // 全清空,但是服务器会把之前session 生成的文件保留下来
session_destro(); // 这个是把服务器上的文件也删除
- 获取session的数据
echo session_id();
// 获取当前session的 id,并且是加密保存的
// 一个用户就相当于一个 id
3. cookie 和 session 的区别
1.cookie数据是存在用户电脑,session数据是存在服务器上
2.cookie浏览器储存有限,session存在服务器上是没有限制的(容量大)
3.session 基于cookie, cookie会保存session的id
4.session 和 cookie 是不分离的
一.命名空间
PHP不能有重复的函数,变量和类;
命名空间关键词: namespace
- 用了namespace 后下面的函数都是这个命名空间的
- 命名空间:采用了目录结构方式
- windows:不能有重复名字的文件,并且不能有重复名字的目录,但是文件名和目录名重名没事
- 有括号{}的和没有括号的命名空间不能同时用
- 命名空间要访问其他空间的函数,需要带上目录结构
- 除了函数不能重名外,还有变量,类,命名空间也不能重名
- 我们一般的代码都是一个文件,一个类,一个命名空间,所以之后我们都是 ; 号结束的多
命名空间,要放在代码的第一行,但是可以放在严谨函数之后: 严谨函数: declare
命名空间
namespace a {
$name = 'A';
function php()
{
return 'A';
}
class A
{
}
}
namespace b {
$name = 'B';
function php()
{
return 'B';
}
class B
{
}
echo php(); // 输出本空间的值
echo '<hr>';
echo \a\php(); // 访问a 空间,输出值 A
}
// 子命名空间
namespace a\s {
$name = 'S';
function S()
{
return 'S';
}
}
// 什么都不加,默认是根空间
namespace {
echo \a\s\s(); // 输出子命名空间里的值
}