dws20057 发表于 2018-10-23 02:04:03

本帖最后由 dws20057 于 2018-10-23 02:05 编辑

<?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:48:41

本帖最后由 CuiQG丶 于 2018-11-3 14:50 编辑

我一般是

        do {
       
                if( 1 !== 1) {
                        $res = 'adadad';
                        break;
                }

                if( 2 !== 1) {
                        $res = 'ssasas';
                        break;
                }

        } while(0);

        return $res;

andyzu 发表于 2018-11-4 23:31:15

CuiQG丶 发表于 2018-11-3 14:48
我一般是

感谢,您的方法我觉得也不错!
页: 1 [2]
查看完整版本: 求助,如何减少if嵌套?