【问题标题】:PHP mixing POST and GET Requests to one pagePHP 将 POST 和 GET 请求混合到一页
【发布时间】:2011-07-02 20:54:48
【问题描述】:

看完后:

我了解,GET 用于在不更改服务器的情况下检索页面,而 POST 用于更改服务器的事物(插入、更新、删除)。

现在我编写了一个页面,该页面通过设置了参数StationNr 的GET 请求调用。用户可以填写表单并向设置了参数Filter 的同一页面发出POST 请求。但我不想错过参数StationNr,因此我想我把它放到一个隐藏的输入字段中。但是参数StationNr 要么在$_GET 变量中(第一次调用),要么在$_POST 变量中(第二次调用)。我可以这样做:

if (isset($_GET['StationNr']))
    $snr = $_GET['StationNr'];
else if (isset($_POST['StationNr']))
    $nr = $_POST['StationNr'];

但我不喜欢这样。另外我不想使用$_REQUEST['StationNr'],因为:When and why should $_REQUEST be used instead of $_GET / $_POST / $_COOKIE?

我认为这是一个常见问题,但我还没有遇到过,因为我是编写 php 页面的初学者。你是怎么解决这个问题的?

谢谢!

【问题讨论】:

  • 这可能不是最简洁的设计,你当然可以向一个地址发起 POST 请求,在该地址上附加一个?param=value&... 字符串以同时获得 GET 和 POST。
  • $_REQUEST 的坏话是没有根据的。对于较旧的设置,它会受到 cookie 固定的影响,这通常是一个可用性问题,但不是安全问题。尽管如此,它的目的是作为一个快捷方式(GET/POST 输入参数作为别名)。

标签: php forms post get


【解决方案1】:

虽然您可以使用 ?foo=bar 在 POST 请求中推送 GET 值,但我建议改为检查请求方法:

if($_SERVER['REQUEST_METHOD'] == 'POST') { ... }

【讨论】:

    【解决方案2】:

    只需使用

    <form method="post" action="script.php?get=variables">
     <input name="your_inputs" />
    </form>
    

    【讨论】:

    • 啊,我明白了,我给了我这个答案,并在我的问题中提供了一个链接 :-) 因此该页面是由 POST 请求的,但我也可以查询 $_GET 变量?
    【解决方案3】:

    正确的语法应该是:

    if (isset($_GET['StationNr'])) {   
    $snr = $_GET['StationNr'];
    }else if (isset($_POST['StationNr']))    
    $nr = $_POST['StationNr']; 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      • 2020-11-23
      相关资源
      最近更新 更多