Api service login

Saya ingin membuat program berikut untuk mengambil hanya (username dan password) dari layanan api : https://service.undipa.ac.id/mhs.php?user=&pass=&api=XXXXX , sementara (level dan id_session) masih mengambil dari database mysql saya, tapi saya mengalami masalah tidak bisa login, saya tidak tahu di mana kesalahannya, kesalahan yang saya terima tidak menampilkan pesan kesalahan apa pun dan mengembalikan saya ke halaman indeks.

Ini adalah kode yang saya buat:

  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. Login view code snippet :
<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. Function Login Cek :
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 :
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);
        }
    }
avatar tumbalakk
@tumbalakk

1 Kontribusi 0 Poin

Dipost 2 minggu yang lalu

Belum ada Jawaban. Jadi yang pertama Jawaban

Login untuk ikut Jawaban