输入类型图像在firefox中不起作用


Input type image is not working in firefox

我有一些问题。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" }
?>