如何从PHP访问表单的'name'变量

Dav*_*mas 25 php forms

我正在尝试创建一个BMI计算器.这应该允许人们使用公制或英制测量.

我意识到我可以使用隐藏的标签来解决我的问题,但这之前我已经打扰过我,所以我想我会问:我可以$_POST['variableName']用来查找提交的variableName字段值; 但是......我不知道,或者看看如何验证用于提交变量的表单.

我的代码如下(虽然我不确定它与问题严格相关):

<?php
    $bmiSubmitted     = $_POST['bmiSubmitted'];

    if (isset($bmiSubmitted)) {
        $height        = $_POST['height'];
        $weight        = $_POST['weight'];
        $bmi        = floor($weight/($height*$height));

        ?>
            <ul id="bmi">
            <li>Weight (in kilograms) is: <span><?php echo "$weight"; ?></span></li>

            <li>Height (in metres) is: <span><?php echo "$height"; ?></span></li>

            <li>Body mass index (BMI) is: <span><?php echo "$bmi"; ?></span></li>

            </ul>
        <?php
    }

    else {
    ?>

    <div id="formSelector">

    <ul>
        <li><a href="#metric">Metric</a></li>
        <li><a href="#imperial">Imperial</a></li>
    </ul>

        <form name="met" id="metric" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="form/multipart">

            <fieldset>
                <label for="weight">Weight (<abbr title="Kilograms">kg</abbr>):</label>
                    <input type="text" name="weight" id="weight" />

                <label for="height">Height (<abbr title="metres">m</abbr>):</label>
                    <input type="text" name="height" id="height" />

                <input type="hidden" name="bmiSubmitted" id="bmiSubmitted" value="1" />
            </fieldset>

            <fieldset>
                <input type="reset" id="reset" value="Clear" />

                <input type="submit" id="submit" value="Submit" />
            </fieldset>
        </form>

        <form name="imp" id="imperial" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="form/multipart">

            <fieldset>

            <label for="weight">Weight (<abbr title="Pounds">lbs</abbr>):</label>
                <input type="text" name="weight" id="weight" />

            <label for="height">Height (Inches):</label>
                <input type="text" name="height" id="height" /
            <input type="hidden" name="bmiSubmitted" id="bmiSubmitted" value="1" />
            </fieldset>

            <fieldset>
                <input type="reset" id="reset" value="Clear" />
                <input type="submit" id="submit" value="Submit" />
            </fieldset>
        </form>

    <?php
    }
?>
Run Code Online (Sandbox Code Playgroud)

我确认它有效(虽然目前没有验证 - 我不想过多地提出我的问题)和公制; 我已经添加了表格,但没有加入帝国的处理.

Aym*_*ieh 87

要识别提交的表单,您可以使用:

  • 隐藏的输入字段.
  • 提交按钮的名称或值.

表单的名称不会作为POST数据的一部分发送到服务器.

您可以使用以下代码

<form name="myform" method="post" action="" enctype="multipart/form-data">
    <input type="hidden" name="frmname" value=""/>
</form>
Run Code Online (Sandbox Code Playgroud)


小智 14

你可以这样做:

<input type="text" name="myform[login]">
<input type="password" name="myform[password]">
Run Code Online (Sandbox Code Playgroud)

检查发布的值

if (isset($_POST['myform'])) {
    $values = $_POST['myform'];

    // $login = $values['login'];
    // ...
}
Run Code Online (Sandbox Code Playgroud)


Pao*_*ino 13

表单名称未提交.您应该只为每个表单添加一个隐藏字段,并将其称为一天.

  • @ricebowl:也理解这就是 HTTP 的工作原理。它与 PHP 无关。 (2认同)

Ruw*_*tha 9

在表单提交按钮(表单的id方法是post):

<input type="submit" value="save" name="commentData">
Run Code Online (Sandbox Code Playgroud)

在PHP文件中:

if (isset($_POST['commentData'])){
    // Code
}
Run Code Online (Sandbox Code Playgroud)


alb*_*tor 5

出于某种原因,$_POST使用Ajax/jQuery提交时,提交按钮的名称不会传递给超全局.

以防它有助于某人......