Я не получаю сериализацию

0

Хорошо, поэтому я создаю (очень) базовую систему регистров, которая принимает данные формы $ _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.";
    } 
 }  
?>
  • 1
    Вы смотрели PHP: Документация ?, вот ссылка: PHP: Сериализация
  • 0
    Создайте массив данных, которые вы хотите сохранить, и вызовите на нем сериализацию . Сохраните его в файл. Чтобы вернуть ваш массив, прочитайте информацию о файле в строку и используйте unserialize, чтобы преобразовать эту строку обратно в ваш массив с данными.
Показать ещё 2 комментария
Теги:
session
serialization
login

1 ответ

0
Лучший ответ

Когда вы сериализуете строку или массив, вы всегда будете иметь тот же формат:

тип: значение и разделение точкой с запятой.

Предположим, вы хотите сериализовать "naam" и "электронную почту":

$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:"[email protected]";}

так как вы можете видеть, что ваш массив с naam и электронной почтой теперь очень длинная строка. "a" означает "массив", 2 позади "a" - это количество элементов в вашем массиве. Внутри сериализованного массива есть несколько строк (обозначенных маленькими "s".) После этого есть количество символов, таких как "4". Это считается буквой "naam". После этого есть содержимое строки. Как "наам". Затем точка с запятой для следующего элемента и так далее...

Теперь Store $ сериализуется в вашем файле. После этого получите сохраненную сериализованную строку из вашего файла и сохраните ее в $ serialized. Затем несериализуйте его:

$unSerialized = unserialize($serialized);

Вывод:

print_r($unSerialized);
Array ( [naam] => Max [email] => [email protected] )

Резюме:

serialize (mixed value) преобразует ваше значение (массив или объект или строку или что-то еще) в очень длинную строку с информацией обо всех ваших значениях в вашем сериализованном значении. После того, как вы устраните сериализованную строку, вы получите свое первоначальное условие своей ценности.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню