Лучше создать постоянную таблицу и временные строки. Итак, скажем, вы сериализовали объект, содержащий все ваши полунаполненные данные формы, как $form_data
. В конце сценария последнее, что должно произойти, это то, что $ form_date должен быть сохранен в базе данных, а итоговый идентификатор строки сохранен в вашем $ _SESSION. Что-то вроде:
$form_data=serialize($form_object); //you can also serialize arrays, etc.
//$form_data may also need to be base64_encoded
$q="INSERT INTO incomplete_form_table(thedata) '$form_data'";
$r=mysqli->query($q);
$id=$mysql->last_insert_id;
$_SESSION['currentform']=$id;
Затем, когда вы переходите на следующую страницу, вы воссоздаете свою форму следующим образом:
$q="SELECT thedata FROM incomplete_form_table WHERE id={$_SESSION['currentform']}";
$r=$mysql->query($q);
$form_data=$r->fetch_assoc();
$form=$form_data['thedata'];//if it was base64_encoded, don't forget to unencode it first
Вы можете (автоматически) очищать таблицу incomplete_form_data
периодически, если в таблице есть поле метки времени. Просто удалите все, что вы считаете истекшим.
Приведенный выше код не был тщательно проверен на наличие синтаксических ошибок.