Jump to content
Programar2020

Validações em PHP

Recommended Posts

Programar2020

Boa Tarde

As minhas dúvidas são:

É possível usar a função required (HTML) no select ?

Existe alguma função que limpe o campo automáticamente (como fosse um clear) em PHP? 

O ficheiro de PHP faz sentido (se está bem programado)?

Agradeço a ajuda de todos!

Abraço

Citação


	<section class="section section_reservation mt-5" id="reservation">
		<div class="container">
			<div class="row">
				<div class="col">
					<h2 class="text-center">Reserva Online</h2>
				</div>
			</div> 
			<div class="row justify-content-lg-center section_reservation__row">
				<div class="col-lg-8">
					<form class="section_reservation__form" action="reservation.php" method="post">
						<div class="row">
							<div class="col-md-6">
								<div class="form-group">
									<label class="sr-only">Nome Completo</label>
									<input type="text" class="form-control" name="name" placeholder="Nome Completo" required>
								</div>
								<div class="form-group">
									<label class="sr-only">Telemóvel</label>
									<input type="tel" class="form-control" name="tel" placeholder="Telemóvel" maxlength="9" required>
								</div>
								<div class="form-group">
									<label class="sr-only">E-mail</label>
									<input type="email" class="form-control" name="email" placeholder="E-mail" required>
								</div>
							</div>
							<div class="col-md-6">
								<div class="form-group">
									<label class="sr-only">Pessoas</label>
									<select class="form-control" name="people">
										<option value="0">Selecione!</option>
										<option value="1">1 pessoa</option>
										<option value="2">2 pessoas</option>
										<option value="3">3 pessoas</option>
										<option value="4">4 pessoas</option>
										<option value="5">5 pessoas</option>
									</select>
								</div>
								<div class="form-group">
									<label class="sr-only">Data</label>
									<input type="date" class="form-control" name="date" required>
								</div>
								<div class="form-group">
									<label class="sr-only">Time</label>
									<input type="time" class="form-control" name="time" required>
								</div>
							</div>
							<div class="col">
								<div class="text-center">
									<button type="submit" class="btn btn-primary">Reserve</button>
								</div>
							</div>
						</div> 
					</form>
				</div>
			</div> 
		</div> 
    </section>
    

 

<?php

    if($_SERVER['REQUEST_METHOD'] == 'POST'){
        if(!isset($_POST['name']) || 
           !isset($_POST['tel']) || 
           !isset($_POST['email']) || 
           !isset($_POST['people']) || 
           !isset($_POST['date']) || 
           !isset($_POST['time']) )
        {
            header('Location: index.php#reservation');
            die();
        }
    }     

    $name = $_POST['name'];
    $tel = $_POST['tel'];
    $email = $_POST['email'];
    $people = $_POST['people'];
    $date = $_POST['date'];
    $time = $_POST['time'];

    if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
        // Existe alguma função que limpe o campo ?
    } else{
        $name = $_POST['name'];
    }
    
    if (!preg_match("/^[0-9]*$/",$tel)) {
        // Existe alguma função que limpe o campo ?
    } else{
        $tel = $_POST['tel'];
    }

    if (!filter_var($email, FILTER_VALIDATE_EMAIL)){
        // Existe alguma função que limpe o campo ?
    } else{
        $email = $_POST['email'];
    }

    if (!empty($name) && !empty($tel) && !empty($email) && !empty($people) && !empty($date) && !empty($time)){
        include('email.php'); // Ficheiro que envia os dados do formulário
    }

 

Edited by Programar2020

Share this post


Link to post
Share on other sites
M6

Que confusão de conceitos.

Vamos lá por partes.

Se queres que um campo seja de preenchimento obrigatório em HTML ou PHP simple, tens de ser tu a implementar o validador, seja em PHP quando recebes o conteúdo do formulário ou em Javascript antes de fazer a submissão do formulário. Mesmo que o faças em javascript, é sempre boa prática validar em PHP no servidor também.

Para limpares um formulário em HTML tens um tipo de botão especial, o reset:

 <input type="reset"> 

Se queres "limpar o campo via servidor", o que tens de fazer é afetar o valor do campo no HTML a uma string vazia.

<input type="text" id="tel" name="tel" value="">

ou, afetando via variável PHP

<?php
	$tel = "";
?>
<input type="text" id="lname" name="lname" value="<?= $tel ?>">

Se o PHP está, ou não, bem programado é algo que só tu poderás saber: considera bem programado se faz o que deve fazer como deve ser.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
Programar2020

Boa Tarde

