Form

一个完整的 Form 标签大致如下。

<form method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
    <input type="text" name="userName" value="<?php echo $userName; ?>" /></p>
    <span><?php echo $usrErr; ?></span>
    <input type="submit" value="Login">
</form>

Form 标签内的 method 表示提交时使用的请求方式, action 代表提交时的行为。 action 内的 $_SERVER[“PHP_SELF”] 是 PHP 中的超级全局变量,代指当前运行的 PHP 脚本的文件名。

Form 内主要发挥功能的部分由 input 标签构成。 type 表示 input 的类型。输入类 input (例如 text )的 name 属性为发送 POST 请求时的标签名称, value 则为值。这里将 value 设置为变量,是为了在提交表单后保留 input 内值(提交可视为为刷新)。

而若 input 的 type 属性为 submit ,则代表该按钮按下后会执行 form 的 action 操作。

最后,在 input 框下放置一个 span ,用于显示错误信息。若在检查输入数据有效性时出现问题,将错误信息赋值给 $usrErr 变量即可显示错误提示文本。

PHP 脚本

PHP 脚本放置在 body 标签内开头,这样 PHP 脚本将会优先执行。

<?php
    $userName = "";
    $userErr = "";

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        if (empty($_POST["userName"])) {
            $usrErr = "User name can't be empty.";
        } else {
            $userName = $_POST["userName"];
            $usrErr = "";
        }
    }
?>

首先定义两个需要用到的变量。

$_SERVER[“REQUEST_METHOD”] 同样也是 PHP 中的超级全局变量,用于获取访问页面的方式。由于提交表单时使用的是 POST ,因此这里判断到请求方式为 POST 时执行表单验证逻辑。

$_POST[“userName”] 用于访问指定名称的 POST 内容。这里为了演示,在判断到 userName 为空时赋值 $usrErr ,在判断到非空时将 $_POST[“userName”] 的值赋值给 $userName 。

对于单一页面的多表单提交

一个页面可能会存在多个表单。使用上面的方法只能对一个表单进行判断,因此需要用到 submit 类 input 的 value 和 name 属性。

修改后的 Form 标签如下,可以看到在 submit 内添加了 name 属性。

<form method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
    <input type="text" name="userName" value="<?php echo $userName; ?>" /></p>
    <span><?php echo $usrErr; ?></span>
    <input type="submit" value="Login" name="add_patient_submit">
</form>

而修改后的 PHP 脚本如下,可以看到在判断到 POST 请求后多加了一个判断,用于判断 submit 的 name 值。

<?php
    $userName = "";
    $userErr = "";

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        if ($_POST['add_patient_submit'] == 'Confirm') {
            if (empty($_POST["userName"])) {
                $usrErr = "User name can't be empty.";
            } else {
                $userName = $_POST["userName"];
                $usrErr = "";
            }
        }
    }
?>

至此便完成了多表单的判断。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注