社区
CGI
帖子详情
cgicc 操作 Cookie 的问题!!!
benice
2003-08-26 10:18:46
我怎么感觉使用 HTTPCookie::setMaxAge(unsigned long n) 函数没什么作用呢?
不论怎么设置这个参数,设置的 cookie 在浏览器被关闭之前始终有效,而一旦关闭就马上失效了。感觉有点象是 Session 啊。。。
本来这也没什么大问题,应该更加安全了一些。但现在我需要把一个 Cookie 删除掉,这就有问题了!我把时间设置为0它还是有效的。。。
请问这是什么问题,怎么解决啊???
...全文
79
5
打赏
收藏
cgicc 操作 Cookie 的问题!!!
我怎么感觉使用 HTTPCookie::setMaxAge(unsigned long n) 函数没什么作用呢? 不论怎么设置这个参数,设置的 cookie 在浏览器被关闭之前始终有效,而一旦关闭就马上失效了。感觉有点象是 Session 啊。。。 本来这也没什么大问题,应该更加安全了一些。但现在我需要把一个 Cookie 删除掉,这就有问题了!我把时间设置为0它还是有效的。。。 请问这是什么问题,怎么解决啊???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ykj76
2003-11-13
打赏
举报
回复
Cookie好像不能删掉
benice
2003-11-12
打赏
举报
回复
还是没有看到想要看到的东西。
Jakecat
2003-09-07
打赏
举报
回复
我以前写的CGI库中的CGICookie部分,你可以参考一下,呵呵
/*
iCGI - A library to extend stand library using C for CGI
*/
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "../StdlibX/StdlibX.h"
#include "../StdlibX/StringX/StringX.h"
#include "../StdlibX/ListX/ListX.h"
#include "../StdlibX/ListX/NodeStringToStringX.h"
#include "../StdlibX/TimeX/TimeX.h"
#include "CGIGeneral.h"
#include "CGIUrl.h"
#include "CGICookie.h"
SList *CGICookieListInitial()
{
SList *listHead;
listHead=CreateList();
if(listHead==NULL)
return NULL;
return listHead;
}
SCookieInfo *CGICookieInfoInitial()
{
SCookieInfo *info;
info=(SCookieInfo *)malloc(sizeof(SCookieInfo));
if(info==NULL)
return NULL;
info->exprires = NULL;
info->path = NULL;
info->domain = NULL;
info->secure = NULL;
CGICookieSetExprires(info,NULL);
CGICookieSetPath(info,"");
CGICookieSetDomain(info,"");
CGICookieSetSecure(info,"");
return info;
}
BOOL CGICookieListDestroy(SList *listHead)
{
return DestroyList(listHead,DeleteNodeMemberStringToString);
}
BOOL CGICookieInfoDestroy(SCookieInfo *info)
{
free(info->exprires);
free(info->path);
free(info->domain);
free(info->secure);
free(info);
return TRUE;
}
void CGICookieReadData(SList *listHead)
{
char *strCookieData;
int i,j;
SNodeMemberStringToString *member;
if( HTTP_COOKIE==NULL )
return;
strCookieData=HTTP_COOKIE;
i=0;
j=0;
while(1){
member=(SNodeMemberStringToString *)malloc(sizeof(SNodeMemberStringToString));
if( *(strCookieData+j)==0 ){
free(member);
break;
}
while( *(strCookieData+j)!='=' && *(strCookieData+j)!=0 )
j++;
member->key=(char *)malloc(j-i+1);
strncpy(member->key,strCookieData+i,j-i);
*(member->key+j-i)=0;
CGIUrlDecode(member->key);
if( *(strCookieData+j)==0 ){
free(member->key);
free(member);
break;
}
j++;
i=j;
if( *(strCookieData+i)==0 ){
free(member->key);
free(member);
break;
}
while( *(strCookieData+j)!=';' && *(strCookieData+j)!=0 )
j++;
member->value=(char *)malloc(j-i+1);
strncpy(member->value,strCookieData+i,j-i);
*(member->value+j-i)=0;
CGIUrlDecode(member->value);
if(AddListNode(listHead,(void *)member)==FALSE){
free(member->value);
free(member->key);
free(member);
printf("Error : AddListNode() failed in %s line %d\n",__FILE__,__LINE__);
exit(0);
}
if( *(strCookieData+j)==0 )
break;
j++;
j++;
i=j;
}
return;
}
void CGICookieWriteData(SList *listHead,SCookieInfo *info)
{
char data[256];
SListNode *node;
if( listHead->next==NULL )
return;
node=listHead;
while(node->next!=NULL){
strcpy(data,"Set-Cookie: ");
node=node->next;
( (SNodeMemberStringToString *)(node->member) )->key = CGIUrlEncode( ( (SNodeMemberStringToString *)(node->member) )->key );
strcat(data, ( (SNodeMemberStringToString *)(node->member) )->key );
strcat(data,"=");
( (SNodeMemberStringToString *)(node->member) )->value = CGIUrlEncode( ( (SNodeMemberStringToString *)(node->member) )->value );
strcat(data, ( (SNodeMemberStringToString *)(node->member) )->value );
strcat(data,";");
if( strcmp(info->exprires,"") ){
strcat(data," expires=");
strcat(data,info->exprires);
strcat(data,";");
}
if( strcmp(info->path,"") ){
strcat(data," path=");
strcat(data,info->path);
strcat(data,";");
}
if( strcmp(info->domain,"") ){
strcat(data," domain=");
strcat(data,info->domain);
strcat(data,";");
}
if( strcmp(info->secure,"") ){
strcat(data," secure=");
strcat(data,info->secure);
strcat(data,";");
}
printf("%s\n",data);
}
return;
}
char *CGICookieGetValue(SList *listHead,char *key)
{
return GetValueToKeyFromList(listHead,key);
}
BOOL CGICookieAddItem(SList *listHead,SNodeMemberStringToString *member)
{
return AddListNode(listHead,member);
}
BOOL CGICookieDeleteItem(SList *listHead,char *key)
{
int position;
position=GetIndexToKeyFromList(listHead,key);
return DeleteListNode(listHead,position,DeleteNodeMemberStringToString);
}
BOOL CGICookieEditItem(SList *listHead,char *key,char *value)
{
int position;
SNodeMemberStringToString *member;
char *tmp;
position=GetIndexToKeyFromList(listHead,key);
member=(SNodeMemberStringToString *)GetNodeMember( GetListNode(listHead,position) );
if( strlen(member->value) < strlen(value) ){
tmp=(char *)realloc( member->value , sizeof(char) * (strlen(value)+1) );
if(tmp==NULL)
return FALSE;
member->value=tmp;
}
strcpy(member->value,value);
return TRUE;
}
BOOL CGICookieSetExprires(SCookieInfo *info,struct tm *time_tm)
{
char buf[256];
char *tmp;
if( time_tm==NULL )
strcpy(buf,"");
else
FormatTimeString(buf,256,"%a,%d-%B-%Y %H:%M:%S GMT",time_tm);
if( info->exprires == NULL )
info->exprires=(char *)malloc( strlen(buf)+1 );
else if( strlen(info->exprires) < strlen(buf) ){
tmp=(char *)realloc( info->exprires , strlen(buf)+1 );
if(tmp==NULL)
return FALSE;
info->exprires=tmp;
}
if(info->exprires==NULL){
printf("Error : CGICookieSetExprires() failed in %s line %d\n",__FILE__,__LINE__);
exit(0);
}
strcpy(info->exprires,buf);
return TRUE;
}
BOOL CGICookieSetPath(SCookieInfo *info,char *path)
{
char *tmp;
if( info->path == NULL )
info->path=(char *)malloc( strlen(path)+1 );
else if( strlen(info->path) < strlen(path) ){
tmp=(char *)realloc( info->path , strlen(path)+1 );
if(tmp==NULL)
return FALSE;
info->path=tmp;
}
if(info->path==NULL){
printf("Error : CGICookieSetPath() failed in %s line %d\n",__FILE__,__LINE__);
exit(0);
}
strcpy(info->path,path);
return TRUE;
}
BOOL CGICookieSetDomain(SCookieInfo *info,char *domain)
{
char *tmp;
if( info->domain == NULL )
info->domain=(char *)malloc( strlen(domain)+1 );
else if( strlen(info->domain) < strlen(domain) ){
tmp=(char *)realloc( info->domain , strlen(domain)+1 );
if(tmp==NULL)
return FALSE;
info->domain=tmp;
}
if(info->domain==NULL){
printf("Error : CGICookieSetDomain() failed in %s line %d\n",__FILE__,__LINE__);
exit(0);
}
strcpy(info->domain,domain);
return TRUE;
}
BOOL CGICookieSetSecure(SCookieInfo *info,char *secure)
{
char *tmp;
if( info->secure == NULL )
info->secure=(char *)malloc( strlen(secure)+1 );
else if( strlen(info->secure) < strlen(secure) ){
tmp=(char *)realloc( info->secure , strlen(secure)+1 );
if(tmp==NULL)
return FALSE;
info->secure=tmp;
}
if(info->secure==NULL){
printf("Error : CGICookieSetSecure() failed in %s line %d\n",__FILE__,__LINE__);
exit(0);
}
strcpy(info->secure,secure);
return TRUE;
}
googleboy
2003-09-05
打赏
举报
回复
等待解答ing....
benice
2003-08-26
打赏
举报
回复
up......
Cookie
与Session的常用
操作
及其工作原理
首先介绍了
Cookie
是什么及其诞生背景,
Cookie
的工作原理,及在谷歌与火狐浏览器下如何查看
Cookie
,然后详细讲解了在JavaEE中如何使用
Cookie
(常用
操作
)。其次详细讲解了Session是什么及其诞生背景,Session的工作原理与常用
操作
,及
Cookie
禁用后如何使用Session进行会话跟踪。最后讲解了Session的失效。
Cgi
cc
体系结构剖析
Cgi
cc
体系结构剖析
cgi
cc
是开发
cgi
程序的c++库,它是基于stl的,从使用上来说,可以把它分成两个部分:第一部分是输入输出的处理和封装,它包括
Cgi
cc
、
Cgi
Environment、
Cgi
Input、FormEntry和FormFile类,第二部分是数据输出模块,它们是以 MStreamable为基类的封装了HTTPHeader和HTML元素的一系列子类。HTTP
Cookie
使用
cookie
保存用户的登录状态——初步实现
保存用户的登录状态是许多网站都会使用,一般会使用session、数据库或者
cookie
和session相结合的办法,这里我们了解
cookie
的方法来保存用户登录状态.
Cookie
是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式。
Cookie
是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web 站点都
开源项目之---
cgi
(
cgi
cc
)
CGI
是: “公共网关接口”(Common Gateway Interface)的简称,是HTTP服务器与其它程序进行“交谈”的一种工具,其程序须运行在网络服务器上。
CGI
是一段程序,它运行在Server上,提供同客户端 Html页面的接口。
CGI
的功能:通常情况下
CGI
程序被用来解释处理来自表单的输入信息,在服务器产生相应的处理,并将相应的信息反馈给浏览器。
CGI
程序使网
CGI
CC
编程
嵌入式linux项目开发(一)——
CGI
C编程 一、
CGI
C简介 1、
CGI
简介
CGI
(Common Gateway Interface)是外部应用扩展应用程序与WWW服务器交互的一个标准接口。按照
CGI
标准编写的外部扩展应用程序可以处理客户端浏览器输入的数据,从而完成客户端与服务器的交互
操作
。而
CGI
规范就定义了Web服务器如何向扩展应用程序发送消息,在收到扩展应用程序...
CGI
2,204
社区成员
4,518
社区内容
发帖
与我相关
我的任务
CGI
Web 开发 CGI
复制链接
扫一扫
分享
社区描述
Web 开发 CGI
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章