Jump to content
austinmrs

Validar Campos php

Recommended Posts

austinmrs

Tenho um projecto a andar, e está quase tudo pronto. No backoffice consigo inserir um sitio na db, e ao inserir o sitio tenho a hipotese de inserir uma imagem para esse sitio.

Mas o único campo validado é a imagem. Precisava de ajudar para validar se o nome do sitio tem alguma coisa, se o número de contato é um numero, etc.

Aqui vai o código php que insere o sitio:

<?php
include('dbconnect.php');
include("resize-class.php");

if(isset($_POST['enviar']))
{ //START IF

$nomesitio = $_POST['nome'];
$contato = $_POST['contato'];
$morada = $_POST['morada'];
$tipo = $_POST['tipo'];
$freguesias = $_POST['freguesias'];
$hora_abertura = $_POST['hora_abertura'];
$minuto_abertura = $_POST['minuto_abertura'];
$hora_fecho = $_POST['hora_fecho'];
$minuto_fecho = $_POST['minuto_fecho'];
$horario = "Das $hora_abertura:$minuto_abertura ás $hora_fecho:$minuto_fecho";
//o nome original do arquivo no computador do utilizador
$arqName = $_FILES['arquivo']['name'];
 //o tipo mime do arquivo
$arqType = $_FILES['arquivo']['type'];
  //o tamanho do arquivo
$arqSize = $_FILES['arquivo']['size'];
//o nome temporario do arquivo com que foi guardado no servidor
$arqTemp = $_FILES['arquivo']['tmp_name'];
//o codigo de erro associado a este upload de arquivo
$arqError = $_FILES['arquivo']['error'];
//lista de tipos de arquivos permidos
$tiposPermitidos = array('image/gif', 'image/jpeg', 'image/jpg', 'image/png');
//tamanho maximo
$tamanhoPermitido = 6024 * 3000;
if ($arqError == 0)
{
//verifica o tipo de arquivo enviado
   if(array_search($arqType, $tiposPermitidos) === false)
   {
   $retorno = '<span class="error">O tipo de arquivo enviado é inválido!</span>' ;
   }
//verifica o tamanho do arquivo enviado
   elseif ($arqSize > $tamanhoPermitido)
   {
   $retorno = '<span class="error">O tamanho do arquivo enviado e maior que o limite!</span>';
   }
   else
   {
       $pasta = 'images_sitios/';
//pega a extensao do arquivo enviado
       $extensaoTemp = explode('.',$arqName);
       $extensao = strtolower(end($extensaoTemp));
//define o nome do arquivo usando um Unix TimesTamp
       $nome = time(). '.' . $extensao;
       $upload = move_uploaded_file($arqTemp, $pasta . $nome);

       if ($upload === true)
       {
       $ficheiro = $pasta.$nome; 
$resizeObj = new resize($ficheiro); 
$resizeObj -> resizeImage(800, 600, 'auto');
$resizeObj -> saveImage("images_sitios/$nome", 100);
$resizethumb = new resize($ficheiro); 
$resizethumb -> resizeImage(150, 150, 'crop');
$resizethumb -> saveImage("images_sitios/thumbnails/$nome", 100);
       }

       else
       {
       $retorno = '<span class="error">Nao foi possivel fazer o upload da imagem!</span>';
       }
   }                         
}

if(empty($ficheiro))
{
$retorno = '<span class="error">Insira a imagem!</span>';
}         
//verifica se a variavel retorno estiver vazia (nao conter erro) 
if(empty($retorno))
{
   $query = mysql_query("INSERT INTO sitio (nome_sitio, horario, contato, morada, imagem, id_tipo, id_freguesia) VALUES ('$nomesitio','$horario','$contato','$morada','$nome','$tipo','$freguesias')") or die (mysql_error());
//se a query existe entao a pagina é redireccionada
   if($query === true)
   {
   $sucesso = '<span  class="yes">Sitio inserido com sucesso!</span>';
   echo $sucesso;
   }
}
else
{
echo $retorno;
}

} //END IF
?> 

Queria validar se a $nomesitio contém algo, se o $contato é um número e se a $morada tem algo.

Obrigado desde já

Share this post


Link to post
Share on other sites
NunoDinis
if (empty($nomesitio)) {
  // vazio
}

if(is_numeric($_POST['contato'])) {
  //é numérico
}


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
austinmrs

EDIT: Acho que já consegui o que queria, neste momento parece estar tudo ok:

