使用图片作为提交按钮的undefined _post

3

我正在使用一个表单来从3张图片中进行选择,然后将其发送到PHP页面,但是$_POST['stars'];并没有传送过去。

<form action="components/update_score.php" method="POST">
    <input type="image" name="stars" src="imagenes/th/0.png" value="0" width="120" />
    <input type="image" name="stars" src="imagenes/th/1.png" value="1" width="120" />
    <input type="image" name="stars" src="imagenes/th/2.png" value="2" width="120" />
    <input type="image" name="stars" src="imagenes/th/3.png" value="3" width="120" />
    <input type="hidden" name="war_enemy" value="<?php echo $rws['war_enemy'];?>" />
    <input type="hidden" name="user_username" value="<?php echo $user_score;?>" />
    <input type="hidden" name="enemy_enemynumber" value="<?php echo $i;?>" />
</form>

并且在php上

<?php
ini_set("display_errors",1);
session_start();
if(isset($_POST)){
   echo $_POST['stars'],'<br>';
   echo $_POST['war_enemy'],'<br>';
   echo $_POST['user_username'],'<br>';
   echo $_POST['enemy_enemynumber'],'<br>';
}    
?>   

发送此内容会让我收到“注意:未定义索引:stars”的通知。我不想使用提交按钮,而是想使用图片来完成,但找不到将帖子发送到php的方法。感谢任何帮助。

尝试使用 var_dump($_POST) 并查看您拥有的内容。 - Cully
更好的解决方案是拥有三个不同的表单——每个表单对应一张图片。 - Cully
3个回答

2

您有3张同名图片,请更改它们的名称,或者您可以使用一个数组将它们重命名为stars[],您的代码将如下所示:

foreach ($_POST['stars'] as $star) {
    echo $star;
}

另外,您需要在“值”处添加您的图像,而不是使用src,并且请删除src,因为您正在使用输入。


欢迎。如果您能将我的答案标记为正确的话,我会很高兴的 :) - Akmal Arzhang

0
当您通过图像发布内容时,点击的x/y坐标会被发送,而不是输入名称。
请检查 $_POST['stars_x'] 和 $_POST['stars_y']。

使用x和y,该帖子正在向我发送数据,但是我不知道如何使用这些数据。 - WarLion
那是另一个问题,你问为什么那个未定义,我给了你正确的答案。我也不知道你需要用那些数据做什么。 - michelem

0
当您进行POST请求时,必须以某种方式对构成请求主体的数据进行编码。
HTML表单提供了三种编码方法。
application/x-www-form-urlencoded (the default)
multipart/form-data
text/plain

你必须在表单中设置enctype属性

 enctype='multipart/form-data' 

multipart/form-data 是相对复杂的,但它允许整个文件被包含在数据中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接