CodeIgniter Forums
prblem in reading Cookie value - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: CodeIgniter Archived (from EllisLab) (https://forum.codeigniter.com/forum-20.html)
+--- Forum: Archived Development & Programming (https://forum.codeigniter.com/forum-23.html)
+--- Thread: prblem in reading Cookie value (/thread-56591.html)



prblem in reading Cookie value - El Forum - 01-04-2013

[eluser]ahmadalyan[/eluser]
i was trying to write my own library and i want to use cookie in it so i wrote
Code:
$CI =& get_instance();
$CI->input->set_cookie($this->auth_config['user_id'],$user_id );
$CI->input->set_cookie($this->auth_config['user_guid'],$user_guid );
$CI->input->set_cookie($this->auth_config['ip_address'],$ip_address );
$CI->input->set_cookie($this->auth_config['user_agent'],$user_agent );
$CI->input->set_cookie($this->auth_config['last_login'],$last_login );

and when try to used the cookie i wrote

Code:
$CI =& get_instance();
$user_id = $CI->input->cookie("user_id");
$user_guid = $CI->input->cookie("user_guid");
$user_agent = $CI->input->cookie("user_agent");
$last_login = $CI->input->cookie("last_login");

but the value of the variable return false

and when i try to write var_dump ($_COOKIE) i got this

Code:
array (size=2)
  'PHPSESSID' => string '7j0a2cc34rv5ro4b83v7rtb2m2' (length=26)
  'ahmadalyan_blog' => string 'a:6:{s:10:"session_id";s:32:"d8fe12fe8c4d99ac89d75df26610fc3a";s:10:"ip_address";s:9:"127.0.0.1";s:10:"user_agent";s:65:"Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0";s:13:"last_activity";i:1357325670;s:9:"user_data";s:0:"";s:8:"language";s:6:"arabic";}b4b2fa7c5db11174a16a2331523b81cb' (length=306)



prblem in reading Cookie value - El Forum - 01-05-2013

[eluser]InsiteFX[/eluser]
Did you look at the cookie_helper ?



prblem in reading Cookie value - El Forum - 01-05-2013

[eluser]ahmadalyan[/eluser]
no i didn't try to use this helper


prblem in reading Cookie value - El Forum - 01-07-2013

[eluser]ahmadalyan[/eluser]
i try the helper and i have the same result

is there any one can help me


prblem in reading Cookie value - El Forum - 01-07-2013

[eluser]CroNiX[/eluser]
You didn't post enough code to be able to tell what's going on for sure.

You can't read a cookie that was set until the NEXT page request. So if you are setting it and immediately trying to read it, it won't work. Cookies, CI or not, don't get sent until the final output is sent to the browser because it's sent in the headers.


prblem in reading Cookie value - El Forum - 01-08-2013

[eluser]ahmadalyan[/eluser]
ok i 'm trying to write my authentication library so i wrote this code

Code:
public function __construct()
{
  //session_start();
  // get codeigniter object to work with
  $CI =& get_instance();
  
  // load config file of the library
  $this->auth_config = $CI->load->config('auth', TRUE);
}


function is_logged_in()
{
  $CI =& get_instance();
  if(isset($_SESSION["user_id"]) && isset($_SESSION["user_guid"]) && isset($_SESSION["user_email"]) && isset($_SESSION["ip_address"]) & isset($_SESSION["user_agent"]))
  {
   $user_id = $_SESSION["user_id"];
   $user_guid = $_SESSION["user_guid"];
   $ip_address = $_SESSION["ip_address"];
   $user_agent = $_SESSION["user_agent"];
  
   $CI->db->where($this->auth_config['user_id'],$user_id);
   $CI->db->where($this->auth_config['user_guid'],$user_guid);
   $CI->db->where($this->auth_config['user_agent'],$user_agent);
   $CI->db->where($this->auth_config['ip_address'],$ip_address);
  
   $query = $CI->db->get($this->auth_config['login_table'],1);
   if($query->num_rows() !== 1)
   {
    /* there is a problem in the login information */
    return false;
   }
  
   return true;
  }
  else
  {
   return $this->loggin_from_cookie();
  }

}

function loggin_from_cookie()
{
  // get Code igniter instance
  $CI =& get_instance();
  
  // read information from cookie
  $user_id = $CI->input->cookie($this->auth_config['user_id']);
  $user_guid = $CI->input->cookie($this->auth_config['user_guid']);
  $user_agent = $CI->input->cookie($this->auth_config['user_agent']);
  $last_login = $CI->input->cookie($this->auth_config['last_login']);
/*  var_dump($_COOKIE);  
  echo $user_agent;
  echo $user_guid;
  exit()*/;
  // build where segment of the SQL statment to check if login activity is exists or not
  $CI->db->where($this->auth_config['user_id'],$user_id);
  $CI->db->where($this->auth_config['user_guid'],$user_guid);
  $CI->db->where($this->auth_config['user_agent'],$user_agent);
  $CI->db->where($this->auth_config['last_login'],$last_login);
  
  // get data
  $query = $CI->db->get($this->auth_config['login_table'],1);
  
  
  // check if there is any return ed data
  if($query->num_rows() !== 1)
  {
   /* their username and password combination
   * were not found in the databse */
   return false;
  }
  else
  {
   // read variable from database
   $row = $query->row_array();
   $login_id = $row[$this->auth_config['login_id']];
   $user_agent = $row[$this->auth_config['user_agent']];
   $user_guid = $row[$this->auth_config['user_guid']];
   $user_id = $row[$this->auth_config['user_id']];
  
   // update database recored last login and ip address
   $last_login = date("Y-m-d H-i-s");
   $ip_address = $CI->input->ip_address();
   // check if ip address is vaild
   if(!$CI->input->valid_ip($ip_address))
   {
    return false;
   }
  
   // build array to update data
   $data = array(
   $this->auth_config['ip_address'] => $ip_address ,
   $this->auth_config['last_login'] => $last_login  
   );
  
   // where segment
   $CI->db->where($this->auth_config['login_id'],$login_id);
  
   // do update
   $CI->db->update($this->auth_config['login_table'],$data);
  
   // select segment
   $CI->db->select($this->auth_config['user_name'],$auth_config['user_email']);
  
   // where segment
   $CI->db->where($this->auth_config['user_id'],$user_id);
  
   //get data
   $query = $CI->db->get($this->auth_config['user_table'],1);
  
   if($query->num_rows() !== 1)
   {
    /* their username and password combination
    * were not found in the databse */
    return false;
   }
   // read variable
   $row = $query->row_array();
   $user_name = $row[$this->auth_config['user_name']];
   $user_email = $row[$this->auth_config['user_email']];
  
   //store user id in the session
   $_SESSION["user_id"] = $user_id;
   $_SESSION["user_name"] = $user_name;
   $_SESSION["user_email"] = $user_email;
   $_SESSION["ip_address"] = $ip_address;
   $_SESSION["user_agent"] = $user_agent;
   $_SESSION["last_login"] = $last_login;
   $_SESSION["user_guid"] = $user_guid;
  
   return true;
  
  }

}

so this code test if the user is logged in or not using tow steps
1- test session variables if it has the session variable i will check if this variables are correct or not
2- if he hasn't session variables i will test if there is any cookie he is using to remember him in my website and do log in





prblem in reading Cookie value - El Forum - 01-08-2013

[eluser]ahmadalyan[/eluser]
sorry the function that i use to log user in and out are

Code:
function login($email, $password,$is_remember_me_checked)
{
  // get codeigniter instance
  $CI =& get_instance();
  
  // where variable
  $where = "((".$this->auth_config['user_name']."='".$email."' AND ".$this->auth_config['user_pwd']."='".$password."') OR (".$this->auth_config['user_email']."='".$email."' AND ".$this->auth_config['user_pwd']."='".$password."')) ";
  
  // select segment
  $CI->db->select($this->auth_config['user_id']);
  $CI->db->select($this->auth_config['user_name']);
  $CI->db->select($this->auth_config['user_pwd']);
  $CI->db->select($this->auth_config['user_email']);
  
  // where segment
  $CI->db->where($where);
  
  // get data
  $query = $CI->db->get($this->auth_config['user_table'],1);
  //echo $query->num_rows();

  if($query->num_rows() !== 1)
  {
   /* their username and password combination
   * were not found in the databse */
   return false;
  }
  else
  {
   // reading variable
   $row = $query->row_array();
  
   $user_id = $row[$this->auth_config['user_id']];
   $user_name = $row[$this->auth_config['user_name']];
   $user_email = $row[$this->auth_config['user_email']];
  
   // build variable for session
   $user_agent = $CI->input->user_agent();
   $user_guid = crypt(($this->guid()),'[email protected]#$1234');
  
   //update the last login time
   $last_login = date("Y-m-d H-i-s");
   $ip_address = $CI->input->ip_address();
  
   // check if ip address valid
   if(!$CI->input->valid_ip($ip_address))
   {
    return false;
   }
  
   $data = array(
    $this->auth_config['user_id'] => $user_id ,
    $this->auth_config['user_guid'] => $user_guid ,
    $this->auth_config['ip_address'] => $ip_address ,
    $this->auth_config['user_agent'] => $user_agent ,
    $this->auth_config['last_login'] => $last_login
   );
  
   // do insert to login activity
   $CI->db->insert($this->auth_config['login_table'], $data);
  
   // set cookie if it check
   if($is_remember_me_checked === true)
   {
    $CI->input->set_cookie($this->auth_config['user_id'],$user_id );
    $CI->input->set_cookie($this->auth_config['user_guid'],$user_guid );
    $CI->input->set_cookie($this->auth_config['ip_address'],$ip_address );
    $CI->input->set_cookie($this->auth_config['user_agent'],$user_agent );
    $CI->input->set_cookie($this->auth_config['last_login'],$last_login );
   }
  
   //store user id in the session
   $_SESSION["user_id"] = $user_id;
   $_SESSION["user_name"] = $user_name;
   $_SESSION["user_email"] = $user_email;
   $_SESSION["ip_address"] = $ip_address;
   $_SESSION["user_agent"] = $user_agent;
   $_SESSION["last_login"] = $last_login;
   $_SESSION["user_guid"] = $user_guid;
   echo 'hi';
   return true;
  }
}

function logout()
{
  session_destroy();
  unset($_SESSION);
  
}


public function guid()
{
  return sprintf('xx-x-x-x-xxx',

    // 32 bits for "time_low"
    mt_rand(0, 0xffff), mt_rand(0, 0xffff),
  
    // 16 bits for "time_mid"
    mt_rand(0, 0xffff),
  
    // 16 bits for "time_hi_and_version",
    // four most significant bits holds version number 4
    mt_rand(0, 0x0fff) | 0x4000,
  
    // 16 bits, 8 bits for "clk_seq_hi_res",
    // 8 bits for "clk_seq_low",
    // two most significant bits holds zero and one for variant DCE1.1
    mt_rand(0, 0x3fff) | 0x8000,
  
    // 48 bits for "node"
    mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
   );
}

and when i want to check if the user is log in i used

Code:
if(!$this->auth->is_logged_in())
{
  $data["language"] = $this->language_dic;
  $data['title']='Admin Login Page';
    
  echo Modules::run('admin_login/index',$data);
  return;
}



prblem in reading Cookie value - El Forum - 01-08-2013

[eluser]InsiteFX[/eluser]
You can view cookies if you first set them then do a webpage refresh or refresh your browser.