我没有序列化
I dont get serializing
好的,所以我正在制作一个(非常)基本的寄存器系统,它采用 $_POST 数据形式,制作它的 $_SESSION 数据,然后我需要制作它以便它写入文件,但我需要稍后可以取出会话,这样我就可以在有人登录时使用它们。
我的一个朋友告诉我应该序列化它,但我不知道该怎么做。我对编程和 Whosebug 也很陌生。
我的代码:
<?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"代表"array","a"后面的2是你数组中的元素个数。
在序列化数组中,您有一些字符串(用小 "s" 表示)。
在此之后是字符数,如“4”。这会计算 "naam" 的字母。在此之后是字符串的内容。喜欢"naam"。然后是下一个元素的分号,依此类推...
现在将 $serialized 存储在您的文件中。
在此之后,从您的文件中获取存储的序列化字符串并将其保存在 $serialized 中。
然后反序列化它:
$unSerialized = unserialize($serialized);
输出:
print_r($unSerialized);
Array ( [naam] => Max [email] => test@ggg.de )
总结:
serialize( mixed value) 转换你的值(数组或对象或字符串或其他)
到一个很长的字符串,其中包含序列化值中所有值的信息。
反序列化序列化字符串后,您将获得值的原始状态。
好的,所以我正在制作一个(非常)基本的寄存器系统,它采用 $_POST 数据形式,制作它的 $_SESSION 数据,然后我需要制作它以便它写入文件,但我需要稍后可以取出会话,这样我就可以在有人登录时使用它们。
我的一个朋友告诉我应该序列化它,但我不知道该怎么做。我对编程和 Whosebug 也很陌生。
我的代码:
<?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"代表"array","a"后面的2是你数组中的元素个数。 在序列化数组中,您有一些字符串(用小 "s" 表示)。 在此之后是字符数,如“4”。这会计算 "naam" 的字母。在此之后是字符串的内容。喜欢"naam"。然后是下一个元素的分号,依此类推...
现在将 $serialized 存储在您的文件中。 在此之后,从您的文件中获取存储的序列化字符串并将其保存在 $serialized 中。 然后反序列化它:
$unSerialized = unserialize($serialized);
输出:
print_r($unSerialized);
Array ( [naam] => Max [email] => test@ggg.de )
总结:
serialize( mixed value) 转换你的值(数组或对象或字符串或其他) 到一个很长的字符串,其中包含序列化值中所有值的信息。 反序列化序列化字符串后,您将获得值的原始状态。