我正在尝试用HTML构建一个表单,一旦提交,就会使用输入到表单中的数据自动生成一个新的网页。我通常是一个MATLAB和python用户,所以我先尝试了它们。 Matlab会解析解析数据并将其保存到新的.txt文件中,但不能保存为.html文件。 Python差不多。搜索之后,我遇到了使用PHP从表单数据创建新页面的建议。 (有人使用php创建用户名,电子邮件和图片的用户网页。我试图根据自己的需要调整它,但它并没有像我想象的那样生成新页面。相反,它只是显示部分PHP代码。这是我做的表格:
<form action="htmlData.php" method="post">
Product Name:
<input name="Name" size="20" type="text">
<br><br>
Project Lead Name:
<input name="PLname" size="20" type="text"> <br><br>
Team-members: <br>
<textarea name="Team_members" rows=10 cols=40> </textarea> <br><br>
Product Type: <br>
<input name="Product_Type" size="20" type="text"> <br><br>
Description: <br>
<textarea name="Description" rows=10 cols=40 type="text"> </textarea>
<br>
<br> <br>
<input value="Submit" type="submit" name="formSubmit">
<input value="Reset" type="reset">
<input value="Help" type="button" onclick="window.location.href='problems.html'">
</form>
...这是名为htmlData.php的PHP文件:
ob_start();
$Name = $_POST['Name'];
$PLname= $_POST['PLname'];
$Team_members= $_POST['Team_members'];
$Product_type= $_POST['Product_type'];
$Description= $_POST['Description'];
$html = <<<HEREDOC
Product Name: $Name <br>
Project Lead: $PLname <br>
Team Members: $Team_members <br> <br>
Product Type: $Product_type <br>
Description: $Description
HEREDOC;
file_put_contents('newPage.htm', $html);
header()redirect.header('location: newPage.html')
我需要更改哪些内容,以便用户点击提交后,会从数据生成新页面,然后用户将被带到新创建的页面?这有可能与我拥有,或者我应该考虑使用不同的语言?
答案 0 :(得分:1)
相反,它只显示部分PHP代码
似乎是以下之一:
take a look here可能值得,因为在浏览器上显示PHP代码意味着网络服务器没有正确处理它。
一旦您认为已安装,请运行phpinfo()
see the docs。
答案 1 :(得分:1)
可以使用PHP和Python(也许是MATLAB)。
鉴于您的PHP代码,有一些小问题。首先,HEREDOC
必须在行的开头结束(在结束HEREDOC之前不能有任何空格)。
其次,重定向的PHP代码无效。尝试这些更改:
<?php
$Name = $_POST['Name'];
$PLname= $_POST['PLname'];
$Team_members= $_POST['Team_members'];
$Product_type= $_POST['Product_type'];
$Description= $_POST['Description'];
$html = <<<HEREDOC
Product Name: $Name <br>
Project Lead: $PLname <br>
Team Members: $Team_members <br> <br>
Product Type: $Product_type <br>
Description: $Description
HEREDOC;
file_put_contents('newPage.htm', $html);
header('location: newPage.html');
exit;
您可能遇到的下一个问题是它无法写入newPage.htm
。您可能需要/想要指定完整路径(例如/home/yoursite/public_html/files/newPage.htm
)。
您需要确保该目录可由Web服务器写入(因为Web服务器通常以与您拥有的文件不同的用户身份运行)。
希望有所帮助。
答案 2 :(得分:1)
如果显示php代码,则表示: 你没有安装php, 2.安装了像Apache这样的http服务器。
即使符合上述2条件,您拥有的代码也不是有效的PHP代码,也不会有效。
你还不够用PHP,在尝试创建任何动态页面之前,你需要回过头来学习基础知识。
答案 3 :(得分:0)
您在新文件声明中缺少“l”:
file_put_contents('newPage.htm', $html);
此外,尝试物理创建newPage.html文件并将其放在项目目录中,然后查看是否显示该页面。如果是这种情况,我会检查你是否安装了PHP,以及服务器是否配置为处理post。通常它被配置为处理post或get,但默认情况下通常不会。
答案 4 :(得分:0)
虽然不完全解决你原来的问题,但我希望我不会因此而过分:
您的问题通常通过将数据库与PHP等语言结合使用来解决。在表单提交后将此信息存储在数据库中将允许newPage.htm您必须接受GET参数并动态显示数据库中的相应数据。示例:newPage.html?id = 245将该ID传递给处理该请求的PHP代码。 PHP将使用该ID来查询数据库以获取正确的信息并将其显示给页面。这样,每个表单提交都不会有一个文件,表单数据可以更容易维护。请查看以下内容:http://www.freewebmasterhelp.com/tutorials/phpmysql以获取更多信息。
要记住的另一个方面是安全性。您当前的代码将直接用户输入放入服务器上的文件中。这是一个巨大的安全漏洞。建议您转义用户输入。
答案 5 :(得分:0)
如果(isset($ _ REQUEST [ 'formSubmit'])){ .... .... }
您的页面将在提交时自动创建。