Obrigado por teres respondido!

O que pretendo é: 

- Validar se algum campo foi removido do html, se sim: recarregar o formulário.

- Validar se todos os campos foram preenchidos 

- Validar se todos os campos foram preenchidos corretamente (ex: telemóvel: apenas números ... ), senão foram preenchidos corretamente, apagar esse preenchimento e apresentar uma mensagem de erro.

 

Este é o código que tenho e neste momento não faz o que pretendo, o que devo alterar? 

 

 

<?php

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

        $error = '';

        if(!isset($_POST['name']) || 
           !isset($_POST['tel']) || 
           !isset($_POST['email']) || 
           !isset($_POST['people']) || 
           !isset($_POST['date']) || 
           !isset($_POST['time']) )
        {
            header('Location: index.php#reservation');
            $error = 'Pelo menos um dos campos não existe';
        }
    
    if(empty($error)){

        $name = $_POST['name'];
        $tel = $_POST['tel'];
        $email = $_POST['email'];
        $people = $_POST['people'];
        $date = $_POST['date'];
        $time = $_POST['time'];

        if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
            $name='';
            $error = 'Nome Inválido';
        } else{
            $name = $_POST['name'];
        }
        
        if (!preg_match("/^[0-9]*$/",$tel)) {
            $tel='';
            $error = 'Número de Telemóvel Inválido';
        } else{
            $tel = $_POST['tel'];
        }

        if (!filter_var($email, FILTER_VALIDATE_EMAIL)){
            $email='';
            $error = 'Email Inválido';
        } else{
            $email = $_POST['email'];
        }
    }

    if (!empty($name) && !empty($tel) && !empty($email) && !empty($people) && !empty($date) && !empty($time)){
        include('email.php');
    } else{
        header('Location: index.php#reservation');
    }
    }
<form class="section_reservation__form" action="reservation.php" method="post">
						<div class="row">
							<div class="col-md-6">
								<div class="form-group">
									<label class="sr-only">Nome Completo</label>
									<input type="text" class="form-control" name="name" value="<?php echo name;?>" placeholder="Nome Completo" required>
								</div>
								<div class="form-group">
									<label class="sr-only">Telemóvel</label>
									<input type="tel" class="form-control" name="tel" value="<?php echo tel;?>" placeholder="Telemóvel" maxlength="9" required>
								</div>
								<div class="form-group">
									<label class="sr-only">E-mail</label>
									<input type="email" class="form-control" name="email" value="<?php echo email;?>" placeholder="E-mail" required>
								</div>
							</div>
							<div class="col-md-6">
								<div class="form-group">
									<label class="sr-only">Pessoas</label>
									<select class="form-control" name="people" value="<?php echo people;?>" required>
										<option value="">Selecione</option>
										<option value="1">1 pessoa</option>
										<option value="2">2 pessoas</option>
										<option value="3">3 pessoas</option>
										<option value="4">4 pessoas</option>
										<option value="5">5 pessoas</option>
									</select>
								</div>
								<div class="form-group">
									<label class="sr-only">Data</label>
									<input type="date" class="form-control" name="date" value="<?php echo date;?>" required>
								</div>
								<div class="form-group">
									<label class="sr-only">Time</label>
									<input type="time" class="form-control" name="time" value="<?php echo time;?>" required>
								</div>
							</div>
							<div class="col">
								<div class="text-center">
									<button type="submit" class="btn btn-primary">Reserve</button>
								</div>
							</div>
						</div> 
					</form>

	<?php if(!empty($error)):?>
		<div class="alert alert-warning" role="alert"><?php echo $error;?></div>
	<?php endif;?> 

 

Edited by Programar2020

Share this post


Link to post
Share on other sites
M6

Continua a não ser totalmente claro para mim o que pretendes.

Os campos no HTML não podem ser removidos, o que poder ter é valores de campos de um formulário que possam ter um determinado valor, sendo que um dos valores possíveis é ser vazio.

Acho que o teu código PHP não está a ligar com a página HTML porque não estão a comunicar. Paresse-me que o uso do header com o location está errado, isso só faz um redirect não leva os valores das variáveis.
Funde as duas páginas numa só (não tem de ser literalmente, podes usar includes) por forma a que o código PHP seja executado dentro da chamada à página HTML.

Mas mais importante do que isso, tens aí uma enorme confusão e um desconhecimento imenso em relação à forma como as coisas funcionam.
Antes de te aventurares mais, aprende como funciona o PHP e faz pelo menos um tutorial para teres noção de como as peças se encaixam todas.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.