Home > Backend Development > PHP Tutorial > Review of the session function of php4 (2)_PHP tutorial

Review of the session function of php4 (2)_PHP tutorial

WBOY
Release: 2016-07-21 16:04:57
Original
981 people have browsed it

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 the literal meaning, decode is to parse the user 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");
The data of val1 can be taken out.  

/*  
* 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 "";
    }
}
?>                 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/315854.htmlTechArticle比较模糊的是session_decode和session_encode: bool session_decode(string data); session_decode() decodes the session data in data, setting variables stored in the session. bo...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template