Exemplo n.º 1
0
 public static function new_action()
 {
     // 拦截
     self::method('post');
     $post_id = g_int('post_id');
     $post = post_model::get_by_id($post_id);
     self::forward_404_if($post === null, '文章不存在,无法评论');
     try {
         // 校验
         $checker = new lazy_checker(p());
         $checker->check('captcha', array('should_be' => array(setting_model::get_by_id(setting_model::id_captcha_answer)->value, '验证码不正确')));
         $checker->del('captcha');
         $checker->check_model_rules('comment');
         $comment = $checker->get_all();
         if (!visitor::has_role('member') && member_model::get_one(array('name' => $comment['author'])) !== null) {
             $checker->failed('author', '您不能使用管理员的昵称');
         }
         // 执行
         $comment['post_id'] = $post_id;
         $comment['pub_time'] = clock::get_stamp();
         comment_model::add($comment);
         post_model::inc_by_id(array('comment_count' => 1), $post_id);
         setting_model::inc_by_id(array('value' => 1), setting_model::id_comment_count);
         // 成功
         self::json_result(true, '评论成功', 0, url('post/show?id=' . $post_id));
     } catch (check_failed $e) {
         // 失败
         self::json_result(false, $e->get_reasons());
     }
 }
Exemplo n.º 2
0
 public static function admin_action()
 {
     // 拦截
     self::role('member');
     // 呈现
     $member = member_model::get_by_id(visitor::get_role_id('member'));
     self::set('name', $member->name);
     self::show_page('', 'two');
 }
Exemplo n.º 3
0
 public static function prop_rules($for_operation, $extra_data)
 {
     $member = $extra_data;
     $rules = array('name' => array('change_to' => 'string', 'char_size' => array(3, self::name_len, '昵称长度:%d-%d'), 'callback' => $for_operation === 'new' ? function ($name) {
         if (member_model::get_one(array('name' => $name)) !== null) {
             return '该用户已经存在';
         }
     } : function ($name) use($member) {
         if ($name !== $member->name && member_model::get_one(array('name' => $name)) !== null) {
             return '该用户已经存在';
         }
     }), 'pass' => array('change_to' => 'string', 'char_size' => array(6, -1, '密码不能小于%d个字符')), 'repass' => array('same_as' => array('pass', '两次输入的密码不相同')));
     if ($for_operation === 'edit') {
         $rules['pass']['pass_if_be'] = '';
     }
     return $rules;
 }
Exemplo n.º 4
0
 public static function new_action()
 {
     // 拦截
     self::method('post');
     self::role('member');
     self::csrf('member');
     try {
         // 校验
         $checker = new lazy_checker(p());
         $checker->check_model_rules('member', 'new');
         // 执行
         $member = [];
         $member['name'] = $checker->name;
         $salt = random_sha1();
         $member['salt'] = $salt;
         $member['pass'] = member_model::generate_pass($checker->pass, $salt);
         member_model::add($member);
         // 成功
         self::json_result(true, '用户添加成功。', 0, url('member/index'));
     } catch (check_failed $e) {
         // 失败
         self::json_result(false, $e->get_reasons());
     }
 }