簡體   English   中英

我沒有序列化

[英]I dont get serializing

好的,即時通訊正在制作一個(非常)基本的寄存器系統,該系統采用$ _POST數據形式,使它成為$ _SESSION數據,然后我需要將其寫成文件,但是我需要能夠獲取會話稍后退出,以便有人登錄時可以使用它們。
我的一個朋友告訴我我應該序列化它,但是我不知道該怎么做。 我也是編程和stackoverflow的新手。

我的代碼:

<?php session_start();

$_SESSION["naam"]            = $_POST["naam"];
$_SESSION["email"]           = $_POST["email"];
$_SESSION["woonplaats"]      = $_POST["woonplaats"];
$_SESSION["telefoon"]        = $_POST["telefoonnummer"];
$_SESSION["gebruikersnaam"]  = $_POST["gebruikersnaam"];
$_SESSION["wachtwoord"]      = $_POST["wachtwoord"];
$filename                        = "inloggegevens.txt";




$error = 0;


if (empty($_SESSION["naam"])) {
    echo "<pre>U moet een naam invullen\n</pre>";
    $error++;
    } else {
    $_SESSION["naam"];
    }


if (empty($_SESSION["email"])) {
    echo "<pre>U moet een email-adres invullen\n</pre>";
    $error++;
    } else {
    $_SESSION["email"];
    }


if (empty($_SESSION["woonplaats"])) {
    echo "<pre>U moet een woonplaats invullen\n</pre>";
    $error++;
    } else {
    $_SESSION["woonplaats"];
    }


if (empty($_SESSION["gebruikersnaam"])) {
    echo "<pre>U moet een gebruikersnaam invullen\n</pre>";
    $error++;
    } else {
    $_SESSION["gebruikersnaam"];
    }


if (empty($_SESSION["wachtwoord"])) {
    echo "<pre>U moet een wachtwoord invullen\n</pre>";
    $error++;
    } else {
    $_SESSION["wachtwoord"];
    }


if ($error == 0){

    if (is_writable($filename)) {
        echo "Fwrite succes";
        $fd = fopen($filename, "r+");
        fwrite($fd,$_SESSION["naam"]);
        fwrite($fd,$_SESSION["email"]);
        fwrite($fd,$_SESSION["woonplaats"]);
        fwrite($fd,$_SESSION["telefoonnummer"]);
        fwrite($fd,$_SESSION["gebruikersnaam"]);
        fwrite($fd,$_SESSION["wachtwoord."]);
        fclose($fd); 
    } else {
    echo "non de sjon.";
    } 
 }  
?>

當您序列化字符串或數組時,您將始終具有相同的格式:

類型:值,以分號分隔。

假設您要序列化“ naam”和“ email”:

$serializeArray = array(
    'naam' => $_SESSION["naam"],
    'email' => $_SESSION["email"]
);

$serialized = serialize($serializeArray);

輸出:

print_r($serialized);
a:2:{s:4:"naam";s:3:"Max";s:5:"email";s:11:"test@ggg.de";}

如您所見,包含naam和email的數組現在是一個很長的字符串。 “ a”代表“數組”,“ a”后面的2是數組中元素的數量。 在序列化數組內部,您有一些字符串(用小寫的“ s”表示。)之后有許多字符,例如“ 4”。 這算出“ naam”的字母。 之后是字符串的內容。 像“ naam”。 然后是下一個元素的分號,依此類推...

現在將$ serialized存儲在文件中。 之后,從文件中獲取存儲的序列化String並將其保存在$ serialized中。 然后反序列化它:

$unSerialized = unserialize($serialized);

輸出:

print_r($unSerialized);
Array ( [naam] => Max [email] => test@ggg.de )

摘要:

serialize( Mixed value )將您的值(數組或對象或字符串或任何東西)轉換為一個很長的字符串,其中包含序列化值內所有值的信息。 解串序列化的字符串后,您將獲得原始的條件值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM