Como validar e-mail e URL em formulários PHP

Ao longo deste artigo, iremos discutir como validar endereços de e-mail, URLs e outros campos em formulários PHP , para que possamos preenchê-los corretamente.

A validação da entrada do usuário é uma parte essencial do desenvolvimento de um aplicativo da Web confiável e seguro. Endereços de e-mail e URLs são comumente inseridos em formulários e aplicativos da web, bem como em outros tipos de aplicativos. Ao processar essas entradas, é importante que elas sejam formatadas corretamente e sejam válidas antes de serem processadas.

Este tutorial mostrará como validar dados no lado do servidor e no lado do cliente, bem como evitar algumas armadilhas comuns ao trabalhar com esses tipos de entradas.



Validar Nome

Abaixo está um exemplo simples de verificação se o campo nome contém apenas letras, hífens, apóstrofos e espaços em branco e a idade contém apenas números.

Haverá uma mensagem de erro armazenada se o valor do campo nome não for válido:

$firstname = input_validation($_POST["firstname"]);
if (!preg_match("/^[a-zA-Z-‘ ]*$/",$firstname)) {
$fnameErr = "Only letters and white space allowed";
}
age = input_validation($_POST["age"]);
if (!preg_match("/^[0-9 ]*$/", $age)) {
$ageErr = "Only numbers allowed";
}

Quando preg_match() é chamado, uma string é pesquisada em busca de um padrão e, se o padrão existir, ele retorna true , caso contrário, retorna false .


Validar email

Usar a função filter_var() do PHP é a maneira mais fácil e confiável de verificar se um endereço de e-mail está bem formado ou não.

Se o endereço de e-mail fornecido não for correto, a seguinte mensagem de erro será exibida no código:

$email = input_validation($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}

Validar URL

Abaixo está um exemplo de código sobre como verificar se a sintaxe do endereço URL é válida (esta expressão regular também permite traços no endereço URL).

Se houver um erro de sintaxe no endereço da URL, armazene uma mensagem de erro informando:

$linkedin = input_validation($_POST["linkedin"]);
if (!preg_match("/^(?:(?:https?|ftp):\\/\\/|www.)[-a-z0-9+&@#\\/%?=~_|!:,.;]*[-a-z0-9+&@#\\/%=~_|]/i", $linkedin)) {
$linkedInErr = "URL is not valid";
}

Formulário Php Validar e-mail e url

