javascript php session,关于php和javascript中共用cookie与session的研究

最近一直忙着各种考试,jQuery的文章还只写了一半,不过既然碰到了这个问题那就先写出来记录下,从今天晚上开始应该可以继续学jQuery了。。。。

关于cookie和session的机制就不多记录,直接进入主题。

今天在网上碰到一个问题,说想让php和js共用cookie然后实现一个功能,具体什么功能倒是忘记了,不过这个东西研究下顺便做点记录还是必要的,毕竟是比较常用的。

那么首先是研究cookie的共用吧:前提是假设浏览器能够接收所有cookie

1,php中怎么设置cookie:本页面为test_session.php

if ( setcookie('kylin', 'kylin', time() + 3600) && setcookie('fanta', 'fanta', time() + 3600) ) {

header('Location: test_session1.php');

exit();

}

这个名字起的不是太好,但是常用的又是session那么暂且就这样儿吧。因为cookie如果用php设置的话是不能在本页面接受的,那就需要一个接收页面,但是如果用js设置的话就可以在本页面接收了,这还是有些区别的。

然后用php接收cookie就不做记录,那我在接收页面(test_session1.php)中是用js接收的。

2,js中怎么接收cookie:

window.onload = function() {

alert( document.cookie );

}

打印出来的结果是这个样子的:kylin=kylin; fanta=fanta

注意:两个值之间的分割是一个分号+一个空格

然后接下来我用js设置cookie然后在下一个页面(test_session2.php)里用php接收:

3,js中如何设置cookie:

window.onload = function() {

alert( document.cookie );

setCookie( 'koma', 'koma', 3600 );

alert( document.cookie );

window.location.href='test_session2.php';

}

function setCookie(name, value, iDay){

var oDate = new Date();

oDate.setDate(oDate.getDate()+iDay);

document.cookie = name+'='+value+';expires='+oDate;

}

4,php中接收cookie:

if ( isset( $_COOKIE['koma'] ) && isset( $_COOKIE['kylin'] ) && isset( $_COOKIE['fanta'] ) ) {

echo $_COOKIE['koma'] . '===' . $_COOKIE['kylin'] . '===' . $_COOKIE['fanta'] . '
';

}

可以在test_session2.php中打印出了三个值,这说明了我们可以通过cookie来实现js和php的通信,也说明了js和php共用cookie的原理。

但是我们一般常用的是session,而且一般是推荐用session,那么如何实现js和php共用session呢?

这里就贴一段代码,js中设置cookie、删除cookie、读取cookie:

//设置Cookie

function setCookie(name, value, iDay){

var oDate = new Date();

oDate.setDate(oDate.getDate()+iDay);

document.cookie = name+'='+value+';expires='+oDate;

}

//获取Cookie

function getCookie(name){

//cookie 格式:name=kk; pass=123

var arr = document.cookie.split('; ');

for( var i=0;i

var arr2 = arr[i].split('=');

if( arr2[0] == name ){

return arr2[1];

}

}

return '';

}

//删除Cookie

function removeCookie(name){

setCookie(name,'1',-1);//设置过期时间为负值(小于当前时间就OK)

}

关于js和php中session的共用,这个得在设置session页面里面下一个种子,然后通过js来获取,之后在php页面再获取到之后重新设置,这样的话花销比较大,一般需要的话最好是通过cookie来了,而且session的共用的机制个人的做法不同,这里不做记录是因为我觉得如果可以互通cookie的话那么就用cookie了,因为session本身也是要依赖于cookie的,所以其本质一样但是实现的时候花销后者还大些,所以我觉得没有必要故不做记录。。。。

每天说一句:念念不忘、必有回响。。。。加油!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值