【问题标题】:Is there a way to use GET and POST together?有没有办法同时使用 GET 和 POST ?
【发布时间】:2012-06-11 09:55:33
【问题描述】:

我需要使用这两种方法一起传递一些数据( GET 和 POST )。 我写了这个方法,但不知道是否安全:

<form method="post" action="profile.php?id=<?php echo $_SESSION['id']; ?>" enctype="multipart/form-data">
<input type="text" size="40" name="title" >
<textarea name="description" rows="2" cols="30"></textarea>
<input id="starit" name="submit" value="Create" type="submit" />
</form>

<?php 
a= $_GET['id'];
b= $_POST['title'];
c= $_POST['description'];
?>

这段代码安全吗?还是有其他方法可以做到这一点?

【问题讨论】:

  • 为什么不直接将会话 ID 写入表单的隐藏输入字段?最后,如果用户浏览网站的源代码,他无论如何都可以读出他的会话 ID。
  • 也许他有理由这样做。

标签: php


【解决方案1】:

这不是一个组合的 GET 和 POST 请求;相反,它是一个带有查询参数的 POST 请求。

您所写的将是正确的方法。始终确保获得预期的字段:

if (isset($_GET['id'], $_POST['title'], $_POST['description']) {
  // go ahead
}

顺便说一句,确保你转义你的输出:

<form method="post" action="profile.php?id=<?php echo rawurlencode($_SESSION['id']); ?>">

如果您不上传文件,则无需设置&lt;form&gt;enctype

【讨论】:

  • 哦,isset可以使用多个变量吗? :D
  • @ADTC 是的,返回 true 是所有设置
【解决方案2】:

您可以同时使用两者并通过 REQUEST 获取而不是 GET 或 POST,如果参数名称相同,它将默认获取“请求顺序”顺序 GET 然后 POST。

http://php.net/request-order

它在 php.ini 中

【讨论】:

    【解决方案3】:

    这样更好:

    <form method="post" action="profile.php?id=<?php echo urlencode($_SESSION['id'])); ?>">
    

    【讨论】:

      【解决方案4】:

      不要在表单条件中写方法属性 并在输入中添加 formmethod=" " 属性... 例如:

      <input type="submit" formmethod="get"  name="inputGet" value="updateGet" >
      <input type="submit" formmethod="post" name="inputPost" value="updatePost" >
      

      【讨论】:

      • 你的意思是form method 吗?
      猜你喜欢
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 2020-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      相关资源
      最近更新 更多