PHP和JS设置Cookies与session

hyx 2018-08-27 10:56:25 77次 0
cookies与session的区别与联系:1、Cookies储存在客户端,而session储存在服务器端
2、session是基于cookies而实现的,把SESSION_ID通过Cookie储存在客户端,每次请求时会将SESSION_ID加入HTTP中一起发送到客户端,从而寻找到该SESSION_ID所对应的用户的信息。
3、如果客户端禁止使用Cookies的话,可以将SESSION_ID附加在URL后面发送到服务器端。
1、在php中
设置Cookie:
setcookie(string name, string value, int expire,string path, string domain, int secure);
参数解释:name是cookie变量名称标识,你在php中将能象使用普通变量名相同来用他引用cookie变量。value是cookie变量的初始值,expire 表示该cookie变量的有效时间;path 为该cookie变量的相关路径;domain 表示cookie变量的网站;secure 则需在 https 的安全传输时才有效。
eg:setcookie("Cookie", "cookievalue",time()+3600, "/forum", ".php100.com", 1);
设置名为Cookie,值为cookievalue的Cookie,存在有效时间为1小时,只在php100.com网站下的/forum目录及其子目录下才有效。

删除cookie:
1、setcookie("cookiename")---用来删除指定cookie,当关闭浏览器时,该cookie会被删除
2、setcookie("cookiename","",time()-1)---将cookie设置为过期,使浏览器自动删除该cookie

设置session:
开启session:
session_start(void)

使用$_session[]数组为session赋值
eg:$_session["username"]='yanming'

session变量会被保存在服务器的某个文件下,该文件通过php.ini的session.save_path设置

销毁session:session_destroy(void)    //删除服务器端的session文件

删除某个session变量:unset($_session['sessionname'])

删除某个session:$_session=array();     //清空服务器端session文件的内容

当客户端禁止使用cookie时如何传递seeionID:在liunx服务器中,编辑PHP时使用了--enable-trans-sid配置选项,并且在运行时激活了session.user-trans-sid,系统会自动把sessionID附加到URL上传送

存储session最好的方式是使用mencached的NOSQL来缓存session。
1、使用session_set_save_handler(open,close,read,write,destory,gc)自定义session存储方式
2、修改php.ini中的session.save_handler和session.save_path两个选项,直接将session信息保存到memcached服务器中。

2、在JS中
由于JS是运行在客户端的脚本,而session是储存在服务器端的文件,所以JS一般无法设置session,而只能设置cookie
<html>
<head>
<script type="text/javascript">
//检查是否已设置cookie
function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=")
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1
    c_end=document.cookie.indexOf(";",c_start)
    if (c_end==-1) c_end=document.cookie.length
    return unescape(document.cookie.substring(c_start,c_end))
    }
  }
return ""
}
//设置cookie
function setCookie(c_name,value,expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
//通过将值写入document.cookie对象中来设置cookie
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}

function checkCookie()
{
username=getCookie('username')
if (username!=null && username!="")
  {alert('Welcome again '+username+'!')}
else
  {
  username=prompt('Please enter your name:',"")
  if (username!=null && username!="")
    {
    setCookie('username',username,365)
    }
  }
}
</script>
</head>

<body onLoad="checkCookie()">
</body>
</html>

发表评论

注:*为必填

回复 的评论
*
选择
*
*