ThinkPHP认证开发工程师,嘿嘿。

生活1652浏览0条评论ThinkPHP


前阵子看到别人申请了这个我自己也试了一下,还真通过了,很简单:上传个项目源码再回答官方的题目,然后就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方法的代码存在哪些风险,如何修改(写出你认为可行的所有方法)

本文地址:http://wuheng.net/blog_48.html 转载请注明出处

分享到: