9

我需要用这两种方法一起传递一些数据( 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'];
?>

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

4

4 回答 4

14

这不是一个组合的 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']); ?>">

如果您不上传文件,则无需设置enctype.<form>

于 2012-06-11T09:57:31.813 回答
3

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

http://php.net/request-order

它在 php.ini 中

于 2012-06-11T10:02:22.887 回答
1

这个更好 :

<form method="post" action="profile.php?id=<?php echo urlencode($_SESSION['id'])); ?>">
于 2012-06-11T09:59:12.187 回答
-1

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

<input type="submit" formmethod="get"  name="inputGet" value="updateGet" >
<input type="submit" formmethod="post" name="inputPost" value="updatePost" >
于 2018-03-03T06:35:45.440 回答