社区
CGI
帖子详情
cgicc 操作 Cookie 的问题!!!
benice
2003-08-26 10:18:46
我怎么感觉使用 HTTPCookie::setMaxAge(unsigned long n) 函数没什么作用呢?
不论怎么设置这个参数,设置的 cookie 在浏览器被关闭之前始终有效,而一旦关闭就马上失效了。感觉有点象是 Session 啊。。。
本来这也没什么大问题,应该更加安全了一些。但现在我需要把一个 Cookie 删除掉,这就有问题了!我把时间设置为0它还是有效的。。。
请问这是什么问题,怎么解决啊???
...全文
78
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......
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服务器如何向扩展应用程序发送消息,在收到扩展应用程序...
thttpd +
Cgi
cc
Web 编程 什么是
CGI
? 通用网关接口(Common Gateway Interface),简称
CGI
,是一组定义如何将信息在 Web 服务器和一个自定义脚本之间交换的标准。目前
CGI
的规范是由 NCSA 维护的;NCSA 定义
CGI
如下:通用网关接口(
CGI
),是外部网关程序与信息服务器(例如,HTTP 服务器)之间的接口标准。目前应用的版本是
CGI
/1.1;C
CGI
2,204
社区成员
4,518
社区内容
发帖
与我相关
我的任务
CGI
Web 开发 CGI
复制链接
扫一扫
分享
社区描述
Web 开发 CGI
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章