<?php
function setSessionTestingData()
{
$agent = 5;
$ticket = 6;
$_SESSION = array(
'agent_id' => '2',
'ticket_id' => '3',
'agent' => $agent,
'ticket' => $ticket,
'sub_array' => array(
'sub' => 4,
'agent' => $agent,
'ticket' => $ticket,
),
);
return $_SESSION;
}
function getKey($session_key, $is_object_of_type = null)
{
$current_key = '';
$counter = 0;
try {
$session_keys_array = explode(':', $session_key);
//checking if keys and value exist
foreach ($session_keys_array as $key) {
$counter++;
$current_key .= '[\'' . $key . '\']';
if (!$_SESSION) {
throw new Exception("\$_SESSION does not Exist");
}
$prev_step = $_SESSION;
if (array_key_exists($key, $prev_step) && count($session_keys_array) > $counter) {
eval('$prevStep = $_SESSION' . $current_key . ';');
if (!is_array($prev_step) && count($session_keys_array) > $counter) {
throw new Exception ("\$_SESSION$current_key is not an array");
}
} else if (
is_array($prev_step) &&
eval('array_key_exists(' . $current_key . ', $_SESSION);') &&
count($session_keys_array) == $counter
) {
eval('$result = $_SESSION' . $current_key . ';');
} else {
throw new Exception("\$_SESSION$current_key does not Exist");
}
}
//checking if value is of right type
if (!empty($is_object_of_type) && !$result instanceof $is_object_of_type) {
throw new Exception("\$_SESSION$current_key is not instance of $is_object_of_type");
}
//if we are here that means we have all safe data
} catch(Exception $e) {
//TODO:change Exception to SessionException and log this
$result = null;
}
return $result;
}
$_SESSION = setSessionTestingData();
echo getKey('agent_id');
echo getKey('ticket_id');
echo getKey('sub_array:sub');
preferences:
52.05 ms | 402 KiB | 5 Q