TC官方合作论坛

 找回密码
 立即注册
查看: 1664|回复: 5

[TC5.0源码] 【一只熊】cookies自动管理

[复制链接]
发表于 2017-12-5 10:38:08 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 一只熊 于 2017-12-5 10:43 编辑

对于cookies的管理相信一直苦恼很多新手小白们

现在【一只熊】提供个cookies 自动管理的工具类给大家。让大家开发更方便


  1. var cookies
  2. //获取cookies的正则语句: "Set-Cookie[^.]*?[^;];"  
  3. //如果存在则更新,不存在则添加
  4. function CookiesManager_setCookie(head)
  5.     //cookie=""
  6.     if(head!="")
  7.         var setCookie=regexmatchtext(head,"Set-Cookie[^.]*?[^;];",false,true,true,false)
  8.         if(setCookie !=null && setCookie!="")
  9.             var n = arraysize(setCookie)   //条件1
  10.             if(n!=-1 && setCookie[0]!="")
  11.                 for(var i = 0; i < n; i++)
  12.                     var cookie=string_mid(setCookie[i],"Set-Cookie:",";")
  13.                     var cookie_key=string_mid(cookie," ","=")
  14.                     var pos=strfind(cookies,cookie_key)
  15.                     if(pos!=-1)
  16.                         cookies=strreplace(cookies,cookie_key&"="&string_mid(cookies,cookie_key,";"),cookie)
  17.                     else
  18.                         cookies=cookies&cookie&";"
  19.                     end
  20.                 end
  21.             end
  22.         end
  23.     end
  24. end
复制代码


字符串取中间信息方法string_mid,CookiesManager_setCookie 中有用到

  1. //取两个字符串中间的信息
  2. //参数1:源字符串
  3. //参数2:要取的部分所在开头的字符串
  4. //参数3:结束部分字符,默认为空,表示到到结尾
  5. function string_mid(source,startStr,endStr)
  6.     var startpos
  7.     var endpos
  8.     var temp
  9.     if(startpos=="")
  10.         startpos=0
  11.     else
  12.         startpos=strfind(source,startStr)
  13.         
  14.     end
  15.     temp=strsub(source,startpos+strlen(startStr),strlen(source))
  16.    
  17.     if(endStr=="")
  18.         endpos=strlen(temp)
  19.     else
  20.         endpos=strfind(temp,endStr)
  21.     end
  22.    
  23.     if(startpos==-1 || endpos==-1)
  24.         return ""
  25.     end
  26.     var ret=strsub(temp,0,endpos)
  27.     return ret
  28. end
复制代码


评分

参与人数 1威望 +10 金币 +10 收起 理由
cjxdn + 10 + 10 赞一个!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-12-5 10:38:52 | 显示全部楼层
好帖希望大家顶,有问题也可以回帖提问
回复 支持 反对

使用道具 举报

发表于 2017-12-22 21:58:56 | 显示全部楼层
你好,我用tc7.0编译时出现> function CookiesManager_setCookie(head),错误信息:函数定义中,不能识别的语法定义 。还想请教一下如何用tc设置ie的Cookie,谢谢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-25 13:58:16 | 显示全部楼层
donggua11 发表于 2017-12-22 21:58
你好,我用tc7.0编译时出现> function CookiesManager_setCookie(head),错误信息:函数定义中,不能识别的语 ...

tc貌似没提供设置iecookies的方法,,可以直接调用js设置ie cookies
回复 支持 反对

使用道具 举报

发表于 2018-1-1 15:21:45 | 显示全部楼层
谢谢
回复

使用道具 举报

发表于 2020-9-6 16:43:53 | 显示全部楼层
本帖最后由 halong1000 于 2020-9-6 16:44 编辑
一只熊 发表于 2017-12-25 13:58
tc貌似没提供设置iecookies的方法,,可以直接调用js设置ie cookies
我也是小白
TC用法:
dllcall("wininet.dll", "BOOL", "InternetSetCookieA", "char *", url地址, "char *", Cookie名字, "char *", cookies数据)


微软帮助文档如下:
InternetSetCookieA function
12/05/2018
2 minutes to read
Creates a cookie associated with the specified URL.

Syntax
C++

Copy
BOOLAPI InternetSetCookieA(
  LPCSTR lpszUrl,
  LPCSTR lpszCookieName,
  LPCSTR lpszCookieData
);
Parameters
lpszUrl

Pointer to a null-terminated string that specifies the URL for which the cookie should be set.

lpszCookieName

Pointer to a null-terminated string that specifies the name to be associated with the cookie data. If this parameter is NULL, no name is associated with the cookie.

lpszCookieData

Pointer to the actual data to be associated with the URL.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-20 20:34 , Processed in 0.061134 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表