PHP setting cookies in a child class

Posted by steve on Stack Overflow See other posts from Stack Overflow or by steve
Published on 2010-04-16T15:57:05Z Indexed on 2010/04/16 16:43 UTC
Read the original article Hit count: 187

Filed under:
|

I am writing a custom session handler and for the life of me I cannot get a cookie to set in it. I'm not outputting anything to the browser before I set the cookie but it still doesn't work. Its killing me.

The cookie will set if I set it in the script I define and call on the session handler with. If necessary I will post code. Any ideas people?

<?php




/* require the needed classes comment out what is not needed */
require_once("classes/sessionmanager.php");
require_once("classes/template.php");
require_once("classes/database.php");


$title=" ";  //titlebar of the web browser
$description=" ";  
$keywords=" ";  //meta keywords
$menutype="default";  //default or customer, customer is elevated
$pagetitle="dflsfsf "; //title of the webpage
$pagebody=" ";  //body of the webpage


$template=template::def_instance();
$database=database::def_instance();

$session=sessionmanager::def_instance();
$session->sessions();
session_start();
?>

and this is the one that actually sets the cookie for the session

function write($session_id,$session_data)
{
    $session_id = mysql_real_escape_string($session_id);
    $session_data = mysql_real_escape_string(serialize($session_data));
    $expires = time() + 3600;
    $user_ip = $_SERVER['REMOTE_ADDR'];
    $bol = FALSE;
    $time = time();
    $newsession = FALSE;
    $auth = FALSE;
    $query = "SELECT * FROM 'sessions' WHERE 'expires' > '$time'";
    $sessions_result = $this->query($query);
    $newsession = $this->newsession_check($session_id,$sessions_result);
    while($sessions_array = mysql_fetch_array($sessions_result) AND $auth = FALSE)
    {
        $session_array = $this->strip($session_array);
        $auth = $this->auth_check($session_array,$session_id);
    }

    /* this is an authentic session. build queries and update it */
    if($auth = TRUE AND $newsession = FALSE)
    {   
        $session_data = mysql_real_escape_string($session_data);
        $update_query1 = "UPDATE 'sessions' SET 'user_ip' = '$user_ip' WHERE 'session_id' = '$session_id'";
        $update_query2 = "UPDATE 'sessions' SET 'data' = '$session_data' WHERE 'session_id = '$session_id'";
        $update_query3 = "UPDATE 'sessions' SET 'expires' = '$expires' WHERE 'session_id' = '$session_id'";
        $this->query($update_query1);
        $this->query($update_query2);
        $this->query($update_query3);
        $bol = TRUE; 
    }
    elseif($newsession = TRUE)
    {
        /* this is a new session, build and create it */
        $random_number = $this->obtain_random();
        $cookieval = hash("sha512",$random_number);
        setcookie("rndn",$cookieval);
        $query = "INSERT INTO sessions VALUES('$session_id','0','$user_ip','$random_number','$session_data','$expires')";
        $this->query($query);
        //echo $cookieval."this is the cookie <<";
        $bol = TRUE;    
    }
    return $bol;
}

© Stack Overflow or respective owner

Related posts about php

Related posts about cookies