How to call php in html and validate a form?

1

I'm validating a form where the user will fill in the fields:

  • Name
  • Surname
  • Email
  • Phone
  • Message

Through these, I want to validate in case the user does not type in these fields a message appears saying that it is necessary to fill in the fields.

I've already been able to create a validation for these fields in php , but since I'm a new programmer in php , I do not know if I'm doing this right from php , within html I'm using method post , to get the fields.

Code php:

<html>
<body>
<?php
$nome = $_POST["nome"];
$sobrenome = $_POST["sobrenome"];
$email = $_POST["email"];
$telefone = $_POST["telefone"];
$mensagem = $_POST["mensagem"];
$erro = 0;


//Verifica se o campo nome não está em branco.
if(empty($nome) OR strstr ($nome,'')==false)
{
    echo("Favor digitar seu nome"; $erro =1;);  
}

//Verifica se o campo sobrenome não está em branco.
if(empty($sobrenome) OR strstr ($nome,'') ==false)
{
    echo("Favor digitar seu sobrenome";$erro=1;);
}

//Verifica se o campo email não está em branco.
if(strlen($email)<8 || strstr($email,'@')==false)
{
    echo("Favor digitar seu email corretamente";$erro = 1;);    
}

//Verifica se o campo telefone está sendo preenchido com texto.
if(!is_numeric($telefone)) 
{
    echo("Preencha o campo telefone somente com números.";$erro = 1;);
}

//Verifica se o campo email não está em branco.
if(empty($mensagem) OR strstr ($mensagem,'') ==false)
{
    echo("Favor digitar sua mensagem";erro = 1;)    
} 
?>
</body>
</html>

I am using form action = "validar.php" on the form. When I put it to send the form, it does not appear anything, and it goes to the php page where I created, called validar.php .Not even checking the fields.

How can I make this work? If anyone can help me I'll be grateful.

    
asked by anonymous 03.06.2016 / 16:47

2 answers

4

The code php is full of syntax error (mainly in echo ). The correct (not so correct) would be:

<html>
<body>
<?php
$nome = $_POST["nome"];
$sobrenome = $_POST["sobrenome"];
$email = $_POST["email"];
$telefone = $_POST["telefone"];
$mensagem = $_POST["mensagem"];
$erro = 0;


//Verifica se o campo nome não está em branco.
if(empty($nome) OR !strstr($nome,''))
{
    echo "Favor digitar seu nome";  
}

//Verifica se o campo sobrenome não está em branco.
if(empty($sobrenome) OR !strstr($nome,''))
{
    echo "Favor digitar seu sobrenome";
}

//Verifica se o campo email não está em branco.
if(strlen($email)<8 || !strstr($email,'@'))
{
    echo "Favor digitar seu email corretamente";    
}

//Verifica se o campo telefone está sendo preenchido com texto.
if(!is_numeric($telefone)) 
{
    echo "Preencha o campo telefone somente com números.";
}

//Verifica se o campo email não está em branco.
if(empty($mensagem) OR !strstr($mensagem,''))
{
    echo "Favor digitar sua mensagem";    
} 
?>
</body>
</html>

An example form:

<html>
<head>
    <meta charset="utf-8" />
    <title>POST</title>
</head>

<body>
    <form action="teste.php" method="post">
        <input name="nome" type="text" placeholder="Seu nome..." />
        <input name="sobrenome" type="text" placeholder="Seu sobrenome..." />
        <input name="email" type="email" placeholder="Seu email..." />
        <input name="telefone" type="tel" placeholder="Seu telefone..." />
        <textarea name="mensagem" type="text" placeholder="Sua mensagem..."> </textarea>
        <input name="enviar" type="submit" value="Enviar" />
    </form>
</body>

</html>

You could use the required attribute of HTML to make the field mandatory. So:

<input name="nome" type="text" placeholder="Seu nome..." required />

Another better way would be:

<html>
<head>
    <meta charset="utf-8" />
    <title>POST</title>
</head>
<body>
<?php
$nome = $_POST["nome"];
$sobrenome = $_POST["sobrenome"];
$email = $_POST["email"];
$telefone = $_POST["telefone"];
$mensagem = $_POST["mensagem"];
$erro = 0;


//Verifica se o campo nome não está em branco.
echo !empty($nome) ? "Nome: {$nome}<br/>" : "Favor digitar seu nome<br/>";

//Verifica se o campo sobrenome não está em branco.
echo !empty($sobrenome) ? "Sobrenome: {$sobrenome}<br/>" : "Favor digitar seu sobrenome<br/>";

//Verifica se o campo email não está em branco.
echo (!empty($email) and filter_var($email, FILTER_VALIDATE_EMAIL)) ? "Email: {$email}<br/>" : "Favor digitar seu email ou um email válido<br/>";

//Verifica se o campo telefone está sendo preenchido com texto.
echo (strlen($email) >= 8 and filter_var($telefone, FILTER_VALIDATE_INT))
    ? "Telefone: {$telefone}<br/>"
    : "Preencha o campo telefone somente com números.<br/>";


//Verifica se o campo email não está em branco.
echo !empty($mensagem) ? "Mensagem: {$mensagem}<br/>" : "Favor digitar sua mensagem<br/>";
?>
</body>
</html>

Briefly, the! takes the inverse result, when I put !empty($var) , I mean when the variable is NOT empty.

But what about the if ? Are they gone?

Yes and no, I used the ternary operators, which can be explained here:

The basics - PHP the right way

To see more: PHP the Right Way

    
03.06.2016 / 17:03
0

You can do the validation as follows:

<?php

$input = $_POST;
$erro = false;

if (isset($input['enviar'])) {

    if (in_array("",$input)){

      $erro = 'Favor preencher todos os campos do formulário';

   } elseif (filter_var($input['email'],FILTER_VALIDATE_EMAIL)) {

      $erro = 'Favor informar um e-mail válido';

   } elseif(!is_numeric($input['telefone'])) {

     $erro = 'O campo telefone deve conter apenas números';
   }

   if ($erro){
     echo $erro;
   }

}

?>

or if you want to pass the message to each field

<?php

$input = $_POST;
$erro = [];

if (isset($input['enviar'])) {

   foreach ($input as $key => $value) {

      if ($value == ""){

        $campo = str_replace(["_","-"]," ",$key);

        $error[] = 'O campo '.$campo.' deve ser preenchido';
      }

   }

    if (empty($error) && filter_var($input['email'],FILTER_VALIDATE_EMAIL))      {

      $erro[] = 'Favor informar um e-mail válido';

   } elseif(empty($error) && !is_numeric($input['telefone'])) {

     $erro[] = 'O campo telefone deve conter apenas números';
   }

   if ($erro){
     var_dump($erro);
   }

}

?>
    
03.06.2016 / 22:13