怎样使用php与jquery设置和读取cookies

HTTP协议是一种无状态协议,这意味着你对网站的每一个请求都是独立的,而且因此无法通过它自身保存数据。但这种简单性也是它在互联网早期就广泛传播的原因之一。

不过,它仍然有一种方法能让你用cookies的形式来保存请求之间的信息。这种方法使你能够更有效率的进行会话管理和维持数据。

有两种处理cookies的方式—服务端(php,asp等)和客户端(javascript).在这个教程中,我们将学习到以php和javascript这两种方式如何去创建cookies。

Cookies and php
 
setting cookies
在php中创建cookie你需要用到setcookie这个方法。它需要些参数(除了第一个参数是必需的,其它参数都是可选的)

复制代码 代码如下:


setcookie(
    'pageVisits', //cookie名字,必需的
     $visited,     //cookie的值
     time()+7*24*60*60, //过期时间,设置为一个星期
     'https://www.jb51.net/',               //cookie可用的文件路径
     'demo.tutorialzine.com' //cookie绑定的域名
)


如果过期时间设置为0(默认设置也是0),那么当浏览器重启时cookie将会丢失。
参数'https://www.jb51.net/'表示你域名下所有文件路径cookie都可以用(当然你也可以为它设置单一的文件路径,例:'/admin/')。

你还可以传给个这个函数别两个额外的参数,这里没有给出。它们被规定为boolean类型的。
第一个参数表示cookie仅在一个安全的HTTPS连接才运转,而第二个参数表示不能使用javascript操作cookie。

对大多数人来说,你只需要第四个参数,剩下的就忽略了。

reading cookies
用php读取cookie就简单多了。所有的传给脚本的cookies都在$_COOKIE这个超级全局数组里。
在我们的例子里,可以用下面的代码来读取cookies:

复制代码 代码如下:


$visits = (int)$_COOKIE['pageVisits']+1;
echo "You visited this site: ".$visits." times";


值得注意的地方是,当下一个页面加载好时,也可以用$_COOKIE来取得你用setcookie方法设置的cookies,
你应该意识到了什么。

deleting cookies
为了删除cookies,仅仅需要用setcookie函数为cookies设置一个已经过去时间做为过期就行了。

复制代码 代码如下:


setcookie(
     'pageVisits',
      $visited,
      time()-7*24*60*60,  //设置为前一个星期,cookie将会被删除
      'https://www.jb51.net/',
      'demo.tutorialzine.com'
)


Cookies and jQuery
在jquery中使用cookies,你需要一个插件Cookie plugin.

Setting cookies
用Cookie plug-in设置cookies是很直观的:

复制代码 代码如下:


$(document).ready(function(){ 

     // Setting a kittens cookie, it will be lost on browser restart: 
     $.cookie("kittens","Seven Kittens"); 

     // Setting demoCookie (as seen in the demonstration): 
     $.cookie("demoCookie",text,{expires: 7, path: 'https://www.jb51.net/', domain: 'demo.tutorialzine.com'}); 

     // "text" is a variable holding the string to be saved 
 });


Reading cookies
读取cookie甚至更简单,只需要调用$.cookie()方法,给它一个cookie-name就可以了,这个方法会返回cookie的值:

复制代码 代码如下:


 $(document).ready(function(){ 

     // Getting the kittens cookie: 
     var str = $.cookie("kittens"); 

     // str now contains "Seven Kittens" 
 });


Deleting cookies
删除cookie,只需要在次使得$.cookie()方法,把第二个参数设置为null就可以了。

复制代码 代码如下:


 $(document).ready(function(){ 

     // Deleting the kittens cookie: 
     var str = $.cookie("kittens",null); 

     // No more kittens 
 });


完整例子:
demo.php

复制代码 代码如下:


<?php
// Always set cookies before any data or HTML are printed to the page
$visited = (int)$_COOKIE['pageVisits'] + 1;
setcookie( 'pageVisits',    // Name of the cookie, required
     $visited,     // The value of the cookie
   time()+7*24*60*60,   // Expiration time, set for a week in the future
   'https://www.jb51.net/',      // Folder path, the cookie will be available for all scripts in every folder of the site
   'demo.tutorialzine.com'); // Domain to which the cookie will be locked
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>MicroTut: Getting And Setting Cookies With jQuery & PHP | Tutorialzine demo</title>
<link type="text/css" href="https://www.jb51.net/styles.css" mce_href="https://www.jb51.net/styles.css" />
<mce:script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" mce_src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></mce:script>
<mce:script type="text/javascript" src="https://www.jb51.net/jquery.cookie.js" mce_src="https://www.jb51.net/jquery.cookie.js"></mce:script>
<mce:script type="text/javascript"><!--
$(document).ready(function(){

 var cookie = $.cookie('demoCookie');

 // If the cookie has been set in a previous page load, show it in the div directly:
 if(cookie) $('.jq-text').text(cookie).show();

        
 $('.fields a').click(function(e){
  var text = $('#inputBox').val();

  // Setting a cookie with a seven day validity:
  $.cookie('demoCookie',text,{expires: 7, path: 'https://www.jb51.net/', domain: 'demo.tutorialzine.com'});

  $('.jq-text').text(text).slideDown('slow');

  e.preventDefault();
 });

 $('#form1').submit(function(e){ e.preventDefault(); })
})
// --></mce:script>
</head>
<body>
<h1>MicroTut: Getting And Setting Cookies With jQuery & PHP</h1>
<h2>Go Back <a href="https://tutorialzine.com/2010/03/microtut-getting-setting-cookies-jquery-php/" mce_href="https://tutorialzine.com/2010/03/microtut-getting-setting-cookies-jquery-php/">To The Tutorial »</a></h2>
<div>
 <div><?php echo $visited?></div>
    <p>The number above indicates how many times you've visited this page (PHP cookie). Reload to test.</p>
</div>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/d70c6ace3d30b61760f7dba1f2a3d308.html