boa伺服器中如何使用cgi管理cookie(c語言)
阿新 • • 發佈:2019-01-23
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");