PHP - Проблема с проверкой пустого поля формы - PullRequest
0 голосов
/ 01 марта 2020

У меня есть простая форма, которая содержит три ввода: имя, сообщение и адрес электронной почты.

На стороне сервера я проверяю все эти поля, однако я изо всех сил пытаюсь проверить поле имени. Если я оставлю ввод пустым или начну писать с пробелом (одинарный, двойной или более) и нажму на submit, мой код php принимает это имя как действительное (где оно не должно).

кто-нибудь знает, как это предотвратить?

Вот мой код:

Страница 1 - форма:

<form action="enviar-email.php" method="POST" name="emailform">
            <div class="form-group">
                <input type="text" class="form-control" id="name" name="nome"  placeholder="Type your name here" >
            </div>
            <div class="form-group">
                < input type="text" class="form-control" id="email" name="email" placeholder="Youre@email.com here">
            </div>
            <div class="form-group">
                 <textarea class="form-control" cols="30" rows="10" maxlength="300" id="message" name="mensagem" placeholder="write your message" ></textarea>
            </div>

            <div class="form-group">
                 <input type="submit" name="submit" value="Send" class="btn btn btn-special" onclick="alert('Thanks!')" >

            </div>
</form>

Страница 2 - PHP страница, где я проверяю поля.

if(isset($_POST['nome'])){ $nome = $_POST['nome']; }
if(isset($_POST['email'])){ $email = $_POST['email']; } 
if(isset($_POST['mensagem'])){ $message = $_POST['mensagem']; }

// blank fields or name that start with space are not getting caught by this if
if(isset($nome) && trim($nome) !== ""){
    Header("location:contato.php");

}
if (!preg_match("/^[a-zA-Z ]+$/",$nome)) {
    Header("location:contato.php");
}

Ответы [ 2 ]

1 голос
/ 01 марта 2020

В вашем сценарии проверки вы присваиваете опубликованное значение переменной с именем $name, но ваше условие if проверяет переменную с именем $nome. Это просто случайная опечатка, когда вы представляли свой код? Если это не опечатка, то условие if никогда не будет выполнено (оно всегда будет выполняться на isset($nome)).

0 голосов
/ 01 марта 2020

вы можете попробовать вот так -

if(isset($_POST['name']) && !empty($_POST['name'])){ $name = $_POST['name']; }
...