我创建了一个简单(但很长)的HTML表单,我需要以前能够保存表单进度并在以后返回它(安全性不是一个大问题)。但我无法保存表单状态,然后再回忆它。 (警告,我是菜鸟)
我有一张表格
<form action="phpSaveTry1.php" form method="post">
使用保存按钮提交表单时
<INPUT TYPE = "Submit" Name = "Save" VALUE = "Save and Submit">
我尝试以下列方式将所有发布的变量保存在服务器上的文件中...(欢迎提出其他建议)
$varNameArray = array("fname","mname","lname","comment","email","website","saveFile");
if (isset($_POST['Save'])) {
for($i = 0; $i < count($varNameArray); ++$i) { //go through every variable and add it to array
$arrayOfVars[$varNameArray[$i]] = ($_POST[$varNameArray[$i]]);
}
}
$saveFileName = "NameOfSavedState";
$var_str = var_export($arrayOfVars, true);
$var = "<?php\n\n\$$arrayOfVars = $var_str;\n\n";
file_put_contents(sprintf("/home/pansyc5/public_html/Jul17/SavedForms/%s.php",$saveFileName), $var);
然后在包含表单的html标题中,我想回忆变量
$saveFileName = "NameOfSavedState";
include sprintf("/home/pansyc5/public_html/Jul17/SavedForms/%s.php",$saveFileName);
并通过首先重新填充变量
将值调用到字段中for($i = 0; $i < count($varNameArray); ++$i) { //go through every variable and declare it
$varNameArray[$i] = ( $arrayOfVars[$varNameArray[$i]] );
}
然后通过将html值设置为例如
来重新填充表单 Last Name: <input type="text" name="lname" value="<?PHP print $lname; ?>">
我是网站设计的新手,但这似乎是一种非常复杂的方式来保存表单会话(更不用说,它不起作用)。 重新填充或保存表单状态的正确方法是什么?
答案 0 :(得分:3)
抛弃所有这些代码。通过将数据写入PHP文件,您将创建一个安全噩梦。大多数代码都没有理由。尝试更简单的事情:
session_start();
$_SESSION['lastFormData'] = $_POST;
然后当您稍后填写表单时
echo '<input name="lname" value="' . htmlspecialchars($_SESSION['lastFormData']['lname']) . '" />';