我从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.";
}
}
答案 0 :(得分:4)
$p = (isset($_POST['PayPlatform']) && $_POST['PayPlatform'] == 'Yes');
Boolean如果选中yes收音机,则为true,否则为false。
假设您有以下内容:
$a = 'Yes';
isset($a); //true
$b = 'No';
isset($b); //true
字符串被视为已设置,正如PsyCoder所说,您将收到值值,而不是布尔值。
另外,在另一个(惩罚性)注释中,通过一些更好的调试可以完全避免这个问题。我要做的第一件事就是var_dump($ _ POST)并查看值是什么。您已经看到$ _POST [&#39; PayPlatform&#39;]总是是或否,您可能已经意识到isset在字符串上始终为真。
答案 1 :(得分:1)
您无法获得已检查或未选中的价值...而是您将收到html中指定的value='No'
或value='No'
参数值...
答案 2 :(得分:0)
if($_POST["PayPlatform"] == "Yes") {
$PayPlatform = true;
}
保持简单:)