Jump to content

Validar user input via PHP


Recommended Posts

Posted

Boas pessoal.

Mais uma vez estou encalhado e preciso da vossa ajuda. Já tenho o meu fomr a bombar bem com as fotos aleatórias e tudo isso, mas por algum motivo não consigo pôr a validação a funcionar.

Quero validar se o user clicou no raio button e caso não o tenha feito então que apareça um texto por baixo do radio button que ficou mal.

Já tentei fazer uns ifs com a opção isset ($_POST['valor']) mas por algum motivo não funciona. O que poderá estar a falhar?

Posted

Fiz um pequeno teste... pelo que percebo, o isset retorna 0 ou 1, dependendo se a variável está "set" ou não. Fiz portanto um pequeno teste.

Criei um form com un text input e um submit. O código para validar, coloquei:

<?php

//valida.php

if(isset($_POST['nome'])){
echo $_POST['nome'];
}
else{
echo "Algo falhou!";
}

Pelo que sei, se preencher o texto na página anterior, o meu output será o que preenchi, caso contrário, o output será "Algo falhou!", certo?

O que se passa, é que a 1ª situação confirma-se, mas se não preenceher nada, tenho como output uma págia vazia... O que se passa. Será erro estúpido de newbie??

Posted

experimenta assim:

<?php

//valida.php

$nome = $_POST['nome'];

if(!isset($nome)){
echo "Algo falhou";
}
else{
echo $nome;
}

a funcao isset, nao devolve 0 e 1, devolve sim um valor boleano (true, se a variável ta definida, e false se a variavel nao ta definida)

Proud LEIC-A@IST student!

Posted

...

a funcao isset, nao devolve 0 e 1, devolve sim um valor boleano (true, se a variável ta definida, e false se a variavel nao ta definida)

experimenta assim:

<?php

//valida.php

$nome = $_POST['nome'];

if(!isset($nome)){
echo "Algo falhou";   //Apenas devolve uma página em branco!!!!!
}
else{
echo $nome;
}

Estou a ficar maluco!!! Tenho isto alojado no Dreamhost logo dúvido que seja algo mal configurado...

Posted

estou a perder tempo que não tenho com este erro estúpido. Acho que vou optar por algo do género:


if ($_POST['name'] == null){

//código 

}
else{

//código

}

Depois com mais tempo e cabeça tento perceber o que está a falhar, muito embora não vejo o que possa ser. Já simplifiquei ao máximo o exemplo e mesmo assim não dá...!!!???

Obrigado a todos pelo feedback... Podem contar com mais uma ou outra pergunta de PHP entreetanto. 😛

Posted

os valores nos formularios, quer estejam preenchidos ou não, serão sempre enviados e definidos. ou seja, o teu campo "nome" se não estiver preenchido, não faz diferença ao isset() porque a variavel $_POST['name'] está definida, apenas não tem nenhum conteudo, é igual ao fazeres $bla = ""; a variavel $bla ira ficar definida, mas esta vazia.

ou seja, usa antes a função empty(). funciona da mesma forma, mas apenas vai verificar se a variavel tem conteudo ou esta vazia. se tiveres a certeza que a variavel $_POST['nome'] vai estar definida onde usares o empty(), então faz isso, directo, se poderá ou não estar indefinida, usa o isset() e dps o empty() tipo:

if(isset($var) && !empty($var)

Posted

os valores nos formularios, quer estejam preenchidos ou não, serão sempre enviados e definidos. ou seja, o teu campo "nome" se não estiver preenchido, não faz diferença ao isset() porque a variavel $_POST['name'] está definida, apenas não tem nenhum conteudo, é igual ao fazeres $bla = ""; a variavel $bla ira ficar definida, mas esta vazia.

ou seja, usa antes a função empty(). funciona da mesma forma, mas apenas vai verificar se a variavel tem conteudo ou esta vazia. se tiveres a certeza que a variavel $_POST['nome'] vai estar definida onde usares o empty(), então faz isso, directo, se poderá ou não estar indefinida, usa o isset() e dps o empty() tipo:

if(isset($var) && !empty($var)

Não é preciso colocar assim if(isset($var) && !empty($var)  pode-se simplesmente colocar if(empty($var)) { echo "ERRO"; }

Posted

Então deixem-me ver se percebi... Suponhamos que o meu form é enviado para ele próprio... Posso ter uma validação inicial if(isset()) para determinar se é a primeira vez que o form é visualizado, depois de submetido utilizo então o empty()?

De forma muito sucinta...

<?php

//form1.php

if (isset($_POST['nome'])){	
echo "<form name='form1' method='post' action='form1.php'>";

echo "input type='text' name='nome' value='' >";
...
echo "</form>";
}
elseif{
if(empty($_POST['nome'])){
echo "tem que preencher o nome...";
}
else{
echo "Olá ". $_POST['nome'];
}

?>

P.S. Não liguem muito ao código... hoje já não etou com muita cabeça para estas coisas... 😛

Posted

Não é preciso colocar assim if(isset($var) && !empty($var)  pode-se simplesmente colocar if(empty($var)) { echo "ERRO"; }

isso vai depender do error_reporting, eu na minha maquina tenho a reportar tudo, e ha muitos hosts que fazem o mesmo. se fizeres apenas o empty() sem validações anteriores a verificar se viste de tal form e caso n tenhas vindo, vais ter um notice a dizer que a variavel n esta definida...

Posted

Não é preciso colocar assim if(isset($var) && !empty($var)  pode-se simplesmente colocar if(empty($var)) { echo "ERRO"; }

isso vai depender do error_reporting, eu na minha maquina tenho a reportar tudo, e ha muitos hosts que fazem o mesmo. se fizeres apenas o empty() sem validações anteriores a verificar se viste de tal form e caso n tenhas vindo, vais ter um notice a dizer que a variavel n esta definida...

Nem mereces uma resposta 😛

Posted

não percebi, ms tasse

Eu disse que não mereces uma resposta porque estas a tentar mostrar que estas certo enquanto que estas errado.

Faz o seguinte cria um codigo simples que mostre um Warning só para eu ver

PS: O meu servidor tem error_reporting E_ALL.

Posted

AAAARRRRRRRGGGGGHHHHHHH!!!!!!  ?

Ando aqui a matar a cabeça  :wallbash: para tentar perceber porque é que o meu script para validar o meu conteudo não funciona quando o problema está no form!!!! ERRO estúpido de newbie!!!!!

Tinha:

<form action="valid.php" method="post">
...
4 <input name='f1.1' type='radio' value='4'> 
5 <input name='f1.1' type='radio' value='5'>  
6 <input name='f1.1' type='radio' value='6'>  
...
<input type='submit' name='Submit' value='Submit'> 

depois...

<?php
//valid.php

include('func.php');

valid($_POST['f1.1']);

?>

Tanto quanto sei, PHP não suporta pontos nos nomes das variáves e eu tinha "f1.1"

AAARRRGGGHHHHH!!!!! Por vezes a minha noobice irrita-me tanto!!!!!

Mudei o nome do input e violá... os meus teste já funcionam.

Agora só falta corrigir toda porcaria que fiz a tentar resolver este "erro" do PHP.  ?

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.