Home > Article > Backend Development > java.lang.nullpointerexception php4 session function review (2)
The more ambiguous ones are session_decode and session_encode:
bool session_decode(string data);
session_decode() decodes the session data in data, setting variables
stored in the session.
bool session_encode(void);
session_encode() returns a string with the contents of the current
sessionencoded within.
There seems to be no relevant examples in the php manual. From a literal meaning, decoding is to parse the user's string
and set it into the session, while encode is to "package" the session data and return it to the user. It seems that the role of encode may be greater. After the user registers the data into the session, he should use encode to get the data out, but the things returned by encode still need to be processed. For example:
session_register("val1");
$val1 = "abcde"
session_register("val2");
$val1 = 1234
session_register("val3");
$val1 = 123.45
Then what session_encode returns is:
val1:s:5:"abcde" ;val2:i:1234;val3:d:123.45;
Obviously, 's' is a string, 'i' and 'd' are numbers, and variables of type 's' require length.
If your session id is aaeebbcfd4455ec2c0d5cb590f8fab74, then this string of things actually
exists in the /tmp/aaeebbcfd4455ec2c0d5cb590f8fab74 file.
Now you need to process this string of things yourself and extract the session data you want. It’s strange that php4
doesn’t provide a convenient interface to parse registered variables... Or maybe I can’t find it.
Write one yourself first...
session_data_init takes out all the "packaged" session_data
session_data_get gets the data according to the variable name
Use:
$data = session_data_init( );
$result = session_data_get($data, "val1");
You can take out the data of val1.
/*
* get all date registered in the session
*/
function session_data_init( ) {
$sessionData = session_encode();
return $sessionData;
}
?>
/*
* extract one variable from enconded session data
*/
function session_data_get($data, $name) {
$matchStr = $name."|";
$matchStart = strpos($data, $matchStr);
if ($matchStart == 0) {
if (strlen($data) < strlen($matchStr)) return "";
$tmpStr = substr($data, 0, strlen($matchStr));
if (strcmp($tmpStr, $matchStr) != 0) return "";
}
$typeStart = $matchStart + strlen($matchStr);
$dataType = substr($data, $typeStart, 1);
if (strcmp($dataType, "s") == 0) { /* string */
$lenStart = $typeStart + 2;
$lenEnd = strpos($data, ":", $lenStart) - 1;
$lenLen = $lenEnd - $lenStart + 1;
$strLen = substr($data, $lenStart, $lenLen);
$strStart = $lenEnd + 3;
$strResult = substr($data, $strStart, $strLen);
return $strResult;
} else if (strcmp($dataType, "i") == 0 ||
strcmp($dataType, "d") == 0) { /* number */
$numStart = $typeStart + 2;
$numEnd = strpos($data, ";", $numStart) - 1;
$numLen = numEnd - numStart + 1;
$numResult = substr($data, $numStart, $numLen);
return $numResult;
} else {
return "";
}
}
?>
以上就介绍了java.lang.nullpointerexception php4的session功能评述(二),包括了java.lang.nullpointerexception方面的内容,希望对PHP教程有兴趣的朋友有所帮助。