CodeIgniter 3.1.11登录后跳转仪表盘自动返回登录页求助
问题:CodeIgniter 3.1.11(PHP7.4)登录后跳转后台自动返回登录页
点击登录按钮后出现以下现象:
- 正常弹出登录成功提示
- 通过
if ($this->session->has_userdata('email'))验证确认会话已成功创建 - 跳转至
admin/dashboard后自动返回登录页,但设置location.href = resp.url;指向非会话关联URL时可正常跳转
已定位问题与会话相关,但暂未找到会话销毁的具体原因。
会话配置(config.php)
$config['sess_driver'] = 'files'; $config['sess_cookie_name'] = 'ci_session_alhuda'; $config['sess_expiration'] = 7200; $config['sess_save_path'] = BASEPATH . '/cache/'; $config['sess_match_ip'] = FALSE; $config['sess_time_to_update'] = 300; $config['sess_regenerate_destroy'] = FALSE;
视图代码(Login.php)
<form class="form" method="post" action="<?php echo base_url().'front_ajax/login'; ?>" data-redirect="yes"> <div class="edu_field_holder"> <input type="text" class="edu_form_field require" name="email" placeholder="<?php echo html_escape($this->common->languageTranslator('ltr_p_email'));?>" autocomplete="off" value="<?php echo(isset($_COOKIE['UML'])) ? base64_decode(urldecode(base64_decode($_COOKIE['UML']))) : ''; ?>"> </div> <div class="edu_field_holder"> <input type="password" name="password" class="require edu_form_field" placeholder="<?php echo html_escape($this->common->languageTranslator('ltr_password'));?>" value="<?php echo(isset($_COOKIE['SSD'])) ? base64_decode(urldecode(base64_decode($_COOKIE['SSD']))) : ''; ?>"> </div> <div class="col-lg-6 col-md-6 col-sm-12 col-12 text-md-right"> <button class="edu_btn edu_btn_black" id="auth_login" type="button" data-action="submitThisForm"><?php echo html_escape($this->common->languageTranslator('ltr_login'));?></button> </div> </form>
控制器代码(Front_ajax.php)
function login(){ if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')){ if(!empty($this->input->post('email',false)) && !empty($this->input->post('password',false))){ $email = trim($this->input->post('email',TRUE)); $pass = md5(trim($this->input->post('password',TRUE))); if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ $stud_cond = array('enrollment_id'=>$email,'password'=>$pass); }else{ $stud_cond = array('email'=>$email,'password'=>$pass); } $userDetails = $this->db_model->select_data('id,name,role,status,parent_id,teach_image,email,teach_batch,teach_subject,super_admin','users use index (id)',array('email'=>$email,'password'=>$pass),1); $studentDetails = $this->db_model->select_data('id,name,contact_no,batch_id,admin_id,enrollment_id,image,email,status,login_status','students use index (id)',$stud_cond,1); $this->session->sess_destroy(); if(!empty($userDetails)){ if($userDetails[0]['status']=='1'){ $brewers_strings = $this->random_strings(10); $sess_arr = array( 'uid'=> $userDetails[0]['id'], 'name'=> $userDetails[0]['name'], 'role'=> $userDetails[0]['role'], 'status'=> $userDetails[0]['status'], 'admin_id' => $userDetails[0]['parent_id'], 'profile_img' => $userDetails[0]['teach_image'], 'email' => $userDetails[0]['email'], 'mobile' => $userDetails[0]['contact_no'], 'brewers_check' => $brewers_strings, 'super_admin' => $userDetails[0]['super_admin'], ); $url = ''; $url = base_url().'admin/dashboard'; $this->session->set_userdata($sess_arr); $resp = array('status'=>'1','msg'=>$this->lang->line('ltr_logged_msg'),'url'=>$url);// $this->db_model->update_data_limit('users use index (id)',$this->security->xss_clean(array('token'=>1,'brewers_check'=>$brewers_strings)),array('id'=>$userDetails[0]['id']),1); }else{ $resp = array('status' => '0','msg'=>$this->lang->line('ltr_contact_to_admin_msg'));// } } else{ $resp = array('status' => '0','msg'=>$this->lang->line('ltr_wrong_credentials_msg')); } } else{ $resp = array('status' => '0','msg'=>$this->lang->line('ltr_wrong_credentials_msg')); } echo json_encode($resp,JSON_UNESCAPED_SLASHES); } else{ echo $this->lang->line('ltr_not_allowed_msg'); } }
JS代码(login.js)
$(document).ready(function(){ $('[data-action="submitThisForm"]').on('click' , function(){ var targetForm = $(this).closest('form'); if(!myCustom.checkFormFields(targetForm)){ myCustom.callFormAjax(targetForm).done(function(res){ var resp = $.parseJSON(res); if(resp.status == 1){ if(typeof targetForm.attr('data-reset') != 'undefined' && targetForm.attr('data-reset') == 1){ //check reset form data targetForm[0].reset(); } if(typeof targetForm.attr('data-redirect') != 'undefined'){ //check reset form data if(resp.msg != '') toastr.success(resp.msg) setTimeout(function(){ location.href = resp.url; },1500) }else if(resp.msg){ toastr.success(resp.msg); } }else if(resp.status == 2){ $.magnificPopup.open({ items: { src: '#studentLogin', }, type: 'inline' }); $('#studentLogin .changeStudentLogin').attr('data-id',resp.student_id); } else if(resp.status == 0){ toastr.error((resp.msg)?resp.msg:resp.error); } }); } });
内容的提问来源于stack exchange,提问作者Muhammad Sarmad Mahmood Malik
相关产品推荐
相关产品推荐

