我的代码有一个奇怪的错误。当我的表单发布时,我错误地在我的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,这似乎不对。答案 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),可能会有所帮助。