codeigniter API SERVICE登录

uttx8gqw  于 8个月前  发布在  其他
关注(0)|答案(1)|浏览(68)

我想让下面的程序只从API服务中获取(用户名和密码):https://service.undipa.ac.id/mhs.php?user=&pass=&api=XXXXX,while(level and id_session)still fetch from database,but I'm having problems not able to login,I don't know where the error is,the error I receive doesn't display any errors message and returns me to the index page.
这是我做的代码:

  1. Controller Login.php:
function index(){
    if (isset($_POST['submit'])){
        if ($this->input->post() && (strtolower($this->input->post('security_code')) == strtolower($this->session->userdata('mycaptcha')))) {

            // Fetch username and password from API
            $api_url = 'https://service.undipa.ac.id/mhs.php?user=' . urlencode($this->input->post('a', TRUE)) . '&pass=' . urlencode($this->input->post('b', TRUE)) . '&api=XXXXXX';
            $api_response = file_get_contents($api_url);
            $api_data = json_decode($api_response, true);

            if ($api_data && isset($api_data['username']) && isset($api_data['password'])) {
                $username = $api_data['username'];
                $password = $api_data['password'];
            } else {
                echo $this->session->set_flashdata('message', '<div class="alert alert-danger"><center>Invalid API response!</center></div>');
                redirect('administrator/home');
            }

            // Get level and id_session from database
            $username_from_api = $api_data['username'];
            $user_data = $this->model_app->get_user_data_by_username($username_from_api);

            if (!$user_data) {
                echo $this->session->set_flashdata('message', '<div class="alert alert-danger"><center>User not found in database!</center></div>');
                redirect('administrator/home');
            }

            // Continue with the rest of the login logic
            $password = $password;
            $cek = $this->model_app->cek_login($username, $password, 'users');
            $row = $cek->row_array();
            $total = $cek->num_rows();

            if ($total > 0){
                $this->session->set_userdata('upload_image_file_manager',true);
                $this->session->set_userdata(array('username'=>$row['username'],
                               'level'=>$user_data['level'],
                               'id_session'=>$user_data['id_session']));
                redirect('administrator/home');
            }else{
                echo $this->session->set_flashdata('message', '<div class="alert alert-danger"><center>Username dan Password Salah!!</center></div>');
                redirect('administrator/home');
            }
        }else{
            echo $this->session->set_flashdata('message', '<div class="alert alert-danger"><center>Security Code salah!</center></div>');
            redirect('administrator/home');
        }
    }else{
        if ($this->session->level!=''){
            redirect('administrator/home');
        }else{
            $this->load->helper('captcha');
            $vals = array(
                'img_path'   => './captcha/',
                'img_url'    => base_url().'captcha/',
                'font_size'     => 17,
                'img_width'  => '320',
                'img_height' => 33,
                'border' => 0, 
                'word_length'   => 5,
                'expiration' => 7200
            );

            $cap = create_captcha($vals);
            $data['image'] = $cap['image'];
            $this->session->set_userdata('mycaptcha', $cap['word']);
            $data['title'] = 'Users &rsaquo; Log In';
            $this->load->view('administrator/view_login',$data);
        }
    }
}

1.登录视图代码段:

<div class="login-box">
  <div class="login-logo"> 
    <a href="#"><b>USERS</b> Login</a>
  </div>
  <!-- /.login-logo -->
  <div class="card">
    <div class="card-body login-card-body">
      <p class="login-box-msg">Sign in to start your session</p>
        <?php 
            echo $this->session->flashdata('message');
            echo form_open($this->uri->segment(1).'/index'); 
        ?>
        <div class="input-group mb-3">
          <input type="text" class="form-control" name='a' placeholder="Username" required>
          <div class="input-group-append">
            <div class="input-group-text">
              <span class="fas fa-envelope"></span>
            </div>
          </div>
        </div>
        <div class="input-group mb-3">
          <input type="password" class="form-control" name='b' placeholder="Password" required>
          <div class="input-group-append">
            <div class="input-group-text">
              <span class="fas fa-lock"></span>
            </div>
          </div>
        </div>
        <div class="input-group mb-3">
        <?php echo $image; ?>
        </div>
        <div class="input-group mb-3">
        <input type="text" class="form-control" name='security_code' placeholder="Security Code" required>
        </div>

        <div class="row">
          <div class="col-8">
            <div class="icheck-primary">
            <a data-dismiss="modal" aria-hidden="true" data-toggle='modal' href='#lupapass' data-target='#lupapass'>I forgot my password</a>
            </div>
          </div>
          <!-- /.col -->
          <div class="col-4">
            <button type="submit" name='submit' class="btn btn-primary btn-block">Sign In</button>
          </div>
          <!-- /.col -->
        </div>
      </form>
    </div>
    <!-- /.login-card-body -->
  </div>
</div>

1.功能登录地址:

public function cek_login($username, $password, $table) {
    if (!empty($username) && !empty($password)) {
        $password = $password;
        return $this->db->query("SELECT * FROM $table WHERE username='".$this->db->escape_str($username)."' AND password='".$this->db->escape_str($password)."' AND blokir='N'");
    } else {
        echo $this->session->set_flashdata('message', '<div class="alert alert-danger"><center>Invalid username or password!</center></div>');
        redirect($this->uri->segment(1) . '/index');
    }
}

1.功能主页:

function home(){
        if ($this->session->level=='admin'){
          $this->template->load('administrator/template','administrator/include/view_home_admin');
        }else{
          $data['users'] = $this->model_app->view_where('users',array('username'=>$this->session->username))->row_array();
          $data['modul'] = $this->model_app->view_join_one('users','users_modul','id_session','id_umod','DESC');
          $this->template->load('administrator/template','administrator/include/view_home_users',$data);
        }
    }
taor4pac

taor4pac1#

要找出执行了代码的哪一部分,请将每个redirect语句替换为:

// redirect('administrator/home');
echo basename(__FILE__).' '.__LINE__.PHP_EOL;
echo 'redirect to administrator/home';
exit;

这将帮助您缩小问题所在的范围。

相关问题