teclado virtual com php-mysql

Fez aquele sistema legal e quer disponibilizar para outros usuários Essa é a seção correta para isso.

Moderador: web

responder a dúvida

teclado virtual com php-mysql

Mensagem por Bluebird Offline » Seg Jun 28, 2010 12:08 pm

Segue código de teclado virtual usando PHP/MySQL para a inserção de senhas:

Crie um banco de dados com o nome teclado_virtual_php_1 e insira a seguinte tabela:

Código: Selecionar todos
# Banco de Dados : `teclado_virtual_php_1`
# --------------------------------------------------------

#
# Estrutura da tabela `usuarios`
#

CREATE TABLE usuarios (
  id int(10) NOT NULL auto_increment,
  usuario varchar(255) NOT NULL default '',
  senha varchar(255) NOT NULL default '',
  KEY id (id)
) TYPE=MyISAM;

#
# Extraindo dados da tabela `usuarios`
#

INSERT INTO usuarios VALUES (1, 'teste', 'abc909090');

Crie um arquivo chamado configuracao_mysql.php e cole o seguinte código:

Código: Selecionar todos
<?
$db_host = "localhost";
$db_username = "root";
$db_password = "";
$db_name = "teclado_virtual_php_1";
$site_url = "http://localhost/teclado_virtual_php_1";

$base = mysql_connect("localhost","root","") or die(mysql_error());
$connection = mysql_connect($db_host, $db_username, $db_password) or die(mysql_error());

$db = mysql_select_db($db_name, $connection);

session_start();

$t = time();
?>

Crie um arquivo chamado teclado_virtual.php e cole o seguinte código:

Código: Selecionar todos
<?
require_once('configuracao_mysql.php');

// verificando pelo get se a senha é igual à do banco
$colname_usuarios = "-1";
if (isset($_GET['display'])) {
  $colname_usuarios = (get_magic_quotes_gpc()) ? $_GET['display'] : addslashes($_GET['display']);
}
// fazendo o select na senha recuperada do get
mysql_select_db($database_testes);
//mysql_select_db($database_testes, $testes);
$query_usuarios = sprintf("SELECT * FROM usuarios WHERE senha = '%s'", $colname_usuarios);
$usuarios = mysql_query($query_usuarios) or die(mysql_error());
//$usuarios = mysql_query($query_usuarios, $testes) or die(mysql_error());
$row_usuarios = mysql_fetch_assoc($usuarios);
$totalRows_usuarios = mysql_num_rows($usuarios);

// mantendo os dados digitados no teclado, no display
$enviar       = $_GET['Submit'];
$display      = $_GET['display'];
$submitaction = $_GET['Submitaction']; 

$display = $display . $enviar;

// verificando se a senha é igual à do banco.
$senha=$row_usuarios['senha'];

// se for diferente de vazia:
if ($submitaction != null) {

// e igual à ação de apagar, apaga tudo o que estiver no display
   if ($submitaction=='Apagar')
   {   $display=""; }
// se for igual à ação de entrar, ou logar:
   elseif ($submitaction=='Entrar')
   {   if ($display==$senha) // verifica se o que está no display é igual à variável $senha, que é igual ao campo senha do banco de dados
// se for igual, mostra o nome do usuário, e uma mensagem
       { 
      if($_GET['display'] != ''){
      echo "<center>Olá ".$row_usuarios['usuario']." - Sua senha está correta!<br>Redirecionando... </center>";
      $display="";
      }
      }
// se for diferente, manda o aviso
       else
      
       { 
      if($_GET['display'] != ''){
      echo '<center>Sua senha está incorreta, tente novamente!</center>';
      $display="";
      }
      }
   }
}


