1

我正在尝试用 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')

我需要更改什么,以便用户单击提交后,从数据中生成一个新页面,然后将用户带到新创建的页面?这可能与我所拥有的,还是我应该考虑使用不同的语言?

4

6 回答 6

1

相反,它只显示部分 PHP 代码

看起来像以下之一:

  • 你在你的服务器上安装了 PHP 吗?
  • 服务器是否配置为传递要处理的 .php 页面?

看看这里可能是值得的,因为在浏览器上显示 PHP 代码意味着网络服务器没有正确处理它。

一旦您认为它已安装运行,phpinfo() 请参阅文档

于 2012-06-18T17:59:39.747 回答
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 服务器通常以与您的文件所拥有的用户不同的用户身份运行)。

希望有帮助。

于 2012-06-18T18:00:55.240 回答
1

如果它显示一个 php 代码,则表示:1.您没有安装 php,2.您的 http 服务器(如 Apache)已安装。

即使满足上述 2 个条件,您拥有的代码也不是有效的 PHP 代码,它不会工作。

您对 PHP 的了解还不够好,在尝试制作任何动态页面之前,您需要返回并学习非常基础的知识。

于 2012-06-18T18:01:57.797 回答
0

您的新文件声明中缺少“l”:

file_put_contents('newPage.htm', $html);

另外,尝试物理创建 newPage.html 文件并将其放在项目目录中,然后查看页面是否显示。如果是这种情况,我会检查您是否安装了 PHP,以及服务器是否配置为处理 post。通常它被配置为处理 post 或 get,但默认情况下通常不会同时处理两者。

于 2012-06-18T18:02:02.373 回答
0

虽然不能完全解决你原来的问题,但我希望我不会太出格:

您的问题通常可以通过将数据库与 PHP 等语言结合使用来解决。在表单提交后将此信息存储在数据库中将允许 newPage.htm 您必须接受 GET 参数并动态显示数据库中的相应数据。示例:newPage.html?id=245 会将该 ID 传递给处理该请求的 PHP 代码。PHP 将使用该 ID 来查询您的数据库以获取正确的信息并将其显示到页面上。这样您就不会为每个表单提交一个文件,并且表单数据可以更容易维护。查看类似的内容:http ://www.freewebmasterhelp.com/tutorials/phpmysql了解更多信息。

要记住的另一个方面是安全性。您当前的代码将直接用户输入放入服务器上的文件中。这是一个巨大的安全漏洞。建议您转义用户输入。

于 2012-06-18T18:04:51.983 回答
0
  1. 如果您不需要创建新页面,请在 PHP 代码的开头删除 ob_start(),然后添加

if(isset($_REQUEST['formSubmit'])){ .... .... }

您的页面将在提交时自动创建。

于 2012-06-18T18:10:28.920 回答