|
发表于 2018-10-23 02:04:03
|
显示全部楼层
本帖最后由 dws20057 于 2018-10-23 02:05 编辑
PHP复制代码 <?php
function ajax_verify ()
{
try {
$data['username'] = $this->input->post('username', TRUE); // 获取的用户名
$data['password'] = $this->input->post('password', TRUE); // 获取的密码
$data['captcha'] = $this->input->post('captcha', TRUE); // 获取的验证码
$data['rand_token'] = $this->input->post('csrf_name', TRUE); // 获取的随机token
// 以下两行在实际代码中是没有的,为了方便各位理解代码,所以写上的
$data['sess_token'] = $_SESSION['rand_token']; // 这里是session里的随机token
$data['sess_captcha'] = $_SESSION['captcha']; // 这里是session里的验证码
if ($_SESSION['rand_token'] != $data['rand_token']) throw new Exception ('非法请求!!!');
unset($_SESSION['rand_token']); // 清空这个 session token 防止再次使用
if ($_SESSION['captcha'] != $data['captcha']) throw new Exception ('验证码不对!!');
$result = $this->memberinfo->get_memberinfo($data['username']);
// 从数据库里读取这个用户的全部信息
$verify_result = password_verify ($data['password'], $result['password']); // 判断密码是否正确
// 如果密码正确
if (!$verify_result) throw new Exception ('密码错误');
$_SESSION['memberid'] = $result['memberid'];
$_SESSION['username'] = $result['username'];
$_SESSION['realname'] = $result['realname'];
ajax ('可以登录了!!');
} catch (Exception $e) {
ajax ($e->getMessage());
}
}
// 创建一个helper文件,写入一个 全局ajax返回的方法,根据自己的需求定制,类似这样:
function ajax ($msg)
{
$response['msg'] = $msg;
$CI = &get_instance ();
$ouput = $CI->output->set_content_type('application/json', 'utf8')->set_output(json_encode($response));
} 复制代码
楼主可以这样写,省点事。就像hex大神说的一样,throw 一个 Exception是个不错的方案,平常在控制器也用的比较多。
|
|