PHP--关于cookie和session

1、PHP是一种服务端语言这意味着用PHP编写的代码将在为Web浏览器提供Web页面的主机上运行。
2、客户端和服务端之间进行的处理工作,PHP模块(添加进服务器的一个应用程序,用来增加它的功能)用来向浏览器发回HTML。所有的服务端技术都是在服务器上使用一个第三方模块,用来处理发送回客户端的数据(本地页面不需要服务器处理,但动态生成的页面需要通过服务器访问,因为动态页面要进过服务器处理)
3、使用PHP和直接使用HTML之间重要的不同之处在于,PHP在服务器处理完所有的事情之后向浏览器发送适当的信息。
 

关于cookie和session
1、cookie是服务器在用户计算机上保存用户信息的一种方式,一边服务器能够在访问过程中或者多次访问中记住用户。cookie就像一个名称标签:用户计算机告知服务器用户名称,并且给予一个名称标签。然后服务器能够通过名称标签获知用户是谁。
2、cookie:存的东西非常少,有安全隐患。======session:安全,比cookie存储量大。
3、在客户端/服务器之间来回传递cookie
4、在PHP中开始使用cooki时,需要了解当问题发生时如何对脚本进行调试。需要考虑三个方面:
(1)使用PHP发送cookie;
(2)在Web浏览器中接受cookie;
(3)在PHP脚本中访问cookie。
5、使用函数setcookie()发送cookie;
 
setcookie(name, value);
setcookie('CookieName', 'This is the cookie value.');
 
这行代码向浏览器发送了一个名为CookieName的cookie,其值为This is thecookie value。
可以向浏览器用setcookie()发送更多的cookie。
注:当创建cookie时,可以使用一个变量作为cookie的名称或者值属性。
 
setcookie($cookie_name, $cookie_value);
6、cookie最重要的问题是他们在想web浏览器发送任何信息之前被创建。所有这些脚本位于处理cookie发送的PHP代码之前。同时请确认PHP其实标签之前不要有空格或空行。
7、检验表单是否被提交:
 
if (isset($_POST['font_size'], $_POST['font_color'])){}:
8、创建cookie:
 
setcookie('font_size', $_POST['font_size']);
setcookie('font_color', $_POST['font_color']);
 
这两行代码创建了两个单独的cookie:一个名为font_size,另一个名为font_color。他们的值取决于HTML表单中所选的值,这些值被存储在变量
$_POST['font_size']
$_POST['font_ color']中。
9、没有文本。HTML或者空白能够在调用setcookie()之前发送至Web浏览器。
10、创建一个PHP代码段以报告cookie已经被发送:
 
<?php
if (isset($msg)) {
print $msg;
}
?>
 
如果cookie已经被发送,这些代码将会打印出一条消息。用户第一次访问页面时,cookie
不会被发送,因此不会设置$msg,这个条件的结果为FALSE,并且print调用不会运行。一旦提
交表单,就会设置$msg,这个条件的结果将为TRUE
11读取cookie
 
setcookie('user', 'trout');
//可以使用变量
$_COOKIE['user']。
 
注:cookie在未被发送前不能立即被脚本访问。
12、向cookie添加参数
 
setcookie(name, value, expiration, path, domain, secure, httponly);
 
setcookie(name, value, time()+3600);
//将cookie的国旗时间设定为当前事件之后的一小时
pathdomain参数用来限制在Web站点(路径)中的特定文件夹或者特定域中的cookie
setcookie(name, value, time()+3600, '/subfolder/');
cookie已经被指定给一个域,因此域参数可以用来限制一个子域的cookie,如forum.
example.com。
setcookie('cart', '82ABC3012', time()+3600, ', 'shop.example.com', 1);
13、删除cookie
函数setcookie()接受7个参数,但是只有name这个参数是必须的。如果传送一个有名称而无值的cookie,它起的作用同删除一个已经存在的同名cookie一样。
 
setcookie('username', 'Larry');
//删除这个cookie
setcookie('username', '');
//或者是
setcookie('username', FALSE);
 
或者
 
$.removeCookie('age');
 
 
14、session
与cookie的区别:cookie将数据保存在客户端(在Web浏览器中),而session则将数据保存在服务器端。所以,session拥有比cookie更多的优势。
session的优势:(1)session通常情况下更加安全,这是因为数据不会再客户端和服务器端来回重复传输。
(2)session能够存储比cookie更多的信息。
(3)session甚至可以在用户不接受他们浏览器中的cookie时仍然工作。
cookie在以下方面比session有优势:
(1)更加易于创建和检索;
(2)对服务器造成的处理压力更少;
(3)通常情况下能够持续更长的时间。
15、创建session
 
session_start();
 
在使用session的页面中,必须在脚本的起始行调用函数session_start();
一旦启用session,可以通过向数组$_SESSION赋值的方式记录数据
 
$_SESSION['first_name'] = 'Sam';
$_SESSION['age'] = 4;
 
这个数组与PHP中使用的其他数组不用,它必须是关联数组。
 
header ('Location: welcome.php');
可以通过调用函数session_start()以在session中保存值。虽然通常必须在脚本中首先调
用此函数(因为它将试图发送一个cookie),但是在这里并不是必须的,这是因为该脚本的header
文件开启了输出缓存
注:跳转页面应用以下代码:
 
header('location:./php.php');//举个栗子
 
16、访问session变量:(同引用其他数组的操作差不多)
 
//类似
$_SESSION['loggedin']
 
可以使用isset($_SESSION['var'])来查看特定的session值是否存在,就像用来检验其他的变量是否被设置那样。
17、删除session(删除session需要这样的3个步骤:开启session,重新设置数组,然后删除session数据)
session的数据在两个地方存在,因此需要在两个地方进行删除操作。但是首先必须从函数session_start()开始,通常像下面这样:
 
session_start();
 
然后,再次设置数组$_SESSION来删除session的值:
 
$_SESSION = array();
 
最后,需要从服务器上删除session数据(保存在临时文件中)。可以通过下面的方式进行操作:
 
session_destroy();
注意1:直到函数激活session后才能够对session进行删除。
注意2:可以使用unset($_SESSION['var'])来删除一个单独的session值。
18、
原文地址:https://www.cnblogs.com/hughman/p/6730930.html