乐趣区

关于php:国内外多语言版盲盒网站开发建设-第二篇


接着后面的第一篇,往下面写,这个是国内外多语言版盲盒网站零碎开发建设 第二篇,间接进入正题了。

退出登录

public function logout()

{
    // 退出本站
    $this->auth->logout();
    $this->success(__('Logout successful'), url('user/index'));
}

/**
     * 个人信息
     */
    public function profile()
    {
        $this->view->assign(‘title’, __(‘Profile’));
        return $this->view->fetch();
    }

批改明码

public function changepwd()

{if ($this->request->isPost()) {$oldpassword = $this->request->post("oldpassword");
        $newpassword = $this->request->post("newpassword");
        $renewpassword = $this->request->post("renewpassword");
        $token = $this->request->post('__token__');
        $rule = [
            'oldpassword'   => 'require|length:6,30',
            'newpassword'   => 'require|length:6,30',
            'renewpassword' => 'require|length:6,30|confirm:newpassword',
            '__token__'     => 'token',
        ];

        $msg = ['renewpassword.confirm' => __('Password and confirm password don\'t match')
        ];
        $data = [
            'oldpassword'   => $oldpassword,
            'newpassword'   => $newpassword,
            'renewpassword' => $renewpassword,
            '__token__'     => $token,
        ];
        $field = ['oldpassword'   => __('Old password'),
            'newpassword'   => __('New password'),
            'renewpassword' => __('Renew password')
        ];
        $validate = new Validate($rule, $msg, $field);
        $result = $validate->check($data);
        if (!$result) {$this->error(__($validate->getError()), null, ['token' => $this->request->token()]);
            return false;
        }

        $ret = $this->auth->changepwd($newpassword, $oldpassword);
        if ($ret) {$this->success(__('Reset password successful'), url('user/login'));
        } else {$this->error($this->auth->getError(), null, ['token' => $this->request->token()]);
        }
    }
    $this->view->assign('title', __('Change password'));
    return $this->view->fetch();}

设置过滤办法

public function attachment()

{
    // 设置过滤办法
    $this->request->filter(['strip_tags']);
    if ($this->request->isAjax()) {$mimetypeQuery = [];
        $where = [];
        $filter = $this->request->request('filter');
        $filterArr = (array)json_decode($filter, true);
        if (isset($filterArr['mimetype']) && preg_match("/[]\,|\*]/", $filterArr['mimetype'])) {$this->request->get(['filter' => json_encode(array_diff_key($filterArr, ['mimetype' => '']))]);
            $mimetypeQuery = function ($query) use ($filterArr) {$mimetypeArr = explode(',', $filterArr['mimetype']);
                foreach ($mimetypeArr as $index => $item) {if (stripos($item, "/*") !== false) {$query->whereOr('mimetype', 'like', str_replace("/*", "/", $item) . '%');
                    } else {$query->whereOr('mimetype', 'like', '%' . $item . '%');
                    }
                }
            };
        } elseif (isset($filterArr['mimetype'])) {$where['mimetype'] = ['like', '%' . $filterArr['mimetype'] . '%'];
        }

        if (isset($filterArr['filename'])) {$where['filename'] = ['like', '%' . $filterArr['filename'] . '%'];
        }

        if (isset($filterArr['createtime'])) {$timeArr = explode('-', $filterArr['createtime']);
            $where['createtime'] = ['between', [strtotime($timeArr[0]), strtotime($timeArr[1])]];
        }

        $model = new Attachment();
        $offset = $this->request->get("offset", 0);
        $limit = $this->request->get("limit", 0);
        $total = $model
            ->where($where)
            ->where($mimetypeQuery)
            ->where('user_id', $this->auth->id)
            ->order("id", "DESC")
            ->count();

        $list = $model
            ->where($where)
            ->where($mimetypeQuery)
            ->where('user_id', $this->auth->id)
            ->order("id", "DESC")
            ->limit($offset, $limit)
            ->select();
        $cdnurl = preg_replace("/\/(\w+)\.php$/i", '', $this->request->root());
        foreach ($list as $k => &$v) {$v['fullurl'] = ($v['storage'] == 'local' ? $cdnurl : $this->view->config['upload']['cdnurl']) . $v['url'];
        }
        unset($v);
        $result = array("total" => $total, "rows" => $list);

        return json($result);
    }
    $this->view->assign("mimetypeList", \app\common\model\Attachment::getMimetypeList());
    return $this->view->fetch();}

}

Ajax 异步申请接口

class Ajax extends Frontend
{

protected $noNeedLogin = ['lang', 'upload'];
protected $noNeedRight = ['*'];
protected $layout = '';

加载语言包

public function lang()

{header('Content-Type: application/javascript');
    header("Cache-Control: public");
    header("Pragma: cache");

    $offset = 30 * 60 * 60 * 24; // 缓存一个月
    header("Expires:" . gmdate("D, d M Y H:i:s", time() + $offset) . "GMT");

    $controllername = input("controllername");
    $this->loadlang($controllername);
    // 强制输入 JSON Object
    $result = jsonp(Lang::get(), 200, [], ['json_encode_param' => JSON_FORCE_OBJECT | JSON_UNESCAPED_UNICODE]);
    return $result;
}

 上传文件
 
   

public function upload()
    {
        return action(‘api/common/upload’);
    }

}

退出移动版