Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

bioshock

Verificação de dados com imagem

Mensagens Recomendadas

bioshock

Boas,

Eu utilizo as seguintes linhas de código para fazer a verificação dos dados inseridos nas textboxs:

VerificaLogin.php

// Connection à base de dados; 
include ("connection.inc");

// Se o button for pressionado;
if (isset($_POST['button'])) {

// Verificamos se as Textboxs estão preenchidas;
if(!$_POST['Utilizador'] | !$_POST['Senha']){

	// Caso não estejam apresentamos um erro;
	echo "<script>alert('Por favor, preencha todos os campos.'); window.location=\"Login.php\"</script>";
}

// Para fazer o login com sucesso é necessário que os campos das textboxs, sejam idênticos às senhas abaixo descritas;
if($_POST['Utilizador'] == 'Admin' and $_POST['Senha'] == 'Admin'){

	// Fez login com sucesso!
	echo "<script>alert('Bem vindo Administrador!'); window.location=\"Admin.php\"</script>";

	// Caso contrário... 
}else{

	// Erro, verifique os seus dados de login;
	echo "<script>alert('Os dados que introduziu estão incorrectos'); window.location=\"Login.php\"</script>";
}
}

Onde, na segunda linha de código, o button tem de ser pressionado. Ok, mas eu decidi por uma imagem em vez do button, e utilizo este código:

Login.php

<img src="Imagens/1275922653_Go.png" width="30" height="26" style='cursor:pointer' onclick="location.href='VerificaLogin.php'"/>

O problema está em fazer a verificação dos dados pela imagem..pensei no entanto em atribuir à imagem o nome de "Button", mas sem sucesso.

Alguém me pode dar uma dica ? Tenho vasculhado pelo google mas não tem dado frutos.

Será melhor com uma Function() ?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

O button que tens no post é o nome do objecto e a tua imagem, além de não ter nome, não está a fazer post da informação do formulário.


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

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
softklin

Podes submeter o formulário através do evento submit do form, por javascript, ou criar uma tags input do tipo image, qu irá submeter o formulário. Ambos os métodos com exemplos:

http://www.webdevelopersnotes.com/tips/html/using_an_image_as_a_submit_button.php3


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

O button que tens no post é o nome do objecto e a tua imagem, além de não ter nome, não está a fazer post da informação do formulário.

Eu sei. Se leres o meu primeiro post eu fiz referência a esse aspecto. Já criei um nome para a imagem mas sem sucesso.

Podes submeter o formulário através do evento submit do form, por javascript, ou criar uma tags input do tipo image, qu irá submeter o formulário. Ambos os métodos com exemplos:

http://www.webdevelopersnotes.com/tips/html/using_an_image_as_a_submit_button.php3

Parece-me muito porreiro. Vou experimentar e assim que possa digo-te algo.

Obrigado a ambos.  :P

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Cooper41

Eu no projecto que estou a fazer estou a usar um input normal com uma class atribuida e podes personalizar o botão pela css.

<input class="button" type="submit" value="Submit" />

Não sei se é bem isto que queres saber

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Bem, eu tentei com o <input type>, mas sem sucesso, heis o código:

Login.php

 <input type="image" name="ClickIMG"  src="Imagens/1275922653_Go.png" width="30" height="26" style="cursor:pointer" onclick="location.href='VerificaLogin.php'"/>

VerificaLogin.php

<?php

// Se clicarmos no button..;
if(isset($_POST['ClickIMG'])){

// Para fazer o login com sucesso é necessário que os campos das textboxs, sejam idênticos às senhas abaixo descritas;
if($_POST['Utilizador'] == '1' and $_POST['Senha'] == '1'){

	// Fez login com sucesso!
	echo "<script>alert('Bem vindo Administrador!'); window.location=\"Admin.php\"</script>";

	// Caso contrário... 
		}else{

	// Erro, verifique os seus dados de login;
	echo "<script>alert('Os dados que introduziu estão incorrectos'); window.location=\"Login.php\"</script>";
}
}
?>

O problema é que ele não detecta o "ClickIMG" como button.  :P

Obrigado!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Não estás a fazer submit. Isso já te foi indicado anteriormente.


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

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Não estás a fazer submit. Isso já te foi indicado anteriormente.

