【问题标题】:how to build url with a form如何使用表单构建 url
【发布时间】:2013-04-15 21:37:26
【问题描述】:

该网站将使用 php 和 mysql

对于我的新网站,我正在尝试使用干净的网址,而不是使用可怕的 page?x=1&y=23&ee=23 我想要更好的东西。

使用带有 POST 方法的表单,我想得到类似

http://www.xxx.com/page-color-blue-size-12-light

如果 action="action-page.php" 那么加载的页面将需要从 action-page.php 读取 $_POST 并创建一个新 URL 并重定向到新 URL,这似乎不是好想法。

如果我使用 $_GET,我会以 url 结尾?和 & 作为参数。

解决方案可以是在点击提交之前更新方法的 JS,但在这种情况下,该网站将不适用于谷歌...

如您所见,我找不到好的解决方案...有什么想法吗?

注意-

感谢您的回复,但我不是在寻找 URL 重写,如果我试图阅读 http://www.xxx.com/page-color-blue-size-12-light 但这不是我想要做的,我正在尝试构建这个 URL从一个帖子。

【问题讨论】:

    标签: php html post


    【解决方案1】:

    这只不过是所谓的 URL 重写。您可以从以下网站找到更多相关信息。

    http://www.cyberdesignz.com/blog/website-design/url-rewriting-top-5-ways-of-php-url-rewriting/

    【讨论】:

    • 如果我希望能够将 page-color-blue-size-12-light 转换为 page=blue;大小=12; value=light,我正在尝试从 $_POST 构建一个不错的 url
    【解决方案2】:

    通过 POST 请求发送参数

    <form action="page.php" method="post">
      <input type="hidden" name="data" value="1" />
      <input type="submit" value="Submit">
    </form>
    

    请求 URL 将只是 page.php$_POST['data'] 将包含您的参数。

    如果你想使用像http://www.xxx.com/page-color-blue-size-12-light这样的URL,那么你需要

    • 通过一些重写规则由 Web 服务器重定向;
    • 通过解析PHP脚本中的URL路由到其他页面。

    可能是第一个解决方案更好,因为第二个意味着处理 2 个 HTTP 请求。

    【讨论】:

    • 同意,但我希望 url 不是 page.php 而是 page-color-blue-size-12-light 我可以从 $_POST 构建它
    • 你为什么要这样命名你的文件?名称不应决定 URL 的外观。
    • 我不想命名任何文件,我只是想构建一个 URL,然后由我的代码解释,它可能是通过使用重写或解析 URL。
    • 顺便看看问题的url,这可能有助于理解为什么这样命名url很好。
    • @zavg 这是我的问题,我试图避免重定向和双重解析,唯一的解决方案似乎是使用 java 脚本,但这不适用于机器人......
    【解决方案3】:

    在我看来,您正在寻求URL rewrites 的帮助。它们涵盖了让您的位置栏显示一些漂亮的东西而不是您提到的所有查询字符串参数的基础知识。 更新:

    我对您的问题理解得更好一些,我想我可能有一个解决方案,至少可以让您了解问题的第一部分。我把它放在jsfiddle 上供你查看。

    <form id="myform" action="" method="POST">
        <input type="text" id="color" name="color" value="blue"/>
        <br />
        <input type="text" id="size" name="size" value="12-light"/>
        <br />
        <input type="submit" value="Go" />
    </form>
    
    <script type="text/javascript">
    jQuery(function($) {
        $("#myform").submit(function() {
            var color = $("#color").val();
            var size = $("#size").val();
            $("#myform").attr("action", "/page-color-" + color + "-size-" + size);
            $("#myform").submit();
        });
    });
    </script>
    

    【讨论】:

    • 如果我希望能够将 page-color-blue-size-12-light 转换为 page=blue;大小=12; value=light,我正在尝试从 $_POST 构建一个不错的 url
    • 那么您希望表单提交为您生成一个新页面吗?这仍然需要在您的服务器上处理一些 URL 重写,但您可以使用一些 javascript 来构建表单 url。让我用一个例子来编辑我的答案。
    • 这看起来很完美,我还需要为机器人(goole 和其他)编写一个版本,因为我认为它们在解析网站时不会启用 javascript...
    猜你喜欢
    • 2012-07-11
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 2011-05-25
    • 1970-01-01
    • 2014-09-26
    • 2015-08-11
    相关资源
    最近更新 更多