现在的位置: 首页 > 综合 > 正文

php中cookie和session的区别和使用方法

2018年01月30日 ⁄ 综合 ⁄ 共 3272字 ⁄ 字号 评论关闭

一、区别
Session是存在服务器端的;Cookie是存在客户端的!!
Session更不需要Cookie来支持和不会受浏览器端的设置影响,可记录每个访问者的信息,独立在服务器端,比Cookie安全!
Session是存在内存中的,浏览器关闭它也就了;Cookie是以文件方式存在的,可以修改其存活时间。

二、Cookie的使用

 1、设置Cookie
  PHPSetCookie函数来设置Cookie。必须注意的一点是:CookieHTTP协议头的一部分,用于浏览器和服务器之间传递信息,所以必须在所有属于HTML文件本身的内容输出之前调用Cookie函数。SetCookie
函数 BBS.bitsCN.com网管论坛定义了一个Cookie,并且把他附加在HTTP头的后面,SetCookie函数的原型如下:int
SetCookie(string name, string value, int expire, string path, string domain, int secure);除了name之外所有的参数都是可选的。value,path,domain
三个参数能用空字符串代换,表示没有设置;expire
secure两个参数是数值型的,能用0表示。expire参数是个标准的Unix时间标记,能用time()mktime()
函数取得,以秒为单位。secure参数表示这个Cookie是否通过加密的HTTPS协议在网络上传输。

  2、接收和处理Cookie
  PHPCookie的接收和处理的支持非常好,是完全自动的,跟FORM变量的原则相同,特别简单。比如设
置一个名为MyCookierCookiePHP会自动从WEB服务器接收的HTTP头里把他分析出来,并形成一个和普通
变量相同的变量,名为$myCookie,这个变量的值就是Cookie的值。数组同样适用。另外一个办法是引用PHP
的全局变量$HTTP_COOKIE_VARS数组。

  3、删除Cookie
  要删除一个已存在的Cookie,有两个办法:
  一是调用只带有name参数的SetCookie,那么名为这个nameCookie
将被从关系户机上删掉;另一个办
法是设置Cookie的失效时间为time()time()-1,那么这个Cookie在这个页面的浏览完之后就被删除了(其
实是失效了)。
  要注意的是,当一个Cookie被删除时,他的值在当前页在仍然有效的。
  4、使用Cookie的限制
  首先是必须在HTML文件的内容输出之前设置;
  其次不同的浏览器对Cookie的处理不一致,且有时会出现错误的结果。比如:MS IE+SERVICE PACK 1
不能正确处理带域名和路径的Cookie
Netscape Communicator 4.05MS IE 3.0不能正确处理不带路径和
时间的Cookie。至于MS IE 5
好象不能处理带域名、路径和时间的Cookie。这是我在设计本站的页面时发现
的。
  第三个限制是在客户端的。一个浏览器能创建的Cookie数量最多为30个,并且每个不能超过4KB,每个WEB
站点能设置的Cookie总数不能超过20个。

三、session使用方法

SESSION的作用很多,最多用的就是站点内页面间变量传递。在页面开始我们要session_start();开启SESSION然后就可以使用SESSION变量了,比如说要赋值就是:$_SESSION['item']="item1";要得到值就是$item1=$_SESSION['item'];,很简单吧。这里我们可能会使用到一些函数,比如说判断是不是某SESSION变量为空,可以这么写:empty($_SESSION['inum'])返回true
or false

下面综合一下前面所说的我们来看一个登陆程序,判断用户名密码是否正确。
登陆表单是这样:login.php

<table width="100%" height="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<form action="checklogin.php" method="post"><td align="center" valign="middle"><table width="400" border="0" cellpadding="5" cellspacing="1" class="tablebg">
<tr class="tdbg">
<td colspan="2"><div align="center">Administrators Login</div></td>
</tr>
<tr class="tdbg">
<td><div align="center">Username</div></td>
<td><div align="center">
<input name="username" type="text" id="username">
</div></td>
</tr>
<tr class="tdbg">
<td><div align="center">Password</div></td>
<td><div align="center">
<input name="password" type="password" id="password">
</div></td>
</tr>
<tr class="tdbg">
<td colspan="2"><div align="center">
<input type="submit" name="Submit" value="Submit">
<input type="reset" name="Submit2" value="Clear">
</div></td>
</tr>
</table></td></form>
</tr>
</table>

处理文件是这样

<?
require_once('conn.php');
session_start();
$username=$_POST['username'];
$password=$_POST['password'];
$exec="select * from admin where username='".$username."'";
if($result=mysql_query($exec))
{
    if($rs=mysql_fetch_object($result))
    {
      if($rs->password==$password)
      {
        $_SESSION['adminname']=$username;
        header("location:index.php");
      }
      else
      {
        echo "<script>alert('Password Check Error!');location.href='login.php';</script>";
      }
    }
    else
    {
    echo "<script>alert('Username Check Error!');location.href='login.php';</script>";
    }
    }
else
{
echo "<script>alert('Database Connection Error!');location.href='login.php';</script>";
}

?>

conn.php是这样:

<?
$conn=mysql_connect ("127.0.0.1", "", "");
mysql_select_db("shop");
?>

由于 $_SESSION['adminname']=$username;我们可以这样写验证是否登陆语句的文件:checkadmin.asp
<?
session_start();
if($_SESSION['adminname']=='')
{
echo "<script>alert('Please Login First');location.href='login.php';</script>";
}
?>
 

抱歉!评论已关闭.