<?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是个不错的方案,平常在控制器也用的比较多。
本帖最后由 CuiQG丶 于 2018-11-3 14:50 编辑
我一般是
do {
if( 1 !== 1) {
$res = 'adadad';
break;
}
if( 2 !== 1) {
$res = 'ssasas';
break;
}
} while(0);
return $res;
CuiQG丶 发表于 2018-11-3 14:48
我一般是
感谢,您的方法我觉得也不错!
页:
1
[2]