?><head>
<style>
.style2 {text-align:center; background:#ffffff; border-width:1; border-color:#000000;font-family: arial; font-size: 11px; color: #000000; font-weight: bold; cursor:hand;}
.borda {  border-color : #000000;
  border-style : solid;
  border-width : 1px; }

</style>
</head>
<!-- aqui tem o formulário do teclado -->

<blockquote>
  <form name="form1" method="get" action="">
    <table width="200" height="20" align="center" cellpadding="0" cellspacing="0">
    <tr>
     <td><input name="display" type="password" onKeyPress="return false" value="<? print $display; ?>" size="27"></td>
      </tr>
        </table>
        <table><tr><td height="2"></td></tr></table>
        <table width="200" align="center" border="0" class="borda">
        <tr align="center"><td><table align="center"><tr>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="1"></td>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="2"></td>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="3"></td>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="4"></td>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="5"></td>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="6"></td>
          <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="7"></td>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="8"></td>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="9"></td>
          <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="0"></td>
        </tr></table></td></tr>
          <tr align="center"><td><table align="center"><tr>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="q"></td>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="w"></td>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="e"></td>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="r"></td>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="t"></td>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="y"></td>
          <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="u"></td>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="i"></td>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="o"></td>
          <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="p"></td>
        </tr></table></td></tr>
        <tr align="center"><td><table align="center"><tr>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="a"></td>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="s"></td>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="d"></td>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="f"></td>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="g"></td>
          <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="h"></td>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="j"></td>
            <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="k"></td>
          <td width="20" height="20" align="center"><input name="Submit" type="submit" class="style2" value="l"></td>
        </tr></table></td></tr>
        <tr align="center"><td><table align="center"><tr>
            <td align="center"><input name="Submit" type="submit" class="style2" value="z"></td>
            <td align="center"><input name="Submit" type="submit" class="style2" value="x"></td>
            <td align="center"><input name="Submit" type="submit" class="style2" value="c"></td>
            <td align="center"><input name="Submit" type="submit" class="style2" value="v"></td>
            <td align="center"><input name="Submit" type="submit" class="style2" value="b"></td>
            <td align="center"><input name="Submit" type="submit" class="style2" value="n"></td>
            <td align="center"><input name="Submit" type="submit" class="style2" value="m"></td>
        </tr></table></td></tr>
        </table>
        <table width="316" align="center" border="0">
          <tr>
            <td width="50%" align="left"><input name="Submitaction" type="Submit" class="style2" value="Apagar"></td>
            <td width="50%" align="right"><input name="Submitaction" type="submit" class="style2" value="Entrar"></td>
          </tr>
        </table>

  </form>
</blockquote>
<?php
// libera o mysql da consulta realizada anteriormente, nunca esqueça disso..rs
mysql_free_result($usuarios);
?>

Eu adaptei o código a partir do contido no seguinte link: http://www.revistaphp.com.br/artigo.php?id=72. Poderá ser melhorado, inclusive layout e segurança, ficando à disposição para contribuições nesse sentido.



detalhes...


Bluebird
SUPER VETERANO
SUPER VETERANO
Mensagens: 424
Registrado em: Seg Fev 16, 2009 11:15 am


teclado virtual com php-mysql

Mensagem por web Offline » Seg Jun 28, 2010 1:30 pm

Testei só o html, sem o banco de dados, mas não entendi porque a cada clicar na tecla dá um submit no documento.

detalhes...

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.

Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb [@] hotmail [.] com

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 11904
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil

teclado virtual com php-mysql

Mensagem por Bluebird Offline » Seg Jun 28, 2010 8:10 pm

Isso eu também não sei, mas é porque sou leigo. Mas teste com o banco de dados. Está funcionando. Eu queria saber se é seguro. Naquele link que passei, após os artigos tem os comentários, e teve um cara que detonou com o script e com quem o postou. Há uma coisa que achei interessante: nos navegadores em que testei, a inserção de dados pelo teclado do computador foi bloqueada. Faça um teste com o bd para vê-lo funcionar. Eu gostaria de saber se o código é seguro.

detalhes...


Bluebird
SUPER VETERANO
SUPER VETERANO
Mensagens: 424
Registrado em: Seg Fev 16, 2009 11:15 am


teclado virtual com php-mysql

Mensagem por web Offline » Seg Jun 28, 2010 8:29 pm

Não achei seguro, até porque cada vez que é feito um submit, a link, no caso, as senha que estão sendo passadas vão ficando no histórico. O correto era não ter o refresh no documento. O teclado poderia ser igual o que postei no link abaixo

Teclado-Virtual_13_319.html

Seria só adaptar nele a conexão com o banco de dados.

detalhes...

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.

Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb [@] hotmail [.] com

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 11904
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil

teclado virtual com php-mysql

Mensagem por Bluebird Offline » Seg Jun 28, 2010 8:51 pm

Ontem, eu copiei o script de seu teclado e o testei. Mas uma coisa está pegando. O Google colocou um teclado virtual em sua home, que você o acessa ao clicar num ícone (um tecladinho) dentro do campo input. Eu não quero que o teclado fique a todo momento aparente. Há pouco, eu encontrei um código em que há tal ícone, mas fora do input, que me serve (http://www.greywyvern.com/code/javascript/keyboard). Acho que foi em seu site, vi um código em js para bloquear o teclado do computador. Acho que vou usá-lo para bloquear o teclado da máquina e forçar o usuário a usar apenas o teclado virtual para a inserção de senha. O que você acha? Esse negócio de teclado virtual atrapalha a quem quer fazer mau uso do site, ou é apenas para inglês ver?

detalhes...


Bluebird
SUPER VETERANO
SUPER VETERANO
Mensagens: 424
Registrado em: Seg Fev 16, 2009 11:15 am


teclado virtual com php-mysql

Mensagem por web Offline » Seg Jun 28, 2010 8:55 pm

Hoje em dia tem que ter segurança em tudo, e existe várias formas para isso: captcha, validação, teclado virtual, etc...

Você tem que avaliar a necessidade da proteção e escolher um desses. Só não pode deixar uma área que é importante do site desprotegida.

detalhes...

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.

Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb [@] hotmail [.] com

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 11904
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil

teclado virtual com php-mysql

Mensagem por Bluebird Offline » Seg Jun 28, 2010 9:05 pm

Coloquei os três itens que você referiu. Eu acessei um site, procurando pelo teclado virtual, em que havia uns comentários, e um cara ridicularizava o teclado virtual. Era um post já antigo, creio que de 2004. Naquela época eles ofereciam menos resistência do que hoje? Ou o teclado virtual é fácil de ser burlado para quem sabe?

detalhes...


Bluebird
SUPER VETERANO
SUPER VETERANO
Mensagens: 424
Registrado em: Seg Fev 16, 2009 11:15 am


teclado virtual com php-mysql

Mensagem por web Offline » Seg Jun 28, 2010 9:19 pm

Eu acho que alguns sistemas de spam conseguem burlar um captcha, agora, teclado virtual eu acho difícil, até porque ele é usado para comparar a senha digitada com uma gravada. De qualquer forma, é sempre bom fazer uma validação dos dados digitados também antes de comparar ou inserir no banco de dados.

detalhes...

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.

Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb [@] hotmail [.] com

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 11904
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil

teclado virtual com php-mysql

Mensagem por Bluebird Offline » Ter Jun 29, 2010 5:55 pm

Vou usar o teclado virtual do link que informei atrás, em js. Eu gostaria que no campo em que utilizarei o teclado virtual fosse desabilitado o teclado da máquina. Eu cheguei a ver um código que bloqueava o teclado, não me recordo se neste site, mas acredito que não guardei o link. Tem como fazer o que pretendo?

detalhes...


Bluebird
SUPER VETERANO
SUPER VETERANO
Mensagens: 424
Registrado em: Seg Fev 16, 2009 11:15 am


teclado virtual com php-mysql

Mensagem por web Offline » Ter Jun 29, 2010 5:59 pm

É só você colocar o readonly no input que já não permite entrada de dados no input pelo teclado.

detalhes...

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.

Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb [@] hotmail [.] com

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 11904
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil

teclado virtual com php-mysql

Mensagem por Bluebird Offline » Qua Jun 30, 2010 10:41 am

Dei uma pesquisada, mas encontrei várias formas: apenas escrito readonly; readonly="true"; readonly="readonly". Qual a correta?

detalhes...


Bluebird
SUPER VETERANO
SUPER VETERANO
Mensagens: 424
Registrado em: Seg Fev 16, 2009 11:15 am


teclado virtual com php-mysql

Mensagem por Bluebird Offline » Qua Jun 30, 2010 10:52 am

Eu coloquei readonly="true" no input (não sei se está certo). No Opera e no Safari os dados não são enviados. Apenas nos FF e no IE. Está certa a forma como coloquei?

detalhes...


Bluebird
SUPER VETERANO
SUPER VETERANO
Mensagens: 424
Registrado em: Seg Fev 16, 2009 11:15 am


teclado virtual com php-mysql

Mensagem por web Offline » Qua Jun 30, 2010 2:47 pm

Vou verificar aqui no Opera.

detalhes...

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.

Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb [@] hotmail [.] com

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 11904
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil

teclado virtual com php-mysql

Mensagem por Bluebird Offline » Qua Jun 30, 2010 2:49 pm

Eu achei algo com jQuery, mas não sei como chamar a função. Posso te passar os links? Geralmente, o que se faz em jQuery é cross browser, em sua maioria.

detalhes...


Bluebird
SUPER VETERANO
SUPER VETERANO
Mensagens: 424
Registrado em: Seg Fev 16, 2009 11:15 am


teclado virtual com php-mysql

Mensagem por web Offline » Qua Jun 30, 2010 2:53 pm

Instalei o Opera aqui, e funcionou o readonly assim

readonly="readonly"

detalhes...

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.

Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb [@] hotmail [.] com

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 11904
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil

Próximo

responder a dúvida

Voltar para Laboratório de scripts PHP / MySQL

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante