繁体   English   中英

this.form.submit()与PHP isset吗?

[英]this.form.submit() with PHP isset?

echo "<form method=\"post\" action=\"settings.php\" onchange=\"this.form.submit()\">";
echo "Announce New Files: <input type=\"radio\" name=\"announcefiles\" value=\"On\" $checkon1> On";
echo "<input type=\"radio\" name=\"announcefiles\" value=\"Off\" $checkoff1> Off<br>";
echo "</form>";

我试图让此表单在按下单选按钮之一时提交,但是我不确定如何捕获提交。

例如,通常使用一个提交按钮,您将使用类似if(isset($ _ POST ['submit']))的方式,但是我不确定如果表单自动提交该怎么做。

添加隐藏的输入字段,例如:

<input type="hidden" name="action" value="submit" />

然后在PHP中检查:

if(isset($_POST["action"]) && $_POST["action"] == "submit") { ... }

给您的表单命名并检查isset($_POST['form_name'])或检查无线电isset($_POST['announcefiles'])的名称isset($_POST['announcefiles']) isset($_POST['form_name']) isset($_POST['announcefiles'])

另外,您并不需要所有的引号转义,您既可以使用单引号也可以使用多行字符串-请参见下面的示例。

echo "
<form method='post' name='form_name' action='settings.php' onchange='this.form.submit()'>
Announce New Files: <input type='radio' name='announcefiles' value='On' $checkon1> On
<input type='radio' name='announcefiles' value='Off' $checkoff1> Off<br>
</form>";

<?php
    // Check if form was submitted
    if (isset($_POST['form_name']) {
        // Form submitted
    }
?>

<?php
    // Check if radio was selected
    if (isset($_POST['announcefiles']) {
        // Form submitted
        echo 'You chose' . $_POST['announcefiles'];
    }
?>

您应该检查请求方法。 如果您进行了整洁的设置,则对该URL的POST请求将意味着提交表单。 正如您所注意到的,您可以尝试不存在值的地方提交。

if ($_SERVER['REQUEST_METHOD'] === 'POST')

请参阅$ _POST与$ _SERVER ['REQUEST_METHOD'] =='POST'以获得更多讨论。

尝试这个:

如果您将php和html分开一些,则可能会更轻松。

<form method="post" action="settings.php" onchange="this.form.submit()">
    <fieldset>
        <legend>Announce New Files:</legend>
        <label for="on"><input type="radio" id="on" name="announcefiles" value="On" <?php echo $checkon1 ?> /> On</label>
        <label for="off"><input type="radio" id="off" name="announcefiles" value="Off" <?php echo $checkoff1 ?> /> Off</label>
    </fieldset>
</form>

然后在settings.php中的php逻辑中(如果要回发到同一页面,则在表单上方),您可以检查announcefiles的值:

<?php
    if(isset($_POST['announcefiles'])){
        // DO SOMETHING
    }
?>

让我知道是否有帮助。 或者,如果我错过了问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM