Boa服务器中如何使用cgi管理cookie(c语言)

1

【方法1】

(1) 设置cookie

  1. printf( "Set-Cookie:username=%s; path=/; \r\n ",username);  
  2.   
  3. printf("Content-type: text/html\n\n");  

注意:设置cookie的语句要放在Content-type前,否则不能生效。

(2) 查看cookie

  1. printf("Content-type: text/html\n\n");  
  2. printf("<html>\n");  
  3.       
  4. info=getenv("HTTP_COOKIE");  
  5. if(info!=NULL)  
  6. {  
  7.       sscanf(info,"username=%s",username);  
  8. }  

注意:HTTP_COOKIE而不是HTTP-COOKIE,很多网络资料上都写错了,结果查到的cookie数据为空。

【方法2】

(1) 设置cookie

  1. printf("<head>\n");  
  2. printf("<script  charset=\"gb2312\" language=\"JavaScript\" >\n");                  
  3. printf("function setCookie(c_name,value,expiredays)                 \  
  4.     \n{                                     \  
  5.         \nvar exdate=new Date();                        \  
  6.         \nexdate.setDate(exdate.getDate()+expiredays)               \  
  7.         \ndocument.cookie=c_name+ \"=\" +escape(value)+             \  
  8.         \n((expiredays==null) ? \"\" : \"; expires=\"+exdate.toGMTString());    \  
  9.     }\n");                                        
  10. printf("</script>\n");  
  11. printf("</head>\n");  

在<body>标签中调用:

  1. printf("<script type=\"text/javascript\">\n");  
  2. printf("setCookie('username','%s',1);\n",username);  
  3. //printf("window.location.href=\"xxxx\";\n");  
  4. printf("</script>\n");  

(2) 获取cookie

  1. printf("<head>\n");  
  2. printf("<script  charset=\"gb2312\" language=\"JavaScript\" >\n");                  
  3. printf("function getCookie(c_name)                              \  
  4. \n{                                             \  
  5. \n  if(document.cookie.length>0)                             \  
  6. \n  {                                           \  
  7. \n      c_start=document.cookie.indexOf(c_name + \"=\");                \  
  8. \n      if(c_start!=-1)                                 \  
  9. \n      {                                       \  
  10. \n          c_startc_start=c_start + c_name.length+1;                  \  
  11. \n          c_end=document.cookie.indexOf(\";\",c_start);               \  
  12. \n          if(c_end==-1) c_end=document.cookie.length;             \  
  13. \n          return unescape(document.cookie.substring(c_start,c_end));      \  
  14. \n      }                                       \  
  15. \n}                                             \  
  16. \n  return \"\";                                        \  
  17. \n}\n");                                      
  18. printf("</script>\n");  
  19. printf("</head>\n");  

在<body>标签中调用:

  1. printf("<script type=\"text/javascript\">\n");  
  2. printf("var temp;\n");  
  3. printf("temp=getCookie('username');\n");  
  4. printf("alert(temp);\n");  
  5. printf("</script>\n");  

评注:查询cookie【方法2】,暂时没有找到合适的方法将得到的cookie值转化为字符串,只能用于js脚本中。可以结合【方法2】的设置cookie和【方法1】的查询cookie使用。

2 如何关闭浏览器页面的同时清除cookie?

  1. printf("<body onunload=\"document.cookie=''\">\n");  

相关推荐