<?php
include('dbconnect.php');
include("resize-class.php");

if(isset($_POST['enviar']))
{ //START IF

$nomesitio = $_POST['nome'];
$contato = $_POST['contato'];
$morada = $_POST['morada'];
$tipo = $_POST['tipo'];
$freguesias = $_POST['freguesias'];
$hora_abertura = $_POST['hora_abertura'];
$minuto_abertura = $_POST['minuto_abertura'];
$hora_fecho = $_POST['hora_fecho'];
$minuto_fecho = $_POST['minuto_fecho'];
$horario = "Das $hora_abertura:$minuto_abertura ás $hora_fecho:$minuto_fecho";
//o nome original do arquivo no computador do utilizador
$arqName = $_FILES['arquivo']['name'];
 //o tipo mime do arquivo
$arqType = $_FILES['arquivo']['type'];
  //o tamanho do arquivo
$arqSize = $_FILES['arquivo']['size'];
//o nome temporario do arquivo com que foi guardado no servidor
$arqTemp = $_FILES['arquivo']['tmp_name'];
//o codigo de erro associado a este upload de arquivo
$arqError = $_FILES['arquivo']['error'];
//lista de tipos de arquivos permidos
$tiposPermitidos = array('image/gif', 'image/jpeg', 'image/jpg', 'image/png');
//tamanho maximo
$tamanhoPermitido = 6024 * 3000;

if (empty($nomesitio)) {
$noname = '<span  class="error">Insira um nome para o sitio!</span></br>';
echo $noname;
}

if (empty($contato)) {
$nocontato = '<span  class="error">Insira um contato para o sitio!</span></br>';
echo $nocontato;
}
if (empty($morada)) {
$nomorada = '<span  class="error">Insira uma morada para o sitio!</span></br>';
echo $nomorada;
}
if (empty($arqName)) {
$noarqName = '<span  class="error">Insira uma imagem!</span></br>';
echo $noarqName;
}

if ($arqError == 0 && !empty($nomesitio) && !empty($morada) && !empty($contato)&& !empty($arqName))
{
//verifica o tipo de arquivo enviado
if(array_search($arqType, $tiposPermitidos) === false)
{
$arqinvalido = '<span class="error">O tipo de arquivo enviado é inválido!</span>';
echo $arqinvalido;
}
//verifica o tamanho do arquivo enviado
else if ($arqSize > $tamanhoPermitido)
{
$arqgrande = '<span class="error">O tamanho do arquivo enviado é maior que o limite!</span>';
echo $arqgrande;
}
else
{
	$pasta = 'images_sitios/';
//pega a extensao do arquivo enviado
	$extensaoTemp = explode('.',$arqName);
	$extensao = strtolower(end($extensaoTemp));
//define o nome do arquivo usando um Unix TimesTamp
	$nome = time(). '.' . $extensao;
	$upload = move_uploaded_file($arqTemp, $pasta . $nome);

	if ($upload === true)
	{
	$ficheiro = $pasta.$nome;
$resizeObj = new resize($ficheiro);
$resizeObj -> resizeImage(800, 600, 'auto');
$resizeObj -> saveImage("images_sitios/$nome", 100);
$resizethumb = new resize($ficheiro);
$resizethumb -> resizeImage(150, 150, 'crop');
$resizethumb -> saveImage("images_sitios/thumbnails/$nome", 100);
$query = mysql_query("INSERT INTO sitio (nome_sitio, horario, contato, morada, imagem, id_tipo, id_freguesia) VALUES ('$nomesitio','$horario','$contato','$morada','$nome','$tipo','$freguesias')") or die (mysql_error());
//se a query existe entao a pagina é redireccionada
if($query === true)
{
$sucesso = '<span  class="yes">Sitio inserido com sucesso!</span>';
echo $sucesso;
}
	}

	else
	{
	$retorno = '<span class="error">Nao foi possivel fazer o upload da imagem!</span>';
echo $retorno;
	}
}						
}

}
?>

O que acham? Acham que há algo a melhorar?

Obrigado desde já :)

Edited by austinmrs

Share this post


Link to post
Share on other sites
taviroquai

Melhorar? Ha sempre espaço para melhorias... separar bem a apresentacao da logica, para teres código reutilizavel; e se precisasses apresentar as mensagens de validação em varios idiomas? So umas ideias mas ja sao offtopic...

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.