Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4731712
  • 博文数量: 930
  • 博客积分: 12070
  • 博客等级: 上将
  • 技术积分: 11448
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-15 16:57
文章分类

全部博文(930)

文章存档

2011年(60)

2010年(220)

2009年(371)

2008年(279)

分类: C/C++

2010-07-02 09:49:32

一、写cookie
写cookie时,cookie信息应该在http header中,浏览器接收到http相应头,会自动保存cookie变量,比如:
printf("Set-Cookie:name=value;path=/\r\n");
path=/代表网站所有www资源都可以读取所设置的cookie。cookie的具体信息如果不了解,可以自己google一下。
如果cookie中有多个变量,就多次输出。还有,c写cgi的时候,Set-Cookie应该写在Content-type之前,不然cookie设置不成功。
一般情况,cookie只保存用户名,常用方法如下:
首先有两个变量,1:用户名,user、2:网站全局cookie加密密码,psd。
//下面我写些伪代码
char *user="user";
char *psd="123";
char *user_psd;
sprintf(user_psd,"%s%s",user,psd);//把user、psd拼接成一个字符串
char *md5str=md5(user_psd);//做md5加密
char *ul;
sprintf(ul,"%s.%s",user,md5str);
char *real_cookie=base64_encode(ul);//做base64编码。
printf("Set-Cookie:user=%s;path=/\r\n",real_cookie);

二、读cookie
如果设置了cookie,那么下次访问本站点的时候,浏览器会自动把cookie信息放在http 请求头中,webserver会自动截取,并保存到环境变量中去。
读cookie:
char *cookie=getenv("HTTP-COOKIE");//把cookie信息全部取出。
如果才用上面写cookie的方法,解析user内容:首先是base64解码,接下来以'.'分割字符串,截取user和后面的md5str,把user和网站全局的cookie加密密码拼接,做md5,如果结果串与md5str一样,说明这个cookie不是伪造的。

三、注销cookie
这个使用js就可以,也就是把user设为空即可。
//js code:
function Setcookie (name, value) {
var argc = arguments.length;
var argv = arguments;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
document.cookie = name + "=" + value +
((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain=" + domain)) +
((secure == true) ? "; secure" : "");
}


注销时调用这个js函数即可。
阅读(1427) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~