Eu tenho um formulário em uma página que envia para outra página. Lá, ele verifica se o e-mail de entrada está preenchido. Se sim, faça algo e se não estiver preenchido, faça outra coisa. Não entendo por que sempre diz que está configurado, mesmo que eu envie um formulário vazio. O que está faltando ou errado?
step2.php:
<form name="new user" method="post" action="step2_check.php">
<input type="text" name="mail"/> <br />
<input type="password" name="password"/><br />
<input type="submit" value="continue"/>
</form>
step2_check:
if (isset($_POST["mail"])) {
echo "Yes, mail is set";
} else {
echo "N0, mail is not set";
}
Respostas:
A maioria das entradas de formulário são sempre configuradas, mesmo se não forem preenchidas, portanto, você também deve verificar o vazio.
Como
!empty()
já verifica para ambos, você pode usar isto:fonte
!
operadora em casos como este (mais fácil de ler, menos chance de erro, etc.) e inverter a lógica ...if (empty()) {/* No */} else {/* Yes */}
Use em
!empty
vez deisset
. isset retorna true$_POST
porque$_POST
array é superglobal e sempre existe (set).Ou melhor usar
$_SERVER['REQUEST_METHOD'] == 'POST'
fonte
isset
e!empty
para evitar erros. EDIT: Opa, aparentemente aprende todos os dias, em seguida, Ref$_SERVER['REQUEST_METHOD']
garante que o usuário enviou o formulário.$_POST
pode estar vazio mesmo neste caso. Considere este formulário<form method="post"></form>
:, submetê-lo não enviará nada para a ação, mas o tipo de solicitação serápost
. Ou isso pode ser feito com a onda:curl -X POST http://example.com/processor.php
. Se o processador contém código comoecho $_SERVER['REQUEST_METHOD']. ' '.var_export(empty($_POST),1);
, você veráPOST true
De php.net , isset
o espaço vazio é considerado como definido. Você precisa usar empty () para verificar todas as opções nulas.
fonte
Se você enviar o formulário vazio, $ _POST ['mail'] ainda será enviado, mas o valor está vazio. Para verificar se o campo está vazio, você precisa verificar
fonte
Adicione o seguinte atributo para a forma de texto de entrada:
required="required"
. Se o formulário não for preenchido, não permitirá que o usuário o envie.Seu novo código será:
fonte
Você pode simplesmente usar:
Alternativamente, use empty ()
fonte
@
, ou seja:@$_POST['username']
. Obrigado por perceber isso.Use em
!empty()
vez deisset()
. Poisisset()
sempre retornará verdadeiro no seu caso.fonte
Talvez você possa tentar este:
fonte
fonte
Vamos pensar que este é o seu formulário HTML em step2.php
Eu acho que você precisa disso para o seu banco de dados, então você pode atribuir o seu valor de formulário HTML à variável php, agora você pode usar o Real Escape String e abaixo deve ser o seu
Onde $ db é sua conexão de banco de dados.
fonte
Verifique se o FORMULÁRIO foi enviado primeiro e, em seguida, o campo. Você também deve higienizar o campo para evitar hackers.
step2_check:
fonte
Para responder à pergunta postada: isset e empty juntos fornecem três condições. Isso também pode ser usado por Javascript com um comando ajax.
fonte
Você pode tentar isto:
fonte
fonte
Podes tentar,
fonte