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>
<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 ""
{
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()
{
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>
((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>