É assim que o script se parece agora:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?php
$fnameErr = $lnameErr = $ageErr = $emailErr = $designationErr = $skillsErr = $linkedInErr = "";
$firstname = $lastname = $age = $email = $designation = $skills = $linkedin = $yrofexp = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["firstname"])) {
$fnameErr = "First name is required";
} else {
$firstname = input_validation($_POST["firstname"]);
if (!preg_match("/^[a-zA-Z-' ]*$/", $firstname)) {
$fnameErr = "Only letters and white space allowed";
}
}
$lastname = input_validation($_POST["lastname"]);
if (empty($_POST["age"])) {
$ageErr = "Age is required";
} else {
$age = input_validation($_POST["age"]);
if (!preg_match("/^[0-9 ]*$/", $age)) {
$ageErr = "Only numbers allowed";
}
}
if (empty($_POST["email"])) {
$emailErr = "Email is required";
} else {
$email = input_validation($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
}
if (empty($_POST["skills"])) {
$skillsErr = "Skills is required";
} else {
$skills = input_validation($_POST["skills"]);
}
if (empty($_POST["designation"])) {
$designationErr = "Designation is required";
} else {
$designation = input_validation($_POST["designation"]);
if (!preg_match("/^[a-zA-Z-' ]*$/", $designation)) {
$designationErr = "Only letters and white space allowed";
}
}
if (empty($_POST["linkedin"])) {
$linkedInErr = "URL is required";
} else {
$linkedin = input_validation($_POST["linkedin"]);
if (!preg_match("/^(?:(?:https?|ftp):\\/\\/|www.)[-a-z0-9+&@#\\/%?=~_|!:,.;]*[-a-z0-9+&@#\\/%=~_|]/i", $linkedin)) {
$linkedInErr = "URL is not valid";
}
}
$yrofexp = input_validation($_POST["yrofexp"]);
}
// define variables and set to empty values
function input_validation($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Mesclar código HTML e PHP:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<!DOCTYPE HTML>
<html lang="en">
<head>
<title>PHP Form</title>
<style>
.error {
color: #FF0000;
}
</style>
</head>
<body>
<?php
$fnameErr = $lnameErr = $ageErr = $emailErr = $designationErr = $skillsErr = $linkedInErr = "";
$firstname = $lastname = $age = $email = $designation = $skills = $linkedin = $yrofexp = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["firstname"])) {
$fnameErr = "First name is required";
} else {
$firstname = input_validation($_POST["firstname"]);
if (!preg_match("/^[a-zA-Z-' ]*$/", $firstname)) {
$fnameErr = "Only letters and white space allowed";
}
}
$lastname = input_validation($_POST["lastname"]);
if (empty($_POST["age"])) {
$ageErr = "Age is required";
} else {
$age = input_validation($_POST["age"]);
if (!preg_match("/^[0-9 ]*$/", $age)) {
$ageErr = "Only numbers allowed";
}
}
if (empty($_POST["email"])) {
$emailErr = "Email is required";
} else {
$email = input_validation($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
}
if (empty($_POST["skills"])) {
$skillsErr = "Skills is required";
} else {
$skills = input_validation($_POST["skills"]);
}
if (empty($_POST["designation"])) {
$designationErr = "Designation is required";
} else {
$designation = input_validation($_POST["designation"]);
if (!preg_match("/^[a-zA-Z-' ]*$/", $designation)) {
$designationErr = "Only letters and white space allowed";
}
}
if (empty($_POST["linkedin"])) {
$linkedInErr = "URL is required";
} else {
$linkedin = input_validation($_POST["linkedin"]);
if (!preg_match("/^(?:(?:https?|ftp):\\/\\/|www.)[-a-z0-9+&@#\\/%?=~_|!:,.;]*[-a-z0-9+&@#\\/%=~_|]/i", $linkedin)) {
$linkedInErr = "URL is not valid";
}
}
$yrofexp = input_validation($_POST["yrofexp"]);
}
// define variables and set to empty values
function input_validation($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
<h2>PHP Form Validation</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
<p><span class="error">* required field</span></p>
First name: <input type="text" name="firstname"><span class="error"> * <?php echo $fnameErr; ?></span>
<br><br>
Last name: <input type="text" name="lastname"><span class="error"></span>
<br><br>
Age: <input type="text" name="age"><span class="error">* <?php echo $ageErr; ?></span>
<br><br>
E-mail: <input type="text" name="email"><span class="error"> * <?php echo $emailErr; ?></span>
<br><br>
<label for="yrofexp">Year of Experience:</label>
<select name="yrofexp" id="yrofexp">
<option value="">Select number</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
</select>
<br><br>
Designation: <input type="text" name="designation"><span class="error"> * <?php echo $designationErr; ?></span>
<br><br>
LinkedIn: <input type="text" name="linkedin"><span class="error"> * <?php echo $linkedInErr; ?></span>
<br><br>
Write your Skills: <textarea name="skills" rows="5" cols="40"></textarea><span class="error"> * <?php echo $skillsErr; ?></span>
<br>
<br><br>
<input type="submit" name="submit" value="Submit">
</form>
<?php
echo "<h2>Your Form Data:</h2>";
echo "First Name: ".$firstname;
echo "<br>";
echo "Last Name: ".$lastname;
echo "<br>";
echo "Age: ".$age;
echo "<br>";
echo "Email: ".$email;
echo "<br>";
echo "Year of Experience: ".$yrofexp;
echo "<br>";
echo "Designation: ".$designation;
echo "<br>";
echo "LinkedIn URL: ".$linkedin;
echo "<br>";
echo "Skills: ".$skills;
?>
</body>
</html>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
A seguir, demonstraremos como evitar que o formulário esvazie todos os campos de entrada quando o usuário enviar o formulário, o que evitará que o formulário se torne inutilizável .
Nós valorizamos o seu feedback.
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0

Assine a nossa newsletter
Digite seu e-mail para receber um resumo semanal de nossos melhores posts. Saber mais!
ícone