작업 리디렉션에서 세션 변수가 재설정되는 이상한 문제가 있습니다.
Codeigniter를 사용 중이고 로그인 후 대시 보드 작업으로 리디렉션하고 있는데 DB로 자격 증명을 확인한 후 로그인 작업에서 데이터를 가져 오지만 redirect ()를 사용하여 대시 보드로 리디렉션하면 세션 변수가 사라집니다.
Admin.php
<?php class admin extends CI_Controller
{
function login()
{
$login = $this->Admin_model->login($this->input->post()); // <-- verify data and set to session
if($login)
{
$this->session->set_flashdata("success","Logged in Successfully");
var_dump($_SESSION); // <-- able to fetch data from session
// exit();
redirect("admin/dashboard");
}
else
{
$this->session->set_flashdata("error","Invalid Credentials!! Please Try Again!!");
redirect("admin");
}
}
function dashboard()
{
var_dump($_SESSION); // <-- session data is vanished and not able to get userdata('id')
exit();
if($this->session->userdata('id') != '')
{
$data['active_tab'] = "dashboard";
}
else
{
redirect("admin");
}
}
?>
Admin_model.php
<?php Class Admin_Model extends CI_Model
{
function login($data)
{
$user = $this->db->get_where("users",array("username" => $data['username'],
"password" => md5($data['password']),
"is_active" => "1")
)->row_array();
if(!empty($user))
{
$this->set_user_session($user);
return true;
}
else
{
return false;
}
}
function set_user_session($login)
{
$arr = array();
$arr["id"] = $login["id"];
$arr["username"] = $login["username"];
$this->session->set_userdata($arr);
}
?>
xampp 및 wamp에서 이것을 시도했지만 모든 브라우저에서 여전히 문제는 동일하게 유지되며 어떤 도움이라도 감사 할 것입니다.
어떤 버전의 CodeIgniter로 작업하고 있습니까? 다음 단계를 시도 할 수 있습니다.
session_start()
추가 //
. sessionn_start ()를 재배치하려고합니다.using ctrl + f
라는 주석을 찾습니다 ( ) Security is king
. 함수가 끝날 때까지 해당 주석 아래의 모든 줄을 주석 처리하십시오. 제 경우에는 줄 번호 315-320을 주석 처리했습니다.ini_set('session.name', $params['cookie_name']);
을ini_set('session.id', $params['cookie_name']);
다음 줄을 주석 처리
line 108 //session_set_save_handler($class, TRUE); line 290-296 // session_set_cookie_params( // $params['cookie_lifetime'], // $params['cookie_path'], // $params['cookie_domain'], // $params['cookie_secure'], // TRUE // HttpOnly; Yes, this is intentional and not configurable for security reasons // ); line 305 //ini_set('session.gc_maxlifetime', $expiration);
session_start()
바로 뒤에 넣어< ?php
이것이 당신을 도울 수 있기를 바랍니다 ....
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다