C#

C#删除WebBrowser控件Session

因为要搞一个类似帐号多开的小辅助,但是很坑爹的发现,在一个WebBrowser中,就算重新登录,显示的仍然是上一个帐号,尝试清空cookie无效,目测就是session的问题,因为session信息是属于httponly cookie,所以不能直接清除。 搜了一圈,最终在stackoverflow上找到答案。 清除httponly的cookie,可以借助winapi的InternetSetOption()。 using System.Runtime.InteropServices; private const int INTERNET_OPTION_END_BROWSER_SESSION = 42; [DllImport("wininet.dll", SetLastError

  • Leo Chen
    Leo Chen
1 min read
session

百度编辑器Ueditor图片上传session验证

最近在一个项目中使用了Ueditor,感觉还行。 但是在处理文件上传权限时发现使用的是flash上传,上传时的sessionid和浏览器sessionid不一致,导致不能正确判断用户是否拥有上传权限。 因为之前用过swfupload,也是通过flash上传文件,他是通过附加一个PHPSESSID参数来实现session共享的。 但是查看了Ueditor的官方文档,却没找到相关的资料,也没有session相关的配置,就不了了之了。 此事搁置几周之后,为了定位一个BUG,我查看了Ueditor图片上传的数据包,发现里面有两个奇怪的参数 “param1″:”value1”, “param2″:”value2” 这个很像是demo传的数据,但是配置里面并没有这两个设置,于是我查看了源代码。 上传图片的页面是dialogs/image/image.html,在102行看到了这两个参数,看来这应该就是和swfupload里面的附加参数是一样效果,只要把PHPSESSID放在这里就可以了。 但是问题又来了,image.html是个静态页面,

  • Leo Chen
    Leo Chen
2 min read
PHP

深入理解session过期机制

首先得明白:session的过期时间由两方面决定的; 1存储在客户端的$_COOKIE[‘PHPSESSID’]的过期时间(默认cookie名称为PHPSESSID,可通过php.ini中的session.name修改。) 2.存储在服务器端的相对应的session文件(session文件名和上述cookie的值一一对应),默认为1440秒,即24分钟 ok,现在详细阐述上述两者的关系: 当执行session_start()的时候,其实是做了两件事: 1,检查客户端发送过来的的所有cookie(当然也包括$_COOKIE[‘PHPSESSID’], 如果有的话),根据$_COOKIE[‘PHPSESSID’]的值(这是由apache产生的随机字符串,如0lkbd2se458r600m2m7o1r4ic5)

  • Leo Chen
    Leo Chen
3 min read
AJAX

优化program-o

本次优化的主要目的为减少网络数据传输,原版的program-o会将存储各项数据的$response_Array放入表单传递,每次对话都要传递两次,对话越多传递的数据就越多,这样会严重浪费带宽资源,特别是当用户数量很多的时候对服务器的负担也很重。 所以优化的方案很简单,把$response_Array放在$_SESSION中存储,然后就可以使用ajax技术优化用户体验。 首先修改bot/chat.php。 1.替换 if( (isset($_POST[‘action’])) && (trim($_POST[‘chat’])!=””)) 为 if(trim($_POST[‘chat’

  • Leo Chen
    Leo Chen
2 min read