Mas nesta linha de código colocar o submit?

<input type="image" name="ClickIMG"  src="Imagens/1275922653_Go.png" width="30" height="26" style="cursor:pointer" onclick="location.href='VerificaLogin.php'"/>

Eu já experimentei utilizar "Submit.this.form", é a isso que te referes?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
softklin

Com tudo isto, estamos a supor que estás a por esse botão entre as tags form. Não precisas de colocar o javascript para redireccionar, pois dessa forma não vão ser enviados dados. Em princípio, o clique na imagem é suficiente para desencadear o processo de envio do formulário.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

[...]

Eu já experimentei utilizar "Submit.this.form", é a isso que te referes?

Sim. Tens de fazer submit, mas não é submit.this.form, mas sim this.form.submit.

E como o softclean disse, estamos a supor que tens isso dentro de um form.


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

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Sim claro. Tenho isto dentro de um form. Eu vou experimentar com o this.form.submit. De resto, mantenho na mesma o:

if(isset($_POST['ClickIMG'])){ ...

Correcto?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Sim.


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

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Não funciona. O que estou a fazer mal?  :wallbash:

Login.php

 <form id="form1" name="form1" method="post" action="VerificaLogin.php">
    <p>

    </p>
    <p>
      <label><span class="Bold">U</span>sername:
<input type="text" name="Utilizador" id="textfield" />
      </label>
    </p>
    <p>
      <label><span class="bold">P</span>assword:
<input name="Senha" type="password" id="textfield2" />
      </label>
    </p>
    <p>
      <label>
        <input name="ClickIMG" type="image" src="Imagens/1275922653_Go.png" onclick="this.form.submit" />
      </label>
    </p>
  </form>

VerificaLogin.php

<?php

// Se clicarmos no button..;
if(isset($_POST['ClickIMG'])){

// Se as textboxs não tiverem dados dá erro;

if(!$_POST['Utilizador'] | !$_POST['Senha']){

	// Fez login com sucesso!
	echo "<script>alert('Por favor preencha os campos'); window.location=\"Login.php\"</script>";

}
// Para fazer o login com sucesso é necessário que os campos das textboxs, sejam idênticos às senhas abaixo descritas;
if($_POST['Utilizador'] == '1' and $_POST['Senha'] == '1'){

	// Fez login com sucesso!
	echo "<script>alert('Bem vindo Administrador!'); window.location=\"Admin.php\"</script>";

	// Caso contrário... 
		}else{

	// Erro, verifique os seus dados de login;
	echo "<script>alert('Os dados que introduziu estão incorrectos'); window.location=\"Login.php\"</script>";
}
}
?>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
softklin

Experimentei, e não precisas de colocar o javascript, porque o botão por si já envia o formulário.

Agora, existe uma questão: AO enviar os dados, o nome do botão não é enviado. Em vez disso, são enviados dois campos, com os nomes <nomedobotao>.x e <nomedobotao>.y. Este são as coordenadas em X e Y correspondentes ao local onde o teu botão foi clicado.

(no teu caso deve ser enviado ClickIMG.x e ClickIMG.y). Cria um script à parte e faz um

print_r($_POST);

para confirmares isso.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Fiz o que me pediste e apareceu:

Array ( [utilizador] => [senha] => [ClickIMG_x] => 20 [ClickIMG_y] => 7 )

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
taviroquai

Esse é o resultado quando não se preenchem os campos Utilizador e Senha e apenas clicas na imagem.

Para o código PHP não vai funcionar porque no PHP estás a testar a variavel $_POST['ClickIMG'] e essa é nula... o que estás a receber são $_POST["ClickIMG_x"] e $_POST["ClickIMG_y"] :thumbsup:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
softklin

Não, simplesmente quer dizer que o campo que pretendes verificar não se chama 'ClickIMG', mas são enviados dois campos com os nomes 'ClickIMG_x' e 'ClickIMG_y'.

Ou, no final de contas, se quiseres simplificar, podes apenas verificar se o array $_POST está ou não vazio, ou seja,

if (!empty($_POST)) {
   // O utilizador caregou no botao de enviar dados
}

Funciona de igual forma, sem que te tenhas de preocupar com os nomes dos campos.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.