Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: teudiss en 19 Marzo 2010, 12:07 pm



Título: Boton solo me funciona con click
Publicado por: teudiss en 19 Marzo 2010, 12:07 pm
Hola, cuando hago click en el boton si funciona pero cuando pulso enter no funciona, he visto que hay un script en javascript para solucionarlo, pero se puede solucionar con codigo php ?

Os muestro el codigo, es para buscar una cadena de texto en una tabla.

buscar.php
Citar
<form id="form1" method="post" action="busqueda.php">
<input name="palabra" type="text" id="palabra" />
<input name="buscador" type="submit" id="buscador" value="Buscar" />
 
</form>

busqueda.php

Citar
if ($_POST['buscador'])
{  

$buscar = $_POST['palabra'];


if(empty($buscar))
{
echo "No se ha ingresado una cadena a buscar";
}else{
// Conexión a la base de datos y seleccion de registros
$con=mysql_connect("localhost", "root", "torero");
$sql = "SELECT * FROM alumnos WHERE chicos like '%$buscar%' ORDER BY id DESC";
mysql_select_db("colegio", $con);  

$result = mysql_query($sql, $con);  


$total = mysql_num_rows($result);

// Imprimimos los resultados
if ($row = mysql_fetch_array($result)){  
echo "Resultados para: <b>$buscar</b>";
do {  




} while ($row = mysql_fetch_array($result));  
echo "<p>Resultados: $total</p>";
} else {  
// En caso de no encontrar resultados
echo "No se encontraron resultados para: <b>$buscar</b>";  
}
}
}
?>


Título: Re: Boton solo me funciona con click
Publicado por: Castg! en 19 Marzo 2010, 13:58 pm
Código
  1. <script type="text/javascript">
  2. function submit(flota) {
  3.   evento = window.event;
  4.   if(evento.keycode==13) {
  5.      flota.submit();
  6.   }
  7. }
  8. <form id="form1" method="post" action="busqueda.php" onkeypress="submit(this.form);">
  9. <input name="palabra" type="text" id="palabra" />
  10. <input name="buscador" type="submit" id="buscador" value="Buscar" />
  11. </form>

eso te sirve4??


Título: Re: Boton solo me funciona con click
Publicado por: teudiss en 19 Marzo 2010, 14:04 pm
Código
  1. <script type="text/javascript">
  2. function submit(flota) {
  3.   evento = window.event;
  4.   if(evento.keycode==13) {
  5.      flota.submit();
  6.   }
  7. }
  8. <form id="form1" method="post" action="busqueda.php" onkeypress="submit(this.form);">
  9. <input name="palabra" type="text" id="palabra" />
  10. <input name="buscador" type="submit" id="buscador" value="Buscar" />
  11. </form>

eso te sirve4??
Pues no lo se, por que cuando ejecuta un script de este tipo el navegador muestra un mensaje para que acepte o algo asi, por eso preguntaba si es posible en php.


Título: Re: Boton solo me funciona con click
Publicado por: Castg! en 20 Marzo 2010, 00:07 am
no:S en php va a ser imposbile ya que eso se ejecuta en el servidor y no en el cliente, ademas, el php se ejecuta y devuelve, una vez que devuelve (se muestra la pagina en el cliente) el servidor deja de interactuar. igualmente el codigo que yo te di no es generalizado para todos los navegadores.


Título: Re: Boton solo me funciona con click
Publicado por: teudiss en 20 Marzo 2010, 10:43 am
Hola, ya me funciona es omitiendo esta linea:
Citar
if ($_POST['buscador'])


$buscar = $_POST['palabra'];


if(empty($buscar))
{


Por esta otra, es decir quitarle el valor al boton

 
Citar
if  isset($_POST['palabra']) && !empty($_POST['palabra']))


Gracias por todo.


Título: Re: Boton solo me funciona con click
Publicado por: Castg! en 20 Marzo 2010, 13:46 pm
solo por eso? :o


Título: Re: Boton solo me funciona con click
Publicado por: ~ Yoya ~ en 20 Marzo 2010, 19:51 pm
Código
  1. if  isset($_POST['palabra']) && !empty($_POST['palabra']))

Que haces man jajaja, con esto basta:
Código
  1. if(!empty($_POST['palabra']))


Título: Re: Boton solo me funciona con click
Publicado por: teudiss en 22 Marzo 2010, 11:42 am
solo por eso? :o

Si, el boton no tiene que tener valor alguno.

Citar
if  isset($_POST['palabra']) && !empty($_POST['palabra']))

Que haces man jajaja, con esto basta:
Código
if(!empty($_POST['palabra']))

Si, cierto, no se por que lo puse asi.


Título: Re: Boton solo me funciona con click
Publicado por: haxple en 22 Marzo 2010, 12:04 pm


busqueda.php

Citar

$buscar = $_POST['palabra'];


$sql = "SELECT * FROM alumnos WHERE chicos like '%$buscar%' ORDER BY id DESC";

SQL Injection my friend.. Mas cuidadoso :)

Saludos


Título: Re: Boton solo me funciona con click
Publicado por: WHK en 22 Marzo 2010, 19:58 pm
Código
  1. $sql = "
  2. SELECT * FROM alumnos
  3. WHERE chicos like '%".
  4. str_replace('%', '\\%', mysql_real_escape_string($buscar)).
  5. "%' ORDER BY id DESC
  6. ";

Recuerda que alguien puede insertar un carácter % y causar una denegación de servicio por agotamiento de recursos al intentar volcar toda la tabla de contenido de alumnos si esta es demasiada extensa.

Te recomiendo también hacer un paginador para que le pongas un ímite a la busqueda porque igual alguien puede insertar una letra común como una "a" y volcar tantos resultados que tu servidor quedará a merced de cualquier atacante.