使用PHP无法正常运行表单验证

时间:2018-04-28 15:07:51

标签: php html forms validation

我是PHP新手,我正在尝试使用三个输入字段验证一个简单的表单。出于某种原因,当字段为空时,我单击提交按钮时没有返回任何内容。我几个小时以来一直在努力解决这个问题。

我想要实现的是在字段为空/无效时在字段旁边显示错误文本。

这是我的HTML和PHP代码。

HTML:

<form method="post" action="">
    <table width="450px">
        <tr>
        <td valign="top">
            <label for="nimi">Nimi</label>
        </td>
        <td valign="top"> 

            <td><input type="text" name="nimi"><span class="error"><?php echo $nimiVirhe;?></span></td>
        </td>
        </tr>

        <tr>
        <td valign="top">
            <label for="sposti">Sähköposti</label>

        </td>
        <td valign="top">
            <td><input type="text" name="sposti"><span class="error"><?php echo $spostiVirhe;?></span></td>
        </td>
        </tr>

        <tr>
        <td valign="top">
            <label for="palaute">Palaute</label>
        </td>
        <td valign="top">
            <textarea  name="palaute" maxlength="1000" cols="30" rows="6"></textarea><span class="error"><?php echo $palauteVirhe;?> </span>
        </td>
        </tr>

        <tr>
        <td colspan="2" style="text-align:center">
        <input type="submit" value="Lähetä" name="submit">
        </td>
        </tr>


    </table>

</form>

PHP

<?php

$nimiVirhe = $spostiVirhe = $palauteVirhe = "";
$nimi = $sposti = $palaute = "";


if ($_SERVER["REQUEST_METHOD"] == "POST") {

    if (empty($_POST["nimi"])) {
        $nimiVirhe = "Name is required";
    } else {
        $nimi = test_input($_POST["nimi"]);
        if (!preg_match("/^[a-zA-Z ]*$/",$nimi)) {
            $nimiVirhe = "Only letters and white space allowed";
        }
    }

    if (empty($_POST["sposti"])) {
        $spostiVirhe = "Contact is required";
    } else {
        $sposti = test_input($_POST["sposti"]);
        if (!filter_var($sposti, FILTER_VALIDATE_EMAIL)) {
            $spostiVirhe = "Invalid email format";
        }
    }

    if (trim($_POST["palaute"]) == "") {
        $palauteVirhe = "City is required";
    } else {
        $palaute = test_input($_POST["palaute"]);
    }
}


function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

?>

我不知道下一步该尝试什么。

提前感谢您的帮助!

0 个答案:

没有答案