我想让下面的程序只从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.
这是我做的代码:
- 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 › 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);
}
}
1条答案
按热度按时间taor4pac1#
要找出执行了代码的哪一部分,请将每个
redirect
语句替换为:这将帮助您缩小问题所在的范围。