12 - Validar formulários com PHP
Summary
TLDREn esta clase, el profesor Wenderson explica el proceso de validación en aplicaciones web, centrándose en la validación de formularios de login y registro utilizando PHP. Detalla cómo limpiar entradas, validar correos electrónicos, contraseñas y otros campos, asegurando que los datos introducidos sean correctos antes de interactuar con la base de datos. También destaca cómo gestionar errores y mensajes de validación para mejorar la seguridad y la experiencia del usuario. El profesor enfatiza la importancia de refactorizar el código y proporciona ejemplos prácticos para comprender mejor el proceso de validación.
Takeaways
- 📧 El formulario de login envía los datos al controlador, que valida el correo electrónico y la contraseña.
- 📝 Se eliminan espacios en blanco de los campos antes de proceder a la validación para evitar errores.
- 🔑 Se verifica si el campo de correo electrónico está en formato válido y si no es así, se muestra un error.
- 🔒 La contraseña también es validada, verificando que no esté vacía y que tenga al menos seis caracteres.
- ❌ Si hay errores en los campos de correo o contraseña, se almacenan en un array de errores y se devuelven al formulario.
- 🔄 La sesión del usuario se valida al iniciar sesión, verificando si el ID de la sesión ya existe para evitar validar nuevamente.
- 🛠️ Se busca el usuario en la base de datos según el correo y se verifica si coincide con el ingresado.
- 🧩 Se sugiere unificar mensajes de error para no revelar si el problema es con el correo o la contraseña por seguridad.
- 🔁 La misma estructura de validación se aplica tanto al login como al registro, usando diferentes archivos específicos para cada proceso.
- 🖼️ También se validan otros campos como el nombre, el apellido, la foto, y más, dependiendo de las restricciones definidas.
Q & A
¿Cuál es el propósito principal de las validaciones en el sistema descrito?
-El propósito principal de las validaciones es asegurar que los datos ingresados por el usuario, como el correo electrónico y la contraseña, cumplan con los requisitos antes de proceder con el inicio de sesión o registro. Esto incluye verificar el formato correcto del correo y que la contraseña tenga al menos seis caracteres.
¿Qué hace la función `for` aplicada a las solicitudes?
-La función `for` recorre las claves de la solicitud y elimina los espacios vacíos de los valores ingresados en los campos de texto. Esto garantiza que los espacios adicionales que el usuario pueda haber añadido no interfieran con la validación.
¿Cómo se valida si el campo de correo electrónico tiene un formato adecuado?
-El sistema utiliza un filtro de PHP para validar si el campo de correo electrónico tiene un formato adecuado. Si el valor no es un correo electrónico válido, se genera un mensaje de error indicando que el formato del correo no es correcto.
¿Qué sucede si la contraseña ingresada es menor a seis caracteres?
-Si la contraseña ingresada tiene menos de seis caracteres, el sistema genera un error indicando que la contraseña debe tener al menos seis caracteres. Este error se añade a una lista de errores que se muestra al usuario.
¿Qué hace el sistema si encuentra errores en el proceso de validación?
-Si el sistema encuentra errores durante el proceso de validación, crea un array asociativo de errores y devuelve estos errores al formulario para que el usuario pueda corregir los campos que fallaron en la validación.
¿Cómo se maneja la sesión del usuario al iniciar sesión?
-Cuando un usuario inicia sesión, se crea una `session_id` asociada al usuario en la base de datos. Si la `session_id` no existe, significa que el usuario no ha iniciado sesión y se le pide que ingrese su correo y contraseña nuevamente.
¿Cómo verifica el sistema si un usuario ya está registrado?
-El sistema busca en la base de datos utilizando el correo electrónico ingresado para verificar si ya existe un usuario registrado con ese correo. Si el correo existe, muestra un mensaje de error indicando que el usuario ya está registrado.
¿Qué diferencia hay entre la validación de login y la validación de registro?
-La validación de login verifica que el correo y la contraseña ingresados sean correctos, mientras que la validación de registro no solo valida el formato de los campos, sino que también asegura que el correo no esté ya registrado en el sistema.
¿Cómo maneja el sistema la validación de un número de identificación fiscal (NIF)?
-El sistema valida que el NIF ingresado sea un número entero y tenga exactamente nueve dígitos. Si el NIF no cumple con estas condiciones, se genera un error y se informa al usuario.
¿Qué sucede si el sistema detecta una discrepancia entre la contraseña ingresada y la almacenada en la base de datos?
-Si la contraseña ingresada no coincide con la contraseña almacenada en la base de datos, el sistema genera un error y muestra un mensaje al usuario pidiéndole que verifique su correo o contraseña, sin especificar cuál de los dos es incorrecto, como medida de seguridad.
Outlines
🔑 Validaciones de formulario de inicio de sesión
Este párrafo explica el proceso de validación para formularios de inicio de sesión en una aplicación web. Se describe cómo el usuario introduce su correo y contraseña, y cómo el controlador recibe y valida esta información. La validación incluye la eliminación de espacios en blanco, verificar si el correo es del tipo correcto mediante un filtro PHP, y si la contraseña tiene al menos seis caracteres. Si se encuentran errores, se generan mensajes que indican los problemas específicos con los datos ingresados.
🔍 Verificación de errores y manejo de sesiones
Aquí se amplía el proceso de validación, donde los errores detectados se almacenan en un array asociativo y son devueltos al controlador. Luego, se describe cómo se verifica si existe una sesión de usuario activa al validar el inicio de sesión. Si la sesión ya está activa, no es necesario validar la contraseña nuevamente. Si no lo está, el sistema verifica el correo en la base de datos y genera errores si no coincide o si la contraseña no es correcta. Se menciona la importancia de manejar los mensajes de error de manera uniforme para mejorar la seguridad del sistema.
📝 Validación de registro de usuarios
Este párrafo explica el proceso de validación durante el registro de nuevos usuarios. Al igual que en el inicio de sesión, se limpia el formulario, y se valida que los campos como el nombre y el correo electrónico sean correctos. Además, se comprueba si el correo electrónico ya está registrado en la base de datos. Se discuten estrategias adicionales para validar campos personalizados como un 'apellido', limitando la longitud del texto a 30 caracteres según la especificación del administrador del sistema.
⚙️ Validación de datos administrativos y otros campos
Este párrafo cubre las validaciones adicionales para usuarios administradores y otros campos, como el número de teléfono y el NIF (número de identificación fiscal). Se asegura que estos campos cumplan con los formatos correctos y que los valores numéricos, como el NIF y el teléfono, no contengan letras. También se valida la foto de perfil subiendo una imagen con dimensiones y tamaño específicos. Finalmente, se explica cómo las validaciones son aplicables también a otros elementos del sistema, como libros en una biblioteca virtual, repitiendo el proceso de validación para diferentes tipos de entidades.
Mindmap
Keywords
💡Validação
💡Controlador
💡Autenticação
💡Formulário
💡Sessão
💡Erro de validação
💡PHP
💡Filtro
💡Base de dados
💡Requisição
Highlights
Introduction to the validation process for user login and logout, focusing on validation of admin and application data.
Explanation of how the login form data (email and password) is processed and validated before being sent to the controller.
Use of a 'foreach' loop to clean up empty spaces in form fields, ensuring no unnecessary spaces remain before validation.
Validation of email format using PHP's filter to check if the input matches an email type, triggering an error if invalid.
Validation of the password field, ensuring it is not empty and has a minimum length of six characters.
Introduction of an associative array for error handling, which stores validation error messages for both email and password.
The system verifies if the session ID exists to determine whether the user is already logged in, skipping password validation if they are.
Validation of email existence in the database by checking if the provided email is registered before allowing further login attempts.
Comparison of the submitted password with the stored hashed password in the database using a PHP function to ensure they match.
Security tip: a uniform error message is suggested for both email and password errors to prevent potential attackers from identifying valid email addresses.
Validation of user registration data, where all form fields are validated similarly to login, ensuring required fields are properly filled.
Possibility of extending validation logic to include additional fields such as nickname, with constraints on length or specific format.
Validation logic applied for phone numbers and tax IDs (NIF) to ensure they contain only numerical data and meet specified lengths.
Validation of image upload dimensions (width, height, file size) as part of user profile picture handling, ensuring the images meet defined criteria.
Introduction to the system's approach of handling error messages, passing them back to the form through sessions to display appropriate user feedback.
Transcripts
Olá bem-vindo de volta à sala de aula
invertida do professor Wenderson É isso
aí e agora a gente vai falar da parte
das Vale das ações não é isso vamos lá
validações aqui Opa bonitinho Onde é que
estão as validações
onde tem os códigos né E aqui um
ficheiro exclusivo para validação e
dividida em validação de admin e
validação de aplicação não é isso vamos
começar pela validação de aplicação do
login então Ou seja quando fazer o
logout então quando a gente vai fazer o
login então Ou seja a gente precisa
colocar o utilizador precisa colocar o
E aí a gente coloca a senha então o
formulário vai mandar isso para onde
para o controlador e o controlador vai
fazer o quê as validações então
o formulário quando a gente vai fazer lá
no controlador não é isso de aplicação
você já tá craque nisso daqui não
controlar autenticação
então ele vai receber aqui um formulário
post desse daqui né do utilizador um
login vem para o login para o post e
aqui ele vai fazer o que vai validar
esse login e quando ele vai validar esse
login ele vai vir para onde ó vai vir
aqui ó vamos lá vou clicar aqui ó já foi
para lá tá vendo segurando o controle já
foi para lá então o que que ele vai
fazer ele vai receber ó ele vai receber
a requisição do formulário não é isso e
vai validar esse login e o que que ele
vai validar aqui ó primeira coisa ele
recebe aqui agora como parâmetro né lá
mandar comenta que recebe parando
e a primeira coisa que ele vai fazer
aqui qual é a primeira medida de
segurança a primeira de segurança de
segurança eu faço um foride então o que
que esse Ford faz ele vai pegar a
requisição e aqui eu uso um uma rede
chave valor porque eu quero pegar só a
chave né e não o valor e aí o que que eu
digo para cada requisição pegue a
requisição na própria chave e limpe
esses espaços o que que essa funçãozinha
tá fazendo aqui se aqui ó na prática
isso daqui ó se o utilizador Pegar e
colocar espaço nos vazios aqui ó ou se
ele colocar espaços vazios aqui aquela
função vai tirar todos esses espaços
vazios é só isso tá E vai tirar isso
todos os espaços vazios de todos os
campos por isso que tem um forte tá bem
por mais que tenha espaço vazio aqui ele
lá vai fazer essa correção Tá bom então
você já sabe o que que faz Qual é aquela
função ali para que que ela serve depois
de limpar todos os espaços vazio e vai
Limpar automaticamente de todo mundo aí
sim ele vai pegar lá a requisição e-mail
que é essa daqui e vai verificar se
utilizando aqui uma um filtro do próprio
PHP ele vai fazer uma validação se isso
é do tipo e-mail então o que que essa
validação faz aqui olha
faz uma validação faz uma faz uma
validação dessa variável se ela é do
tipo e-mail se ela não for e esse essas
exclamação significa isso é A negação né
é o inverso Então passa o filtro e meio
aí ele vai me dar o filtro e meio então
se não for
não passar não fortrudes então a gente
tem um erro aqui ó o campo e meio não
pode estar vazio deve ter o formato de
e-mail A exemplo de e a gente tem a
primeira validação
depois ele vai fazer automaticamente a
segunda validação independente dessa que
que ele vai fazer ele vai verificar se a
requisição palavra passe está vazia ou
isso daqui é o símbolo de ouro né então
verifica se a palavra Face está vazia ou
se a ou se o tamanho é que é uma outra
função do PHP ou se o tamanho da palavra
paz é menor do que 6 se for Mete mais um
erro aqui ó o campo palavra paz não pode
estar vazio deve ter no mínimo seis
caracteres
e se tiver erros né se isso daqui for
verdadeiro ele vai pegar esse Arreio de
erros que eu criei esse r associativo
né E no campo palavra-passe ele bota
essa mensagem no e-mail ele bota essa
mensagem então se tiver erros ele vai
pegar o que ó se tiver erros aqui onde
eu digo isso tem um ar condicional E
então se existir se essa variável errou
existiu E quando é que ela existe se eu
preencher ela se eu criar e preencher se
ela entrar aqui tiver erro crio se ela
entrar aqui tiver erro crio Então se ela
existir se ela foi criada Então você vai
criar uma Rei quando eu boto aqui entre
parênteses entre Chaves isso é um arreio
criando uma rei e eu estou criando uma
rei associativo do nome inválido né
então se eu botasse aqui teste então
estaria criando uma reação associativa
do tipo teste e lá eu pegaria como teste
né mas eu tô aqui como inválido e tô
passando o que todos os erros e aí
quando ele volta para o controlador
dados ele vai ele vai ele vai verificar
ele entra aqui no verificar erros e o
verificar erros vê existe esses dados
inválido e sete lembra mesma estratégia
foi criada essa variável ela existe né
dados Inválidos então só para você ter
uma ideia se aqui por exemplo ao invés
de inválido colocar esse teste aqui eu
ia pegar olha existe dados teste né
escrever até errado mas é isso então eu
que tô usando essa estratégia tô
mandando para lá e aí eu faço a
validação o resto aqui você já sabe não
é isso depois de eu fazer essa validação
de login eu faço uma outra validação da
palavra passe
e aqui ó também tá lá ó no campo
validação tu ainda no mesmo validar
autenticação
validar
login e senha então login Ok passei pelo
segundo agora eu faço uma segunda
validação então
aqui tem uma estratégia olha se
se não existir a sessão e de quem que é
essa exceção ID essa sessão ID ela só
vai existir lembra quando utilizado para
joguinho lembra que quando ele faz o
login a gente cria essa sessão id não é
isso deixa eu ver se eu te mostro aqui ó
validar login e fazer login vamos ver
aqui fazer o login ó tá vendo ó Eu
queria essa sessão idê tá vendo eu pego
o ID do utilizador E cria essa sessão ID
então aqui ó
se essa sessão id não existe porque
existe ele já tá logado eu não tenho que
validar a palavra passa ele já tá logado
né então se ele não existir isso se ele
não estiver alugado aí sim você vai
agora
ler o utilizador pelo e-mail então na
realização eu vou pegar um e-mail e vou
lá aonde no repositório para recuperar
esse utilizador ou seja vai lá na base
de dados e veja se tem esse meio aqui né
E se tiver me traz esse utilizador se
tiver um e-mail me traz ele e é isso que
tá fazendo aqui nessa validação ele vai
lá e veja se tem e-mail se tiver ele
traz o e-mail e aqui eu verifico olha se
negação tá vendo ó se não encontrou o
e-mail verifique seu e-mail tá vendo e
aí aquela mesma estratégia erros e aqui
eu vou criar aqui aquele arreio ó tá
vendo exatamente aqui igual a mesma
estratégia aqui é a mesma estratégia que
é só um repeteco
poderia até abstrair esse código para
fazer aqui uma
um procedimento aqui seria na verdade
até uma função faria uma funçãozinha não
precisa repetir isso mas tô deixando
aqui que é para você aprender então
e depois você pode refaturar esse código
então
aquele verifica então se não tiver
utilizado ele lança um erro e agora ele
também vai verificar já não peguei o
utilizador então ele vai verificar o
utilizador e ele vai pegar da requisição
a palavra passe aqui que palavra passa é
essa é que eu tô digitando aqui agora e
aí se existir esse e-mail ele vai lá na
base de dados e se ele existir esse
melhor ele vai lá ele vai requisitar o
e-mail se existe esse e-mail ele traz
otimizador Então se
na hora de verificar a palavra passe eu
vou agora testar então ele vai pegar o
utilizador a palavra passe no utilizador
que eu vim lá da base de dados e vai
comparar com a que eu tô digitando agora
e essa função do PHP ela compara um
resto com um texto e se ele funcionasse
ele for verdade e ele traz verdadeiro ou
não então se aqui trouxe é verdadeiro
passa agora se não for verdadeiro eu
lanço um erro olha ele fica essa palavra
faz
agora Lembra que eu falei que o correto
não é verifique seu e-mail verifique sua
palavra passe por que aqui por exemplo
se eu verificar aqui eu meto um e-mail
se ele não tiver eu já sei que não tem
uma Então posso ficar testando até
descobrir o e-mail que você já válido
quando é intenso meia agora eu vou
testar a palavra passe então o correto
aqui seria verifique seu e-mail ou falar
passe e utilizar essa mesma mensagem
para cá
porque aí quem tiver tentando burlar o
seu sistema não sabe se é e-mail ou se é
palavra passe é uma medida de segurança
eu deixei para te apresentar isso aqui
agora tá bem mas eu vou deixar desse
jeito que é só para nível didático você
saber o que que é o quê onde é que tá o
erro tá bem
pronto e aqui passa a validação se tiver
erro devolve erro se tiver Ok devolve Ok
devolve otimizador para seguir lá no
controle tá e aqui a gente validou o
login
agora
vai lhe dar o utilizador
não vale dar login sem agora vai dar o
registro o que que é o validar o
registro é aqui ó quando eu vou fazer o
registro ele vai pegar esses campos e
vai fazer a validação novamente se
formulário manda para o controle o
controle vai fazer a validação dos dados
e quando fizer a validação ele vai
validar um ficheiro que eu escrevo
exclusivamente só para validar registro
tá vendo Então eu já sei validação
registro é aqui validação login e senha
aqui validação palavra passe ali então
fica semântico e eu consigo validar
bom aqui na validar registro é aquela
mesma coisa limpa tudo né E aqui ó é só
você verificar se estiver vazio então
aqui eu Vale do homem aqui é o Vale do
e-mail aqui
eu verifico se ele já é um utilizador
registrado Ah o que que essa função aqui
ó segura no controle ó clica ó o que que
ele tá fazendo ele tá indo lá buscar o
utilizador por e-mail aquela mesma
estratégia e aí ele já dá a mensagem tá
aqui agora é Mais do Mesmo a vantagem é
que se eu quiser agora por exemplo
validar mais alguma coisa no e-mail ou
se eu quiser validar mais um campo se
você quiser botar mais um campo nesse
formulário aqui por exemplo apelido e aí
eu posso vir aqui ó e validar também o
apelido dobrar isso aqui vou lhe dar um
apelido no caso de nome aqui seria a
período né então aqui apelido
apelido Pronto já vai lhe dar um apelido
aí o utilizador falou assim o dono do
sistema disse assim olha é o nome de 255
tá muito alto eu quero que ele tenha no
máximo 30 caracteres Pronto já tá já tá
validado então toda vez que fizer o
registro tem que ter 30 agora eu vou
fazer isso também para o login então
quando tiver o login
então aqui eu teria que botar aqui
nem entra né Então seria mais a questão
do registro e de criar otimizador no
campo nome pode deixar que os 225 bom o
importante é que você tenha pego a ideia
Tá e agora aqui ó palavra passa a mesma
coisa vou receber aqui quando eu for
verificar a palavra passe
no campo de Administração é a mesma
coisa eu vou validar isso aqui quando eu
vou tiver que vai lhe dar um utilizador
lembra a gente até já passou por aqui
pelos ficheiros lembra
então é a mesma coisa vou validador onde
é que é isso Olha quando eu tô aqui
logado
eu não consigo acertar isso aqui de
primeira nunca já perceberam né Deve ter
uma aposta aí para saber se eu vou errar
então aqui ó aqui quando eu vou criar um
utilizador Então eu tenho aqui ó
validando utilizador então ele vai pegar
todos esses dados formulário e antes de
entrar ele vai validar então ele vai
limpar aqui tudo né você já aprendeu ele
vai ver o campo nome ele está vazio se
estiver vazio Campo Novo não pode estar
vazio ou o canto o nome é menor do que
três ou maior do que 25 se ele for menor
do que três Ela deve ter entre 3 e 25
então a validado o apelido a requisição
aqui sem e-mail tá vendo Nívea
é que eu tô botando se ele tem que ser
inteiro Então se botar letra no nife ele
vai dar problema também ó quer ver ó se
eu botar como enfiar descer as seis
tem que ser inteiro
aqui ó o campo nisto não pode estar
fazendo deve ter 9 números tá vendo
valendo então aqui esse filtro Vale de
leite inteiro ele diz isso e aqui também
uso
para o telemóvel se eu botar letra
também ó ele vai validar telemóvel e
assim a gente vai criando o nível de
validação que a gente quiser se eu
quiser que o senhor quiser botar mais
para ligação para telemóvel boto o que
eu quiser tá bem
e aqui a gente tem a validação da foto
lembra então aqui eu tenho a largura da
foto a altura da foto o tamanho da foto
eu pego aqui passo o a validação das
dimensões da foto tá esse código aqui
você pode até pegar ele praticamente
pronto aqui claro eu recomendo que você
entenda tudo isso Tá Mas aqui vai ser
sempre uma coisa bem repetitiva e aqui
eu faço todas as validações depois a
validação da palavra paz confirma a
palavra paz validação do campo
administrador aqui eu uso uma estratégia
como lá o campo quando a gente clica
nesse botão ele não me dá ele me dá um
ele transforma isso em homem então eu
tive que criar essa funçãozinha aqui né
Essa essa condicional aqui
então o que que eu faço se o campo
administrador não estiver vazio e for
igual a um Então muda para tru porque
porque lá na base de dados
vamos pegar aqui ó Cadê a tabela aqui ó
no administrador eu digo então aqui o
botão o Bootstrap ele me devolve ontem
ele me devolve um Cadê a validação onde
é que eu tava
no Bootstrap me perdi agora aqui ó no
Bootstrap ele me devolve um isso é o
próprio Bootstrap então transforma
e aqui eu tenho a validação do
utilizador validação da palavra paz
validação da senha validação do registro
se eu fosse criar aqui um livro então ia
ter validação do login se eu posso criar
aquele livro controlar livro Então eu ia
ter um controle do livro
um controlador do livro Um Vale da
Controlar livro então aqui seria
controlar Opa aqui a gente vai ter
controlar livro A gente ia ter um
validar livro e aqui infraestrutura a
gente ia ter um repositório livre e é só
repetir quanto maior for ficar no
sistema né Maior mais mais ficheiros nós
vamos criando ele vai ficando um baita
dependendo do céu fica um monte de
arquivo Mas você consegue se localizar
facilmente porque você está bem
organizado
bom então aqui a gente termina a parte
de validações né E essas validações elas
depois que passam para validações elas
botam as mensagens aqui de erro não é
isso Ó então cada validação dessa tem
uma mensagem de erro não é isso a
mensagem de uma mensagem de erro e essas
mensagens de erro vão para o controlador
não é e o controlador devolve isso para
através do get né ele devolve isso para
o formulário e o formulário e os
formulários vamos pegar os formulários
os formulários eles recebem aqui
mensagens aquelas mensagens aqui a gente
utiliza o cession então ele vai
verificar se tem uma mensagem de sucesso
é uma mensagem eu e ele vai mostrar mas
eu vou deixar só um vídeo para explicar
isso para ficar Eita Você não viu nada
né eu tenho mania de fazer isso então tá
aqui ó
quando tem as mensagens de erro ele
devolve né então não vale dar registro
ele devolve as mensagens de essas
mensagens de erro vem aqui processo e
elas aparecem na tela mas ok eu vou
fazer um vídeo só para te explicar sobre
isso tá bem a gente encerra aqui então a
parte de validações vamos para mensagens
de erro depois Pro Help e para os
midways e é isso te aguardo na próxima
aula
Voir Plus de Vidéos Connexes
5.0 / 5 (0 votes)