社区
CGI
帖子详情
cgicc 操作 Cookie 的问题!!!
benice
2003-08-26 10:18:46
我怎么感觉使用 HTTPCookie::setMaxAge(unsigned long n) 函数没什么作用呢?
不论怎么设置这个参数,设置的 cookie 在浏览器被关闭之前始终有效,而一旦关闭就马上失效了。感觉有点象是 Session 啊。。。
本来这也没什么大问题,应该更加安全了一些。但现在我需要把一个 Cookie 删除掉,这就有问题了!我把时间设置为0它还是有效的。。。
请问这是什么问题,怎么解决啊???
...全文
182
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
(
cgi
cc
)
CGI
是: “公共网关接口”(Common Gateway Interface)的简称,是HTTP服务器与其它程序进行“交谈”的一种工具,其程序须运行在网络服务器上。
CGI
是一段程序,它运行在Server上,提供同客户端 Html页面的接口。
CGI
的功能:通常情况下
CGI
程序被用来解释处理来自表单的输入信息,在服务器产生相应的处理,并将相应的信息反馈给浏览器。
CGI
程序使网
CGI
CC
库实战指南:C++
CGI
开发从入门到精通
CGI
(通用网关接口)是Web服务器与后端程序交互的经典协议,它定义了通过环境变量和标准输入输出传递HTTP请求响应的标准方式。其工作原理基于进程间通信,Web服务器为每个请求启动独立进程,通过环境变量传递请求元数据,通过标准输入传递请求体,程序处理后将结果输出到标准输出。这一技术价值在于提供了语言无关、协议透明的Web后端开发基础,是理解HTTP协议与服务器交互原理的绝佳入口。在C++生态中,
CGI
CC
库封装了
CGI
协议的底层细节,将原始文本解析抽象为面向对象模型,极大简化了表单处理、
Cookie
操作
和文
开源C++版本
CGI
库
CGI
CC
入门
原发布在ChinaUnix,但未被自动搬迁过来:http://blog.chinaunix.net/uid-20682147-id-4895772.html PDF版本:https://download.csdn.net/download/aquester/10827278 目录 目录 1 1. 简介 1 2.
CGI
CC
组成 1 3.
CGI
输入处理子模块类结构 2 3.1....
CGI
CC
库:高效编写C++
CGI
程序的解决方案
通用网关接口(Common Gateway Interface,
CGI
)是一种标准的互联网协议,它定义了Web服务器如何与运行在服务器上的程序交互。通过
CGI
,可以创建动态生成内容的Web应用。
CGI
程序可以处理来自客户端的请求,并将其转换为服务器端的响应,是早期Web开发的重要工具。在Web开发的历史中,
CGI
(Common Gateway Interface)曾经是实现动态网页的主要方法之一。
Cgi
cc
最近上班很忙,很少有时间来总结一些东西。这段时间归结为磨练前端+后台技术的日子,尽管与我的title不符,倒也乐在其中。 项目用到了很多C++的类库,如
Cgi
cc
、MySQL++、JsonCpp、RapidXml等。在大学期间基本没用过C++,课外也没做过什么研究,还好有C的基础和一些面向对象的知识,编写起来并不是很难,当然代码的smell就不够正宗了。 在大学期间看过和用过的源码很有限,很多
CGI
2,203
社区成员
4,518
社区内容
发帖
与我相关
我的任务
CGI
Web 开发 CGI
复制链接
扫一扫
分享
社区描述
Web 开发 CGI
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章