喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

$5.95 Web Hosting     

上一主题 下一主题
     
标题: 贴出一个c++的写、读cookie信息的类  
 
diudiu (diudiu)
高级会员
Rank: 4
版主



UID 16815
精华 1
积分 914
帖子 894
金钱 904 喜悦币
威望 10
人脉 0
阅读权限 50
注册 2002-10-2
来自 www.diudiu.net
状态 离线
[广告]: 代充Paypal帐号美元
贴出一个c++的写、读cookie信息的类

仅供参考,我正在使用这个类,对其中进行一些修改和改进,还需要大家的继续完善。

//##############################常用功能模块类##############################
class GlobalFunc
{
public:
        FILE *cgiIn,*cgiOut;
        int firstCookie;
        void GlobalFuncInit();
        void CookieSetInteger(char *name, int value, int secondsToLive,
        char *path, char *domain);
        void CookieSetString(char *name, char *value, int secondsToLive,
        char *path, char *domain);
        char *GetCookieVal(char *cookieName);
        void HeaderLocation(char *redirectUrl);
};

//类初始化函数
void GlobalFunc::GlobalFuncInit()
{
        this->firstCookie=1;
        this->cgiOut=stdout;
}

//设置int型cookie值
void GlobalFunc::CookieSetInteger(char *name, int value, int secondsToLive,
        char *path, char *domain)
{
        char svalue[256];
        sprintf(svalue, "%d", value);
        this->CookieSetString(name, svalue, secondsToLive, path, domain);
}

//设置string型cookie值
void GlobalFunc::CookieSetString(char *name, char *value, int secondsToLive,
        char *path, char *domain)
{
                fprintf(this->cgiOut,
                "Set-Cookie: %s=%s; Domain=%s; Max-Age=%d; Path=%s; \r\n",
                name, value, domain, secondsToLive, path);
}

//重定向url地址
void GlobalFunc::HeaderLocation(char *redirectUrl)
{
        if (!this->firstCookie)
        {
                fprintf(cgiOut, "\r\n");
        }
        fprintf(cgiOut, "Location: %s\r\n\r\n", redirectUrl);
}

//获得cookie值
char *GlobalFunc::GetCookieVal(char *cookieName)
{
        char *cookieVal,*cookies,*name,*value;
        cookieVal=NULL;
        if(!(cookies=getenv("HTTP_COOKIE")))
        {
                return NULL;
        }
        for(name=strtok(cookies,";");name;name=strtok(NULL,";"))
        {
                while(isspace((unsigned char)*name))
                {
                        name++;
                }
                value=strchr(name,'=')+1;
                *(value-1)='\0';
                if(!strcmp(name,cookieName))
                {
                        if(!(cookieVal=strdup(value)))
                        {
                                return NULL;
                        }
                        break;
                }
                free(cookies);
        }
        return cookieVal;
}
2003-8-12 02:23 PM#1
查看资料  访问主页  发短消息  QQ  顶部
 
books (books)
高级会员
Rank: 4
老会员



UID 23239
精华 0
积分 546
帖子 562
金钱 546 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2003-9-16
状态 离线
[广告]: 代充Paypal帐号美元
6月份就出来了,现在应该完善了吧?
偶命令你立刻贴出完整版!
2004-1-4 01:42 AM#2
查看资料  发短消息  顶部
 
myl992 (myl992)
金牌会员
Rank: 6Rank: 6
老会员


UID 22062
精华 0
积分 1684
帖子 1777
金钱 1684 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2003-7-28
来自 两个胖子
状态 离线
[推荐阅读] 张雨生 mp3 20首 (经典老歌)
这些就够俺看几天的了,拿回去看看



以德服人
2004-2-6 11:20 AM#3
查看资料  发短消息  QQ  Yahoo!  顶部
 
sleetdrop (sleetdrop)
注册会员
Rank: 2
一般会员



UID 25071
精华 0
积分 52
帖子 50
金钱 52 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2003-12-7
状态 离线
[推荐阅读] 继续在这里讨论“帐号登陆限制问题”
其实只要把日常的一些东西用类封装了。比如post,get变量解析,cookie, session等,写cgi有啥难,其实什么php,asp,jsp还不是都在做这些事情。
web就是web,幸亏它是开放的。
2004-2-23 12:50 PM#4
查看资料  发短消息  顶部
 
diudiu (diudiu)
高级会员
Rank: 4
版主



UID 16815
精华 1
积分 914
帖子 894
金钱 904 喜悦币
威望 10
人脉 0
阅读权限 50
注册 2002-10-2
来自 www.diudiu.net
状态 离线
[推荐阅读] 请教!
没错啊,软件基本都这样,关键是你需要把这些基本功能模块写出来,然后合理的组合它们。。
2004-3-18 03:24 PM#5
查看资料  访问主页  发短消息  QQ  顶部
 
sirli (sirli)
中级会员
Rank: 3Rank: 3
中级会员



UID 25495
精华 0
积分 333
帖子 333
金钱 333 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2003-12-30
状态 离线
[推荐阅读] 关于redhat9下的modem,非常紧急,在线等
喜满你论坛丫,其实是个好东西,经常能捞到这样的图片,改版干皮,以前的数状论坛浏览起来多爽。

2004-3-30 09:03 PM#6
查看资料  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.026328 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP