面试经历
星期四, 三月 11th, 2010一直认为在这个城市里面,没有多少php人才,直到昨天面试,发现一个问题竟然是从来没听说过的名词,巨受打击。
一:康盛ucenter跨域登陆的实现方式;
http协议头部分加入P3P(第一次听说这个名词)。至于p3p是什么,阅读这里。g了下发现国内对此技术关注并不是很高,只查到网易通行证在不同域登陆时采用了此;当然还有ucenter。
二:操作ucenter中实例实现同步登陆。
这个以前遇到过,只是没有总结。面试时一直把重点放在了解决通信正常的问题上,其实这完全不是重点。回来后网上查了很多此问题的解决方案,大多都不靠谱,正确解决方案应该是这样:实例ucexample_1.php中有获取cookie函数
$_COOKIE['Example_auth']
,这里面的Example_auth没有被赋值,所以不会被synlogin同步,赋值即可。解决方法有两种,都很简单,一是修改ucexample_1.php文件,把$_COOKIE['Example_auth']换成$_COOKIE['auth'],这里的auth是另外应用的cookie设置的值;
/**
* 获取当前用户的 UID 和 用户名
* Cookie 解密直接用 uc_authcode 函数,用户使用自己的函数
*/
if(!empty($_COOKIE['auth'])) {
list($Example_uid, $Example_username) = explode("t", uc_authcode($_COOKIE['auth'], 'DECODE'));
} else {
$Example_uid = $Example_username = '';
}
* 获取当前用户的 UID 和 用户名
* Cookie 解密直接用 uc_authcode 函数,用户使用自己的函数
*/
if(!empty($_COOKIE['auth'])) {
list($Example_uid, $Example_username) = explode("t", uc_authcode($_COOKIE['auth'], 'DECODE'));
} else {
$Example_uid = $Example_username = '';
}
二是修改同步应用的uc.php,在synlogin里面新增一个cookie赋值语句:
_setcookie('Example_auth', _authcode($uid."t".$username, 'ENCODE'));
两种方法其实是一回事。
回顾这两个问题,发现这两个问题不是一般php人能问的出来的,所以,莫非提问题的那位是康盛的人??无论怎么说,这次面试给我留下了相当深刻的印象,让我学到了一些东西,也思考到很多东西,记之。

