我有一些问题。Firefox无法读取输入类型image的值和名称。
下面是我的代码:
* 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"的输入。请帮我解决这个问题。
您需要做的事情,而我的印象是您希望文本框中出现"Continue"一词
至少这是我通过使用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抛出(parse)错误。
这就是您得到未定义错误消息的原因。
如果错误报告为"ON",则表示此"解析"错误。
在开发过程中将以下内容放在文件的顶部。
error_reporting(E_ALL);
ini_set('display_errors', 1);
如果在你的代码中发现了错误,它会发出错误信号。
脚注:
或者,您可以使用:
<?php
$a = $_POST['noi'];
echo"
<input type='text' value='$a'>
";
?>
只需将$a = $_POST['noi'];
移出回声
如果你想发送"Continue"到*cek.php脚本,你可以在*blabla.php上使用一个类型为hidden,值为"Continue"的html输入元素
提交类型为image的按钮,只发送按钮的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>
";
?>
and in *cek.php
<?php
$a = $_POST['my-input'];
echo "<input type='text' value='$a'>";
?>
当使用输入type=image
时,您告诉浏览器提交用户单击图像的x和y坐标。这允许您向表单添加图像映射类型功能。规范说:
"元素的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" }
?>