php笔记(进阶3)

cookie

Cookie是存储在客户端浏览器中的数据,通过Cookie来跟踪和存储用户数据。一般情况下,Cookie通过HTTP headers从服务器返回到客户端

php通过setcookie函数进行Cookie的设置,任何从浏览器发回的Cookie,php都会将他存储在$_COOKIE的全局变量之中,因此可以通过$_COOKIE['key']的形式来读取某个Cookie的值

Cookie具备有效期,当有效期结束之后,Cookie会自定的从客户端删除

setcookie函数有7个可选参数常用的为前5个

name(Cookie名) 可以通过$_COOKIE['name'] 进行访问

value(Cookie值)

expire(过期时间) Unix时间戳格式,默认为0,表示浏览器关闭即失效

path(有效路径)如果路径为'/',则整个网站都有效

domain(有效域) 默认域名都有效,如果设置了'www.imooc.com',则只在www子域有效

setcookie("TestCookie",$value,time()+3600,"/path/","imooc.com");

//删除cookie 将cookie的过期时间设置到当前时间之前,则cookie会自动失效,也就达到了删除cookie的目的

setcookie('test','',time()-1);

setcookie('test', time(), 0, '/path');

上面的设置会使test在/path以及子路径/path/doc下都有效,但是在根目录下就读取不到test的cookie值


session和cookie的异同

cookie将数据存储到客户端,建立起用户与服务器之间的联系,通常可以解决很多问题。但是cookie仍然具有一些局限

①cookie相对不是安全的,容易被盗用导致cookie欺骗

②单个cookie的值做大只能存储4k

③每次请求都要进行网络传输,占用带宽

session是将用户的会话数据存储在服务器,没有大小限制,通过一个session_id进行用户识别,php默认情况下session id是通过cookie来保存的,因此从某种程度上来说,session依赖于cookie,但这不是绝对的,session id也可以通过参数来实现,只要能将session id传递到服务端进行识别的机制都可以使用session.

//开始使用session

session_start();

//设置一个session

$_SESSION['test'] = time();

// 显示当前的session_id

echo "session_id:".session_id();

读取session值

echo $_SESSION['test'];

// 销毁一个session

unset($_SESSION['test']);

var_dump($_SESSION);

session会自动的对要设置的值进行encode和decode,因此session可以支持任意数据类型,包括数据和对象等

session_start();

$_SESSION['arry'] = array('name' => 'jobs');

$_SESSION['obj'] = new Car();

默认情况下,session是以文件形式存储在服务器上的,因此当一个页面开启了session之后,会独占这个session文件,这样会导致当前用户的其它并发访问无法执行而等待。可以采用缓存或者数据库的形式存储来解决这个问题

删除与销毁session

删除某个session值可以使用php的unset函数,删除后就会从全局变量$_SESSION中去除,无法访问

如果要删除所有的session,可以使用session_destory函数销毁当前session,session_destroy会删除所有数据,但是session_id仍然存在

session_destroy并不会立即的销毁全局变量$_SESSION中的值,只有当下次访问的时候,$_SESSION才为空,因此如果需要立即销毁$_SESSION,可以使用unset函数

如果需要同时销毁cookie中的session_id,通常在用户退出的时候可能会用到,则还需要显示的调用setcookie方法删除session_id的cookie值‘

使用session来存储用户的登录信息

用户在登录成功以后,通常可以将用户的信息存储在session中,一般的会单独的将一些重要的字段单独存储,然后所有的用户信息独立存储

$_SESSION['uid'] = $userinfo['uid'];

$_SESSION['userinfo'] = $userinfo;

登录信息既可以存储在session中,也可以存储在cookie中,他们之间的区别在于session可以方便的存取多种数据类型,而cookie只支持字符串类型,同时对于一些安全性比较高的数据,coolie需要进行格式化与加密存储,而session存储在服务端则安全性较高

文件操作

读取文件内容

file_get_contents  读取文件的函数,可以将整个文件全部读取到一个字符串中

$content = file_get_contents('./test.txt');

$content = file_get_contents('./test.txt,null,null,100,500');  //通过参数控制读取内容的开始点以及长度

fgets 可以从文件指针中读取一行  使用fopen打开文件,最好使用fclose关闭文件指针,以避免文件句柄被占用

freads可以读取指定长度的字符串

$fp = fopen('./text.txt','rb');

while(!feof($fp)){

ehco fgets($fp);  //读取一行

}

fclose($fp);

判断文件是否存在

is_file与file_exists  判断文件存在的函数

file_exists不仅可以判断文件是否存在,同时也可以判断目录是否存在。

is_readable与is_writeable 判断文件是否可读与可写

$filename = './test.txt';

if(is_writeable($filename)){file_put_contents($filename,'test');}

if(is_readable($filename)){echo file_get_contents($filename);}

写入内容到文件

file_put_contents  和fwrite

$filename = './test.txt';

$data = 'test';

file_put_contents($filename,$data);

==========================================

$fp = fopen('./test.txt','w');

fwrite($fp,'hello');

fwrite($fp,'world');

fclose($fp);

取得文件的属性

fileowner:获的文件的所有者

filectime:获取文件的创建时间

filemtime:获取文件的修改时间

fileatime:访问文件的访问时间

filesize:取得文件的大小,文件大小以字节数表示

unlink:文件删除

rmdir:文件夹删除,如果不为空或者没有权限则会提示失败

如果文件夹中存在文件,可以先循环删除目录中的所有文件,然后再删除该目录,循环删除可以使用glob函数遍历所有文件

foreach(glob("*") as $filename){

       unlink($filename);

}

你可能感兴趣的:(php笔记(进阶3))