【发布时间】:2014-07-18 15:45:12
【问题描述】:
我创建了一个简单(但很长)的 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 值设置为 e.g; 来重新填充表单;
Last Name: <input type="text" name="lname" value="<?PHP print $lname; ?>">
我是网站设计的新手,但这似乎是一种非常复杂的保存表单会话的方式(更不用说,它不起作用)。 重新填充或保存表单状态的正确方法是什么?
【问题讨论】:
-
使用
$_SESSION。这就是它的用途。如果您只是实际使用它,您正在做很多无意义/无用的代码来复制 PHP 已经提供的内容。另外,使用sprintf()将几个简单的变量插入到字符串中,并使用for()循环以您正在做的方式迭代数组是货物崇拜编程的症状。 -
谢谢你,我想我是这样写的,因为我不熟悉 php 或
$_SESSION属性(我想我一直在浪费我的时间)。您能否指点我一个更狭窄的方向来查找一些有关如何使用$_SESSION进行此类保存的文档? ty -
如果您是 PHP 新手,您应该从文档开始:php.net/manual/en/book.session.php。我们是来帮忙的。我们不是来给您阅读手册页的。
-
@MarcB 绝对是,不希望有人为我写出代码。只是想缩小我的搜索范围。 TY
-
@MarcB 根据这个问题和代码的编写方式,很明显这个人已经阅读了很多内容,只是在开始将所有内容放在一起时遇到了麻烦。
标签: javascript php jquery forms savestate