【问题标题】:Cant get radio button value to post in php无法获取单选按钮值以在 php 中发布
【发布时间】:2012-04-13 12:46:18
【问题描述】:

我从 simplemodal 的代码开始,并根据我的需要进行了修改。这出奇的顺利。我遇到的最后一个问题是要发布一些单选按钮。我将跳过我认为不必要的代码块,只显示我认为相关的内容。我已经从 php.net 尝试了几十种解决方案,但似乎没有任何效果。

HTML

<label for='PayPlatform'>Are you willing to pay for a trading platform?</label>
<input type='radio' name='PayPlatform' value='Yes' tabindex='1001' />Yes
<input type='radio' name='PayPlatform' value='No' tabindex='1002' />No

这是我无法获得值的地方,我的尝试在下面的代码块中有两次尝试,当然它们不是同时尝试的。

else if ($action == "send") {
// other elements form values are retrieved fine, just not the below
$PayPlatform = isset($_POST['PayPlatform']) ? ' checked="checked"' : "";
    //the ternary above just submits 'checked="checked" no matter which radio is checked
    //another attempt
    $PayPlatform = isset($_POST["PayPlatform"]);
    //this just submits "1" weather yes or no is checked
$token = isset($_POST["token"]) ? $_POST["token"] : "";

// make sure the token matches
if ($token === smcf_token($to)) {
    smcf_send($name, $email, $subject, $phone, $message, $PayPlatform);
    echo "Your message was successfully sent, you can close this window";
}
else {
    echo "Unfortunately, your message could not be verified.";
}
}

【问题讨论】:

  • var_dump($_POST) 是你的朋友
  • @sdjuan - 我确实转储了 $_POST,它为我检查是的每个值显示“是”,但我无法让它提交是...见下文
  • 你能发布你的 var_dump 吗?也许这将有助于解决这个问题。嗯,没关系,我认为 Corbin 是对的。

标签: php post radio-button


【解决方案1】:
$p = (isset($_POST['PayPlatform']) && $_POST['PayPlatform'] == 'Yes');

如果选中 yes 单选,则布尔值为 true,否则为 false。

假设你有以下:

$a = 'Yes';
isset($a); //true
$b = 'No';
isset($b); //true

字符串被认为是集合,正如 PsyCoder 所说,您将收到 value 值,而不是布尔值。

另外,在不同的(严惩的)注释中,通过更好的调试可以完全避免这个问题。我要做的第一件事就是访问 var_dump($_POST) 并查看值是多少。然后您会看到 $_POST['PayPlatform'] 始终是 Yes 或 No,并且您可能已经意识到 isset 在字符串上始终为 true。

【讨论】:

  • OK 使用上面我得到“1”如果他们检查是,“2”如果他们检查没有。这对我来说是可以接受的。不幸的是,收到此消息的人是个白痴,想看到“是”或“否”,您将如何处理?我想获得他们选择的输入的实际值
  • 然后呃....使用$_POST['PayPlatform']??? (虽然我会检查以确保它已设置并且它是有效选项之一。)
  • @DirtyBirdDesign,您应该得到“是”或“否”。鉴于上述信息,我不确定您为什么会得到 1,尤其是 2。
  • 对不起科宾。我在学。不过,我感谢您的帮助。
  • 做了这个“var_dump($PayPlatform)”,如果选中是,我得到 bool(true),如果选中否,我得到 bool(false)。但是,带有表单数据的电子邮件如果为真则显示“1”,如果为空则不显示任何内容。
【解决方案2】:

您不会得到选中或未选中的值...相反,您会收到在您的 html 中指定的 value='No'value='No' 参数值...

【讨论】:

    【解决方案3】:
    if($_POST["PayPlatform"] == "Yes") {
        $PayPlatform = true;
    }
    

    保持简单:)

    【讨论】:

    • 保持简单?那为什么在世界上还有 strip_tags 呢?!
    • 编码习惯,我永远不会相信用户提交的内容:) 在这种情况下可能不需要,但我总是把它放在示例中:)
    • 不过这 100% 毫无意义。事实上,我会认为这是错误的。

      Yes

      不应该 == 'Yes' 但在您的示例中它会。如果有人篡改了我的表单值,我想知道它,而不是忽略它:)。 HTML 转义(或删除)仅在 HTML 上下文中才有意义。当您比较相等性时,它不再是“html”,除非用户实际上应该提交 HTML。打印 htmlspecialentities 的 html 是必不可少的,但这似乎有点过分了。
    • 点 :) 感谢您的有用评论。
    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 2019-10-05
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 2020-07-14
    • 2015-03-06
    相关资源
    最近更新 更多