
前阵子看到别人申请了这个我自己也试了一下,还真通过了,很简单:上传个项目源码再回答官方的题目,然后就OK了。
申请地址http://www.thinkphp.cn/member/apply/type/1.html
我收到的题目是这个,不知道会不会改,仅供参考。
1. ThinkPHP的口号是?
2. ThinkPHP标签库和widget有什么区别,分别在什么时候使用最适合呢?
3. 如何解决thinkphp 目前在模板中的标签 嵌套不能超过3层的问题。
4. 知道‘VAR_URL_PARAMS’配置吗? 一般源码中看tp的常量默认值,在哪个文件里看到?
5. 简述 ThinkPHP 中 M 和 D 两个函数的区别
6. ThinkPHP中的Model类的 field 方法有哪些作用?
7. ThinkPHP中initialize和construct有哪些不同?
8. 通过TP的Trace功能,可以获取哪些调试信息?
9. 关于编码安全,你有哪些经验。
10. 请设计私信功能(含一对一和群发,且每个用户的每条私信有是否阅读的状态,需要考虑用户量很大但活跃用户很少时群发的效率)的数据库,并简单写出实现的流程。
11. 有用户表User,字段:id(主键),username(用户名),password(密码),等等。业务中该表只有username(用户名)字段允许修改。现要实现修改用户名的功能,代码如下:
模板里:
<form action="/User/editname" method="post"> 新用户名:<input type="text" name="username" value=""/> <input type="submit" value="提交"/> </form>
UserAction.class.php里:
public function editname(){
//实例化用户模型
$User = D('User');
//检查用户名输入是否合法
$username = trim($this->_post('username'));
if(strlen($username) > 16){
$this->error('用户名不合法,请重新输入');
exit;
}
//更新用户记录
if($User->create()){
$map['id'] = $_SESSION['user']['id']; //获取登陆者的id
$res = $User->where($map)->save();
if($res !== false){
$this->success('修改用户名成功');
}else{
$this->error('修改用户名失败');
}
}else{
$this->error($User->getError());
}
}UserModel.class.php里:
class UserModel extends Model{
//自动完成规则
protected $_auto = array(
array('password', 'md5', 1, 'function')
);
//自动验证规则
protected $_validate = array(
array('username','require', '用户名必须', MODEL::MUST_VALIDATE)
);
}请仅从数据安全性方面考虑,UserAction里editname方法的代码存在哪些风险,如何修改(写出你认为可行的所有方法)