• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

PaLobo

Validar user input via PHP

15 mensagens neste tópico

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens que colocar

if(!isset($_POST['valor'])) { 
die( 'Não selecionou xxxx' );
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

...

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...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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"; }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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... :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

AAAARRRRRRRGGGGGHHHHHHH!!!!!!  :mad:

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.  :-[

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora