PHP更改代码以使用POST会使其停止工作

时间:2017-03-01 15:18:30

标签: php forms

我的代码有一个奇怪的错误。当我的表单发布时,我错误地在我的pngfile.php中使用了“GET”,但是由于我的代码工作,我没有注意到它。该工作代码如下:

main.php

<?php 
if (isset($_POST['submit'])) {
   $data = $_POST['name']; // the data from text input.
}
?>
...
<form action="/app.php" method="post">
<input type="text" name="name">
<input name="colour" type="radio" value="1">Red
<input name="colour" type="radio" value="2">Blue
<input name="colour" type="radio" value="3">Green
<input type="submit" name="submit" value="Submit">
</form>
 <img src="pngfile.php?data=<?php print urlencode($data);?>">

pngfile.php

<?php
   require_once 'functions.php';  
   $textdata = urldecode($_GET['data']);
   process($textdata);
   exit;
?>

的functions.php

<?php
/* Generate Image */
function process($textdata)
{
...

然而,有人指出我在我的代码中将POST表单和GET混合在一起,所以我将其更改为在pngfile.php中使用POST,如下所示:

pngfile.php

<?php
   require_once 'functions.php';  
   $textdata = urldecode($_POST['data']);
   process($textdata);
   exit;
?>

但现在它不起作用!所以似乎修复bug实际上阻止它工作。有人可以解释我在这里做错了什么。

编辑:我不介意使用POST或GET,但只要它是一致的。我似乎能够实现这一目标的唯一方法是混合使用POST和GET,这似乎不对。

4 个答案:

答案 0 :(得分:1)

关闭pngfile.php就在这一行,它使用GET而不是POST <img src="pngfile.php?data=<?php print urlencode($data);?>">

答案 1 :(得分:1)

<form action="/app.php" method="post">

应该是:

<form action="/main.php" method="post">

答案 2 :(得分:1)

问题是你的main.php正在通过GET向pngfile.php发送数据,但是你把文件更改为通过POST接收。

<img src="pngfile.php?data={...}">

您的问题是因为通过uri发送数据是一个GET请求,因此在pngfile.php中POST将无法访问该数据。

编辑:

在这种特殊情况下,可以混合GET和POST,因为你只是通过pngfile.php的表单提交文本名称,我想说让pngfile.php继续使用GET是完全可以的。

答案 3 :(得分:-1)

尝试使用$ _REQUEST,它将打印任一方法是GET或POST。还打印整个数组,如print_r($ _ REQUEST),可能会有所帮助。