五月 18th, 2009基于OpenID Enabled修改而成的openid类。
基于OpenID Enabled修改而成的openid类,因为是自己用,所以不怎么规范。凑合着用吧。具体代码点进去看吧。
基于OpenID Enabled修改而成的openid类,因为是自己用,所以不怎么规范。凑合着用吧。具体代码点进去看吧。
JanRain的OpenID Enabled(http://openidenabled.com/)是一个不错的openid库。
open id中的相关字段如下
1.昵称:openid.sreg.nickname:
Any UTF-8 string that the End User wants to use as a nickname.
2.电子邮件地址openid.sreg.email:
The email address of the End User as specified in section 3.4.1 of [RFC2822] (Resnick, P., “Internet Message Format,” .).
3.全名openid.sreg.fullname:
UTF-8 string free text representation of the End User’s full name.
4.生日:openid.sreg.dob:
The End User’s date of birth as YYYY-MM-DD. Any values whose representation [...]
1.理解config.m4
1).dnl是注释
2).PHP_ARG_WITH或者PHP_ARG_ENABLE指定了PHP模块的工作方式,任选一种
3).PHP_REQUIRE_CXX()用于指定这个扩展用到了C++
4).PHP_SUBST(SYSFILE_SHARED_LIBADD)用于说明这个扩展编译成动态链接库的形式
5).PHP_ADD_LIBRARY(stdc++,””,SYSFILE_SHARED_LIBADD)用于将标准C++库链接进入扩展
6).PHP_NEW_EXTENSION用于指定有哪些源文件应该被编译,文件和文件之间用空格隔开.
2.c转变成c++
ext_skel默认生成的模块框架是针对C的,我们要使用C++,那以上的3,5两个宏就是必须的.另外还要把(扩展名.c)改名成(扩展名.cpp),所以PHP_NEW_EXTENSION原本包括的(扩展名.c)也要修改.
在使用C++之后要注意一个小问题,那就是php_(扩展名).h这个文件可能被PHP的其他部分所引用到,而引用者很可能是一个.c文件,所以不能在php_(扩展名).h里包含任何C++所独有的东西.比如标准模版库,类,或者bool类型等等.
3.后续工作
默认生成的(扩展名).c(现在改名为(扩展名).cpp)了,因为是C++了,有几点是要修改的: (zend_function_entry是导出函数列表, zend_module_entry描述了模块的信息.)
1).#include “php.h” #include “php_ini.h” #include “ext/standard/info.h” 要用extern “C” 修饰.
2).ZEND_GET_MODULE也要用extern “C”修饰
[...]
关于php扩展的开发,在此特作记录,本方法只做不需要编译时加进去的扩展,至于需要编译进去的网上教程众多,在此不述。
记录一下:在freebsd命令行中执行php,如果报出Segmentation fault: 11 (core dumped),而通过页面访问却正确时,多数情况就是某些扩展对命令行下的支持不够,gdb跟踪了一下,也没有什么明确的提示,几番搜索找到了根源:readline.so,仅作记录。
一个叫Robert Eisele的德国人写了一个PHP扩展的openCV,封装了两个函数face_detect和face_count。下面用php来实现其部分功能(人脸侦查)
转载内容,主要是为了解决经过js的escape后的如’%u5B9D%u9A6C’内容还原成utf-8。有兴趣的可以看一下。