1. 程式人生 > >boa伺服器中如何使用cgi管理cookie(c語言)

boa伺服器中如何使用cgi管理cookie(c語言)

1

【方法1】

(1) 設定cookie

printf( "Set-Cookie:username=%s; path=/; \r\n ",username);

printf("Content-type: text/html\n\n");

注意:設定cookie的語句要放在Content-type前,否則不能生效。

(2) 檢視cookie

printf("Content-type: text/html\n\n");
printf("<html>\n");
	
info=getenv("HTTP_COOKIE");
if(info!=NULL)
{
      sscanf(info,"username=%s",username);
}

注意:HTTP_COOKIE而不是HTTP-COOKIE,很多網路資料上都寫錯了,結果查到的cookie資料為空。

 【參考網址】

【方法2】

(1) 設定cookie

printf("<head>\n");
printf("<script  charset=\"gb2312\" language=\"JavaScript\" >\n");				
printf("function setCookie(c_name,value,expiredays)					\
	\n{										\
		\nvar exdate=new Date();						\
		\nexdate.setDate(exdate.getDate()+expiredays)				\
		\ndocument.cookie=c_name+ \"=\" +escape(value)+				\
		\n((expiredays==null) ? \"\" : \"; expires=\"+exdate.toGMTString());	\
	}\n");										
printf("</script>\n");
printf("</head>\n");

在<body>標籤中呼叫:

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

(2) 獲取cookie

printf("<head>\n");
printf("<script  charset=\"gb2312\" language=\"JavaScript\" >\n");				
printf("function getCookie(c_name)								\
\n{												\
\n	if(document.cookie.length>0)								\
\n	{ 											\
\n		c_start=document.cookie.indexOf(c_name + \"=\");				\
\n		if(c_start!=-1)									\
\n		{ 										\
\n			c_start=c_start + c_name.length+1;				 	\
\n			c_end=document.cookie.indexOf(\";\",c_start);				\
\n			if(c_end==-1) c_end=document.cookie.length;				\
\n			return unescape(document.cookie.substring(c_start,c_end));		\
\n		} 										\
\n}												\
\n	return \"\";										\
\n}\n");									
printf("</script>\n");
printf("</head>\n");

在<body>標籤中呼叫:

printf("<script type=\"text/javascript\">\n");
printf("var temp;\n");
printf("temp=getCookie('username');\n");
printf("alert(temp);\n");
printf("</script>\n");


評註:查詢cookie【方法2】,暫時沒有找到合適的方法將得到的cookie值轉化為字串,只能用於js指令碼中。可以結合【方法2】的設定cookie和【方法1】的查詢cookie使用。

【參考網址】

2 如何關閉瀏覽器頁面的同時清除cookie?

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