2009年4月 归档

session_set_save_handler(
"sess_open",
"sess_close",
"sess_read",
"sess_write",
"sess_destroy",
"sess_gc");

以上完成了sessions的自定义,sess_gc是处理垃圾回收的。

sess_gc在sessions中是指清理过期的session数据,影响的参数有:session.gc_maxlifetime被视为垃圾前的生存期,超过此时间没有动作,数据会被清走。

注意的是,gc不是每次启动会话都会被执行,而是由session.gc_probability 和 session.gc_divisor的比率决定的。如果session.gc_probability 和 session.gc_divisor 都设为1的话,即每次都执行!

两年前帮我老婆买了一块天梭表,¥2700元,当时想买梅花,我就是戴的梅花,质量稳定,一直都没有坏过。但是梅花的样式都比较老式,没有天梭的时尚,而且天梭也是瑞士的十大名表,虽然排名最后。

可是,半年后,我偶尔看了眼我老婆的天梭表,发现分针生锈了,送去维修说是指针氧化,换指针。

又半年后,我老婆说手表里有蒸气,进水了,我一看,果然是进水了。天梭表可是50米防水啊!普通的生活用水居然也会进水!?又去维修。

这次维修回来半个月,突然停了。再修!

前几天,一早晨我老婆叫我起床,我看看我的表说还早,我老婆看她自己的表说,早什么啊!我一看她的天梭表,比我的整整快了半个小时。而且是突然之间的,前一晚还是好好的。

然后再次送修,这次已经过了保质期了,要自己掏钱修,价格要¥700元。

目前正在交涉。

期间去维修处,发现维修单里面很多都有指针氧化的问题,我就纳闷了,这工艺怎么能排在十大瑞士名表里面,建议从十大瑞士名表中除名,天梭表的质量真的是太烂了!

网友们买天梭表要三思!

Google的OpenID

| 评论(24) | 引用通告(2)
上次写了Windows Live ID当作OpenID使用的方法,这次写Google的OpenID的实现方法。

if(empty($_REQUEST['openid_mode'])){
$openid_server = getXrdsUri('https://www.google.com/accounts/o8/id');
$data['openid.ns'] = 'http://specs.openid.net/auth/2.0';
$data['openid.mode'] = 'associate';
$data['openid.assoc_type'] = 'HMAC-SHA1';
$data['openid.session_type'] = 'no-encryption';
$AssocHandle = getAssociationHandle($openid_server.'?'.http_build_query($data));
setcookie('cookieAssocHandle', $AssocHandle);
unset($data);

$data['openid.ns'] = 'http://specs.openid.net/auth/2.0';
$data['openid.claimed_id'] = 'http://specs.openid.net/auth/2.0/identifier_select';
$data['openid.identity'] = 'http://specs.openid.net/auth/2.0/identifier_select';
$data['openid.return_to'] = $AuthUrl;
$data['openid.realm'] = $RealmUrl;
$data['openid.assoc_handle'] = $AssocHandle;
$data['openid.mode'] = 'checkid_setup';
$data['openid.ns.ext1'] = 'http://openid.net/srv/ax/1.0';
$data['openid.ext1.mode'] = 'fetch_request';
$data['openid.ext1.type.email'] = 'http://axschema.org/contact/email';
$data['openid.ext1.required'] = 'email';

$LocationUrl = $openid_server.'?'.http_build_query($data);
}else{
if('id_res' == $_REQUEST['openid_mode']
&& $AssocHandle == $_REQUEST['openid_assoc_handle']){
$openid = !empty($_REQUEST['openid_ext1_value_email']) ? $_REQUEST['openid_ext1_value_email'] : formUrl($_REQUEST['openid_claimed_id']);
$email = $_REQUEST['openid_ext1_value_email'];
}
echo('<pre>');
echo("<a href=$LoginUrl>BACK</a>\n\n");
print_r($_REQUEST);
echo('</pre>');
}

function getAssociationHandle($url){
$c = curl_init($url);

curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_HEADER, false);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);

$contents = curl_exec($c);
//print_r($contents);
//exit;

curl_close($c);

$assoc_handle = time();

$lines = explode("\n", $contents);

foreach($lines as $line){
if(substr($line, 0, 13) == "assoc_handle:"){
$assoc_handle = substr($line, 13);
break;
}
}

return $assoc_handle;
}

function getXrdsUri($url){
$c = curl_init($url);

curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_HEADER, false);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);

$request_contents = curl_exec($c);

curl_close($c);

$domdoc = new DOMDocument();
$domdoc->loadXML($request_contents);

$uri = $domdoc->getElementsByTagName("URI");
$uri = $uri->item(0)->nodeValue;

return $uri;
}

if(empty($openid))
LocationHtml($LocationUrl);

LocationHtml函数见Windows Live ID当作OpenID使用的方法

注意:Google的OpenID的openid.claimed_id(即OpenID)的值,随不同网站变化,网站不同值也不同,所以不是真正的OpenID,Google真正的OpenID是他的Email。但是Email也不是每次都可以取得到的,如果你在Google的授权页面上点选了"允许 XXX 记住我",再次登录时将略过授权页面,同时也将得不到Email的值。只有Google帐号的所有者在个人设置里更改获授权网站,将你的网站撤销访问权,才能再次得到Email的值。

Google的OpenID是个被阉割的OpenID,除了提供Email的值之外,其他一概不提供!

参考:http://code.google.com/intl/zh-CN/apis/accounts/docs/OpenID.html

Gmail支持插图

这好像不是很难完成的技术,但是Gmail最近才开始有这项功能,并且还在实验室里。

开启和使用都很简单,在设置>>实验室>>启用正在插入图片,即可。

这个姗姗来迟的功能被人嘲笑,具体请看:http://www.dwgoogle.cn/articles/1211.html

泉州东海新行政中心

| 评论(1)
Mr Wang

王炜,现在福建泉州从事 B2C 电子商务。爱好编程,业余时间在 FreeBSD / Apache / PHP / PostgerSQL 平台开发 B/S 架构的免费软件。

Follow Google Buzz Twitter Facebook Sina

收藏王炜's Blog

Bookmark and Share

关于此归档

这里是2009年4月的所有日记,它们按照时间从新到老排序。

上一篇日记2009年3月

下一篇日记2009年5月

首页归档页可以看到最新的日记和所有日记。