236 views | 2013/05/08
PHP的header函数用来发送Http头信息,我在使用中,有个场景,就是代理请求的场景。
从服务器A代理请求服务器B,然后把B的回包透传回客户端浏览器。
这里面尤其重要的Cookie,因为我要实现Cookie换域,因为Cookie种在服务器B的域名上,我要替换其种在A的域名上,于是就有了这么一个代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
$temp = explode("\r\n\r\n", $result, 2);
$header = $temp[0];
$content = $temp[1];
$matches = array();
$ret = preg_match_all('#^Set-Cookie.*$#m', $header, $matches);
if ($ret) {
foreach ($matches[0] as $cookieinfo) {
$cookieinfo = str_replace('server.b.domain.com', 'server.a.domain.com', $cookieinfo);
header($cookieinfo); // <--- 陷阱就在这里,Set-Cookie不止一行,
// 但是header函数的第二个参数replace,默认是true,
// 所以,理论上只有最后一个cookie会被正确种上
// 这个bug困扰了很久,引以为戒,应改为header($cookieinfo, false);
}
}
Posted in PHP, 工作相关 | Tagged PHP, source code |
234 views | 2013/05/04
微信是时下最为火爆的话题了,我也不能免俗地要来聊一聊微信了。没有什么独家,没有什么秘籍,就随便聊聊作为一个微信重度用户的想法,一个痛点。
我记得我是微信的第一万多名用户,那时候我还用的是诺基亚S60系列的E63,那时候微信上没什么人,也不好用,后来我紧接着买了Nexus S,然后微信的Android版本要好的多,不过还是没什么人,我同时也用米聊,但是都没啥意思,因为用的人不多。最后等到我换了iPhone,微信突然火爆了,就是火山喷发式的那种火爆。“摇一摇”只是催化剂而已,在互联网圈子里吹得很火,但是对于真实用户,摇一摇未必真那么神奇。 Continue reading “[评论]微信公众帐号与微信朋友圈”
Posted in 工作相关 |
220 views | 2013/05/02
给公司的项目做了一个内部运维站点,日久天长,发现功能越来越多,而且很多至关重要的东西都在上面,如果一个小白,胡乱点点,可能引发致命运维事故。于是乎,希望能做一个访问控制。
第一个想到的是Yii框架自己支持的RBAC系统,每个Yii App默认加载一个组件,就是authManager,可以应用一种基于角色的访问权限控制体系。以前虽然早就知道了这个,但是从来没用过,而且也从来没觉得好用过。光看了文章吹捧怎么科学了。
今天仔细研究了一下,官方站点有个实作模块,叫srbac,流传很广,就用了这个,希望顺便搞懂这东西。 Continue reading “[Yii Framework] Role Based Access Control”
Posted in PHP, Yii, 心得体会 | Tagged framework, rbac, yii |
238 views | 2013/05/01
写PHP是我工作的主要内容之一,我尤其喜欢使用的IDE是Netbeans,所以,之前心血来潮,做了一个Netbeans的皮肤站点(http://netbeanstheme.com)供大家交流Netbeans配色方案用。
因为是心血来潮,就要一个“快”字,火速申请域名,用WordPress搭了小站,然后用了一个极简的Portfolio类型的皮肤,每个Post一个Feature Image作为截图预览,然后用Custom Fields来记录下载链接,一个Download键用来记录链接,一个Author域用来记录作者,然后又用cformsII插件做了一个上传皮肤配置文件的表单,一个小站就算完毕了。
然后,网上随便挂了几个月,发现貌似挺受欢迎,获得了很多的反响。于是乎,发现一个现象,就是有些皮肤下载的人多,有些下载的人少,根据留言数目看出来的。当然了,做互联网的这种直觉一开始就该有的,当初太偷懒了。当然,现在也不迟啦,马上加一个统计,记录所有的配色方案的下载次数。既要兼容以前已经有的Post,又要使用简单,肿么办? Continue reading “[WordPress][插件开发][插件]简易下载链接计数器”
Posted in Plugins Develop, WordPress | Tagged develop, plugins, source code, WordPress |
761 views | 2013/04/02
在Ubuntu服务器上,执行apt-get或者aptitude,可以列出软件包的名字,每行一个,最前面有个表明状态的字母标识:
- p 在系统里没有关于该软件包的相关操作记录
- c 软件包已经删除,但是配置文件仍旧保留在系统中
- i 软件包已经安装过了
- v 软件包是虚拟的(由若干其他软件包组合而成)
第二个位置上的字母,表明即将执行的动作
- i 即将被安装
- d 即将被删除
- p 软件包和配置文件将被删除
- A 表示软件包已经自动安装了
Posted in Linux, 工作相关 | Tagged apt-get, debian, Linux, ubuntu |
889 views | 2013/03/18
Mac系统下通用的进程管理器,是Mac系统下非常重要的一个进程。一般来说该进程不允许直接以命令行的形式调用。只能通过其控制管理界面,launchctl来进行控制。
launchd主要功能是进程管理。可以理解成是一个常驻在后台的进程,根据用户的配置,来响应特定的系统事件。launchd既可以用于系统级别的服务,又可以用于个人用户级别的服务。
在launchd的语境中,常驻进程有两种,一种称为是daemon,也就是我们常说的守护进程,这种一般对所有用户都有相同的行为,响应相同的事件,始终运行于后台,没有前台交互界面。另一种称为是agent,这种是用户级别的服务进程,一般以用户的身份运行。
- ~/Library/LaunchAgents 用户的进程
- /Library/LaunchAgents 管理员设置的用户进程
- /Library/LaunchDaemons 管理员提供的系统守护进程
- /System/Library/LaunchAgents Mac操作系统提供的用户进程
- /System/Library/LaunchDaemons Mac操作系统提供的系统守护进程
以上是launchd的相关配置的存放目录,可以看到,一般我们个人编写的守护进程,都应该放到~/Library/LaunchAgents目录里面。
Posted in Mac | Tagged launchd, mac, usage |
935 views | 2013/02/01
到底什么是NAT呢?在不同的领域里估计有不同的含义,本文里的NAT特指计算机网络领域的专有名词Network Address Translation,翻译成中文是网络地址转换。(在此,特别声明,以下要描写的东西,都是对该概念的基本内涵的个人理解,并没有什么新鲜的东西,也不保证正确,感兴趣请参阅《计算机网络》第四版) Continue reading “[What]什么是NAT”
Posted in 工作相关 | Tagged network, principle |
1472 views | 2013/01/28
我是一个Python入门级别用户,虽然我一天到晚黑Python,但是到了用的时候,又不得不用,这真的很悲哀。我讨厌Python就因为一个原因,就是其垃圾一样的文档。
这次我被一个绊脚石绊住两次,是因为有点搞不明白Python函数的参数。Python语言的函数参数,到底是用值传递,还是引用传递?其实要思考这个东西,都是从C++带来的一些习惯,虽然我不是一个C++的程序员,但是也是通过学习C++来学习编程的,不可避免地就要带有C++的习惯。在那个语言里,是需要搞清楚这些东西的,编程语言并没有向程序员隐藏这些细节。以至于到了使用动态语言的时候也很容易陷在这种细节里面。 Continue reading “[Python] Python函数的参数类型”
Posted in PHP, Python, 工作相关 | Tagged PHP, python, usage |
1128 views | 2013/01/27
在使用Git作为版本控制工具的时候,如何撤销某个文件的本地更改?
为什么要撤销本地更改?
Git规定,在本地变更没有提交的时候,不能够同步其它版本库的更新到对本地,为了防止本地变更丢失,如果本地变更只是一些试验性的调试语句,那就可以完全抛弃(discard),可以使用checkout命令进行撤销。 Continue reading “[How To] 使用Git的时候,如何撤销本地更改”
Posted in 工作相关 | Tagged git, usage |
2140 views | 2012/12/08
说实在的不喜欢Python,这主要是相对于PHP而言的,Python在Web相关领域里面,缺少了PHP的丰厚家学和积淀,但是有时候没有办法,还是得学一点的。在PHP里,用惯了strtotime这种神奇函数,在Python里面,到底该如何处理时间呢? Continue reading “[Python] 时间计算”
Posted in 工作相关 | Tagged code examples, python |
Page 1 of 2712345678910...20...»Last »