【问题标题】:Input type image is not working in firefox输入类型图像在 Firefox 中不起作用
【发布时间】:2014-05-22 23:46:24
【问题描述】:

我有一些问题。 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”的输入。 请帮我解决这个问题。

提前致谢。

【问题讨论】:

  • 你想完成什么?如果我不知道您希望传递给什么,就很难给出答案。提交表单后,是否希望 Continue 出现在文本框中?

标签: php firefox


【解决方案1】:

您需要做什么,并且您希望“继续”一词出现在文本框中。

至少这是我使用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']; 移到回声之外。

【讨论】:

  • 感谢您回答我的问题,但这仍然是错误先生.. firefox 无法读取我的输入名称和值
  • 不客气。我已经用 Firefox 测试过,效果很好。
【解决方案2】:

如果您想将“继续”发送到 *cek.php 脚本,您可以在 *blabla.php 上的表单中使用隐藏类型和值为“继续”的 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'>";
?>

【讨论】:

  • 感谢您的回答工作......我完全沮丧使用输入类型图像呵呵......再次感谢
【解决方案3】:

当使用输入 type=image 时,您是在告诉浏览器提交用户点击图像的 x 和 y 坐标。这允许您向表单添加图像映射类型功能。 Specification 说:

“元素的值属性必须省略”

但浏览器对此并不一致,有些浏览器(如 Chrome)会发送它,而有些浏览器(如 Firefox)则遵循规范,只会发送 X 和 Y 坐标。这就是您的示例中没有名为“noi”的输入的原因。

要了解如何检查变量,请查看 PHP 文档中的 var_dumpvar_exportprint_risset 等函数。将此代码放入 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" }

?>

【讨论】:

  • 我不明白。你不能为这种情况做一些例子吗……谢谢你回答我的问题:)
  • 那么我应该为我的 cek.php 做些什么你能正确地告诉我吗?希望这完全有效:)
猜你喜欢
  • 1970-01-01
  • 2015-08-01
  • 2018-11-07
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
  • 2021-02-09
  • 1970-01-01
  • 2012-04-08
相关资源
最近更新 更多