在HTML表单上从MySQL数据库创建唯一的url /页面


Creating unique URLs/Pages from MySQL DB on HTML form submit

到目前为止,论坛对这个项目有很大的帮助。我在这里寻找关于我项目下一步的一些指导。

我所拥有的是一个将用户提交的信息馈送到MySQL数据库的表单。然后,这个数据库将这些信息提供给一个显示数据库中所有信息的主页。我要做的是添加一些东西到我的表单,创建一个新的唯一的URL/页面时,提交的表单。我已经为这个页面设计了HTML/CSS模板,它被设计成只显示一组信息,而不是整个DB值。

我正在寻找一些指导,我如何能在表单提交上创建页面和唯一的url。立即从数据库获取这些新信息的最佳方法是什么?

我需要以某种方式自动重新创建HTML和CSS文件以及在服务器上,这是我不熟悉的。

编辑:@Jacky Cheng指出这可以不创建新版本的HTML/CSS文件,我倾向于在服务器上有一个动态的HTML文件。

感谢你们的帮助,因为到目前为止你们都很棒。

包括我提交给DB的形式的代码,以及我将从中提取信息的页面。

格式是:

<?php
include_once 'post_func.inc.php';
connect();
?>
<!DOCTYPE html>
<html>
  <head>
    <title>Event Register</title>
  </head>
  <body>
    <div style="text-align: center">
      <h2>Event Register</h2>
      <form id="eventregister"action="eventtestconnect.php" method="post">
        <table style="border: 0; margin-left: auto; margin-right: auto; text-align: left">
          <tr>
            <td>Event Name:</td>
            <td><input name="name" type="text"></td>
            </tr>
            <tr>
            <td>Event Type:</td> 
            <td>
                <select name="eventtype">
                    <?php query_eventtype() ?>
                </select>       
            </td>
          </tr>
            <tr>
          <tr>
            <td>Venue:</td>
            <td>
                <select name="venue">
                    <?php query_venue() ?>
                </select>                   
            </td>
          </tr>      
       </table>
       <input type="submit" value="Submit">
       </form>
    </div>
  </body>
  <?php close() ?>
</html>

这是我想从数据库填写表单后提交的信息和url生成的页面。

<?php
include_once 'event_func.inc.php';
connect();
?>
<html>
<head>
<title>
<?php query_eventname() ?>
</title>
<link href="eventstest.css" rel="stylesheet" type="text/css"/>
</head>
<body id="body">
  <div id="maincontainer">
    <div id="header">
    </div>
      <div id="content">
        <div id="eventname">
           <?php query_eventname() ?>
        </div>
        <div id="eventvenue">
           <?php query_eventvenue() ?>
        </div>
        <div id="eventicon">
           <?php query_eventtype() ?>
        </div>
      </div>
  </div>
</body>
<?php close() ?>
</html>

为了在提交时生成url,并且事件页面能够在url/数据集之间动态跳转,需要对表单进行哪些更改?

对于初学者的问题很抱歉,但这个网站似乎是这类事情的最佳资源,我还没有在这里找到任何具体的东西!

再次感谢您的帮助!

你想要什么我还是猜了一半,所以请耐心听我说。

从你的问题的描述,你似乎有一个系统,将生成一个实际的HTML文件每个表单提交?这对我来说可不太好。也许你可以试试这样做:

重新设计一个网页,将http GET请求参数作为输入(mydomain.com/display.php?id={input1}),并只显示一组信息。

从评论我看到你有一个唯一的id每个表单提交,我建议避免在请求中直接使用它,因为它会非常容易得到别人的信息。而是尝试对id进行MD5编码然后发送给用户。

那么整个系统将是:

1) you'll only ever have 1 html file in your server, which will dynamically change it's content according to input, which save you a lot of space.
2) you'll have a unique & slightly more secure URL per form submit

编辑:下面是一些伪代码来展示总体思路。

形式回应:

$uniqueId=mysql_query("SELECT unique_id FROM my_db");
echo "http://yourdomain.com/display.php?urlid=".$uniqueId;

display.php

<?php
$uniqueId=$_GET['urlid'];
mysql_query("SELECT info_you_need FROM your_tables WHERE unique_id = $uniqueId");
?>
<html><body>your display page html here</body></html>

I guess…

您想创建像这样的产品目录页面:

www.abc.com/Electronics/Product-Motorola-moto-g-at-Rs6999-only.html

,这将显示数据库中的所有产品信息。

如果以上是你的情况,那么你可以在你的项目中使用url重写。

RewriteEngine On    # Turn on the rewriting engine
RewriteRule    ^Product-/?$    Product-Motorola-moto-g-at-Rs6999-only.html    [NC,L]           # Handle requests for "Product-"

"RewriteRule"行是奇迹发生的地方。这一行可以分成5部分:

RewriteRule -告诉Apache这个like指向一个RewriteRule。^/产品/?$ -"模式"。服务器将检查对站点的每个请求的URL,以查看此模式是否匹配。如果是这样,那么Apache将把请求的URL替换为后面的"替换"部分。product - motorola -moto-g- rs69999 -only.html如果上面的模式与请求匹配,Apache使用这个URL而不是请求的URL。[NC,L] -"标志",告诉Apache如何应用规则。在本例中,我们使用了两个标志。"NC",告诉Apache这个规则应该是不区分大小写的,"L"告诉Apache如果使用了这个规则,就不要再处理任何规则。

处理"Product"的请求-注释解释规则的作用(可选但推荐)

希望这对你有用。请随便找我帮忙。快乐编程:)

听我说。你的描述很糟糕。如果我是对的,form=>mysql=>confirmation

form应该是action="process.php" method="post"

创建一个process.php文件,在其中执行验证、转义、序列化等操作。插入到MySQL表中。如果返回真重定向(header(location:yourdomain.com)),然后在重定向的页面上,从数据库中选择信息。