我有一些问题。 Firefox无法读取输入类型图像的值和名称。
这是我的代码:
* blabla.php
<?php
echo"
<form action='cek.php' method='POST'>
<input type='image' src='something.png' alt='Submit button' value='Continue' name='noi'>
</form>
";
?>
* cek.php
<?php
echo"
$a = $_POST['noi'];
<input type='text' value='$a'>
";
?>
但Firefox表示没有名为'noi'的输入。 请帮我解决这个问题。
提前致谢。
答案 0 :(得分:2)
您需要做什么,并且您希望在文本框中显示“继续”一词。
至少这是我通过使用value='$a'
获得的印象,它告诉我你希望从表单中回应该变量。
如果是这样,那么您需要将PHP处理程序修改为:
<?php
$a = $_POST['noi'];
?>
<input type='text' value='<?php echo $a ?>'>
并在回显其值时添加PHP标记,使用:
value='<?php echo $a ?>'
而不是:(这将导致解析错误)
echo"
$a = $_POST['noi'];
<input type='text' value='$a'>
";
因为在$_POST['noi']
之后有一个分号,然后尝试将HTML注入而不会退出PHP。分号告诉PHP停止。然而,由于在分号后没有关闭的PHP标记,并且没有重新打开标记,PHP会抛出( parse )错误。
这就是您收到未定义错误消息的原因。
如果错误报告为“ON”,则会发出此“解析”错误信号。
在开发过程中将以下内容放在文件的顶部。
error_reporting(E_ALL);
ini_set('display_errors', 1);
如果在您的代码中找到错误,将发出错误信号。
<强>脚注:强>
或者,您可以使用:
<?php
$a = $_POST['noi'];
echo"
<input type='text' value='$a'>
";
?>
只需将$a = $_POST['noi'];
移到回音之外。
答案 1 :(得分:1)
如果要将“继续”发送到* cek.php脚本,可以在* blabla.php上使用类型为隐藏且值为“Continue”的html输入元素
使用类型图像的提交按钮仅发送按钮的x和y坐标(不是其值)。 所以,在你的* blabla.php:
<?php
echo"
<form action='cek.php' name='myform' method='POST'>
<input type='text' name='first-name' id='first-name' value='' />
<input type='hidden' name='my-input' value='Continue' />
<input type='image' src='submit.png' alt='Submit button' value='Continue' name='noi'>
</form>
";
?>
和* cek.php
<?php
$a = $_POST['my-input'];
echo "<input type='text' value='$a'>";
?>
答案 2 :(得分:0)
使用输入type=image
时,您告诉浏览器提交用户点击图片的x和y坐标。这允许您向表单添加图像映射类型功能。 Specification说:
“必须省略元素的value属性”
但是浏览器不一致,Chrome等浏览器会发送它,有些像Firefox一样遵循规范,只会发送X和Y坐标。这就是为什么在你的例子中没有名为'noi'的输入的原因。
要了解如何检查变量,请查看PHP文档,了解var_dump,var_export,print_r,isset等函数。将此代码放在 cek中。 php ,提交表单,您将看到$_POST
数组值。
<?php
var_dump( $_POST );
// Firefox:
// array(2) { ["noi_x"]=> string(3) "134" ["noi_y"]=> string(2) "91" }
// Chrome:
// array(3) { ["noi_x"]=> string(3) "121" ["noi_y"]=> string(2) "93" ["noi"]=> string(8) "Continue" }
?>