PHP 对象类未获取提交字段值


PHP object class not getting the submit field value

当我打印$letter变量时,我没有得到正确的值。 它总是0来。

索引.php

<form method="get" class="txtweb-form" action="index.php">
   Guess a letter: <input type="text" name="txtweb-message" />
   <input type="submit" value="submit" name="guess" />
</form>
<?php
$params = (object) $_REQUEST;
//print_r($params);
if (isset($params->guess)) {
  $letter = $params->txtweb-message;
  echo $letter;exit;
}
?>
您可能需要

在输入名称中使用_而不是-- 不是属性名称的 PHP 变量中的有效字符。

实际发生的是这样的:

$letter = $params->txtweb - message; // a subtraction operation

您最终会从未设置的对象属性$params->txtweb中减去未设置的常量message。因此,您可以0.

您可以将-保留在输入名称中,但应使用 $_REQUEST['txtweb-message']$_GET['txtweb-message'](不强制转换为对象)来检索值。

真的没有任何理由将超全局数组强制转换为对象,这就是引入您的问题的原因。

此处附加说明。 您确实应该在打开错误报告的情况下进行开发。 上面显示的操作将导致显示两个警告,这可以帮助您了解正在发生的事情。

为什么要投射到对象中?将其视为数组不会更容易吗

<?php
$params = $_REQUEST;
if (isset($params["guess"])) {
  $letter = $params["txtweb-message"];
  echo $letter;exit;
}
?>