【问题标题】:html php query without URL update没有 URL 更新的 html php 查询
【发布时间】:2020-04-08 22:43:54
【问题描述】:

是否可以在不更新 URL 的情况下提交查询?

在字典上,我想做第一个简单的查询:www.example.com/?q=word

在结果页面上会有一个按钮,我想用这个按钮用另一个查询搜索更多结果。

第二个查询将通过 www.example.com/more.php?q=word 正常完成。

该代码如下所示:

<button onclick="window.location.href = 'more.php?q=<?php echo "$trimmed"; ?>';">search for more results</button>

但是,我希望 URL 保持不变,以便下一个字典查询以简单查询重新开始。换句话说,我想从 URL 中隐藏“more.php”部分。

【问题讨论】:

  • 为什么要减一?毕竟这个问题是有道理的

标签: php html button


【解决方案1】:

假设您的 www.example.com?q=word 指向 index.php。
还假设您的 more.php 包含函数。 假设第三个,即使没有 GET-parameter 即初始页面调用,您的 index.php 也会返回可在浏览器中显示的内容。 这样做,一个非常简单的解决方案是针对 index.php 触发每个查询。 在那里,您可以根据新的 GET 参数 type 使用使用来处理每个查询,甚至是不同类型的查询。

#index.php

require 'more.php';

// do something here to validate the parameters you use

switch($_GET('type')) {
    case 'simple':
        return simpleCall();
        break;
    case 'more':
        return additionalInfo();
        break;
}

function simpleCall() {
    // do stuff here
    // access $_GET for other paramters
}

#more.php

function complexCall() {
    //do complex stuff here
}

最后,你的 HTML 看起来像这样

<button onclick="window.location.href = '/?type="more"&q=<?php echo "$trimmed"; ?>';">search for more results</button>

除非您获得的不仅仅是这两种类型,否则它会在您的 switch-statement 中变得杂乱无章。

因此,考虑不同的解决方案是个好主意,例如:

  • 有这样的路由系统https://medium.com/the-andela-way/how-to-build-a-basic-server-side-routing-system-in-php-e52e613cf241
  • 在 JavaScript 的帮助下使用来自前端的异步调用来调用服务器上的不同 PHP 文件,但保持在前端的同一页面上。这将立即导致某​​种 API。但这通常不是最坏的主意。
  • 无论是POST 还是GET,请先验证您的参数,然后再在其余代码中对它们进行任何操作。有字典的例子听起来非常像查询一个 SQL 注入的数据库,例如,如果我们使用未经检查的数据是一件大事。

我希望这会有所帮助。

【讨论】:

  • 嗯。这个想法还不错。但就我而言,我将不得不改变一切。我的代码如下所示: ´´´ 我不能在第二个查询前用 goto 解决问题吗?
  • 您的混合前端和后端。您正在将带有查询逻辑的文件包含在向用户显示的文件中。而且您的表单没有发送到的操作参数。如果您真的想将表单发送到它自己的页面,那么您可以将您的包含包装到 if 语句或 switch 语句中,如我上面的示例所示。
  • 确实,经过一些测试,交换机解决方案是最好的解决方案,这里也有解释:stackoverflow.com/questions/547821/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-21
  • 2012-08-13
  • 2012-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多