Posted by : Unknown jueves, 11 de abril de 2013

Buscador tipo Google (Nivel: Muy fácil) [Parte 1]



Atención: Se necesita tener un poco de conocimiento PHP y MySQL y bastante ganas de aprender.

Aquí se explicará como buscar datos dentro de las tablas MySQL, según la palabra que usted halla introducido en el formulario. Mientras avanzamos de nivel, nuestro buscador tendrá más seguridad, le quitaremos vulnariblidades y tomará casi el estilo de Google, pero por ahora solo veremos como se consulta datos según la palabra(s) ingresada. Por eso le pondremos Nivel fácil.

En el transcurso del tutorial usaremos Javascript y mucho CSS si queremos personalizar nuestro buscador.

Copia en el bloc de notas este código y guardalo con extension .sql

Para la base de datos

CREATE DATABASE google;

Para las tablas




CREATE TABLE registro(

id int(255)  primary key auto_increment,
Nombre varchar(100) ,
Descripcion text(30) ,
URL text(30) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL

);


OJO: Debes saber como importar archivos con extensión .sql en el phpMyAdmin

Lo primero que tenemos que crear un archivo que nos conecte con el servidor y con la base de datos.

Conexion.php

<?php

$Conexion = mysql_connect('localhost', 'root', '') or die("No se pudo conectar con el servidor");

mysql_select_db('google', $Conexion) or die ("No se pudo seleccionar a la base de datos");

?>

Ahora la pagina de inicio

index.php

<?php
require_once 'Conexion.php';
@$Buscar = $_GET['Buscar'];
    
?>
<html>
    <body>
    <head>
        <title><?php echo $Buscar; ?> - Mi buscado tipo Google</title>
    </head>
    <h1>Mi buscador tipo Google</h1>
    
<form method="GET" action=""
    Buscar:<input type="text" name="Buscar" value="<?php echo $Buscar; ?>" />
    <br />
    <input type="submit" value="Buscar" />
    <br />
    <b>Usted quizo encontrar --> </b><?php echo $Buscar; ?>
    <tr>
        <td>
            <?php
            
           
            if($Buscar == NULL)
            {
                echo "El campo esta vacio";
            }
            else
            {
           
            $Busqueda = "SELECT * FROM paginas WHERE Nombre LIKE '%$Buscar%' OR URL LIKE '%$Buscar%'";
            $Resultado = mysql_query($Busqueda);
            $Numero_De_Resultados = @mysql_num_rows($Resultado);
            
            if($Numero_De_Resultados < 1)
                echo "No hubo resultados";
            else
            {
               
                $Inicio = 0;
            while (($Fila = @mysql_fetch_array($Resultado)) && ($Inicio < 10)) 
            {
                $Nombre = $Fila['Nombre'];
                $URL = $Fila['URL'];
                $Descripcion = $Fila['Descripcion'];
                echo "<h1><a target='_blank' href='$URL'>".$Nombre."<a><h1>";
                echo "<br />".$URL."<br />";
                echo "<br />".$Descripcion."<br />";
                $Inicio++;
            }
            }
            }
            
            ?>
            
            
        </td>
    </tr>
    <tr>
<td>

</form>

   
    </body>
</html>

Para ir agregando las paginas web que queramos.

agregar.php

<?php 
require_once 'Conexion.php';
@$Nombre_web = $_POST['Nombre'];
@$URL_web = $_POST['URL'];
@$Descripcion_web = $_POST['Descripcion'];
if($_POST)
{
   if($Nombre_web == "")
   {
       echo "No has ingresado el <b>nombre</b> de la pagina web a agregar";
   }
   elseif($URL_web == "")
   {
       echo "<br />No has ingresado la <b>URL</b> de la pagina web a agregar";
   }
   elseif($Descripcion_web == "")
   {
       echo "<br />No has ingresado la <b>descripcion</b> de la pagina web a agregar";
   }
  else
  {
   $Guardando = "INSERT INTO paginas (Nombre, Descripcion, URL) ".
     "VALUES ('".$_POST['Nombre']."', '".$_POST['Descripcion']."', '".$_POST['URL']."')";
   
   mysql_query($Guardando);
   echo 'Se ha guardado satisfactoriamente<br />';
   echo '<a href="index.php">Volver a al buscador y comprobar la busqueda</a>';
   exit();
}
}

?> 
<html>
    <body>  
    <head>
        <title>Agregar paginas web</title>
    </head>
<form method="POST" action="">
    
    <label>Nombre de la pagina:</label>
    <br />
    <input type="text" name="Nombre" value="<?php echo $Nombre_web; ?>">
    <br />
    <label>URL:</label>
    <br />
    <input type="text" name="URL" value="<?php echo "http://".$URL_web; ?>">
    <br />
    <label>Descripcion:</label>
    <br />
    <textarea name="Descripcion"><?php echo $Descripcion_web; ?></textarea>
    <br />
    <input type="submit" value="Registrar pagina web" />
    
</form>
    </body>
    </html>

Bien en el index.php dentreo de la etiqueta title hay un código php, como se muestra:

<title><?php echo $Buscar; ?> - Mi buscado tipo Google</title>

El código <?php echo $Buscar; ?> lo que hace es mostrar la palabra que ingresastes en el campo donde vas a buscar  la información.

Ejemplo: Si coloco en el campo de búsqueda "Hola" (Sin las comillas)

Damos en la tecla ENTER para buscar, y veremos en la pestaña la palabra que ingresamos, vean la imagen 

Como pueden apreciar, cada palabra que ingresemos saldrá en también en la pestaña al estilo Google.

Dentro del atributo value de los código HTML se encuentra un código PHP, como este el de campo buscar.

Buscar:<input type="text" name="Buscar" value="<?php echo $Buscar; ?>" />

Como se muestra en la imagen (Dale click a la imagen)



Bueno este código nos sirve para conservar la palabra ingresada, como vemos en las imagenes


Le damos ENTER y como vemos se conserva lo ingresado

Como ven conserva los datos ingresados.

bien, porque digo que este código no es seguro porque si ingresamos en el campo Buscar, el código PHP interpretará el código en lugar de interpretarlo como cadena. (Cómo se ve en la imágen)

O al ingresar este codigo

<img src="http://3.bp.blogspot.com/_DBYD6pU6CK8/S94-JLaObiI/AAAAAAAAAFQ/bWjlhdGGLRY/s400/guason-heath-ledger-300x350.jpg">

Lo interpretara como URL de la imagen (Dale click a esta imagen para verla mejor)


Este ataque se llama injection XSS

Como ven todavía no es seguro usar el código, lo cual mas adelante en el segundo tutorial veremos como evitar esto tipo de fallas.


{ 7 comentarios ... read them below or Comment }

  1. oye tengo un probela no encuentra nada y ya no dice que alla ningun error con la conexion alguna idea de por que sea?

    ResponderEliminar
    Respuestas
    1. Escribe bien tu pregunta, porque no te entendí.

      Eliminar
    2. ok es que estaba muy acelerado hace rato el problema es que ya conecte la base de datos ya vi que los campos y la tabla sean las corretas y ya agregue un registro a la base de datos pero cuando busco ese unico registro me dice "No hubo resultados" ya lo intente tambien con el enlace nada alguna idea de por que sea?

      Eliminar
    3. elimina los / que estan en: Nombre LIKE /'%$Buscar%'/

      "SELECT * FROM paginas WHERE Nombre LIKE /'%$Buscar%'/ OR URL LIKE '%$Buscar%'";

      y te quedará

      "SELECT * FROM paginas WHERE Nombre LIKE '%$Buscar%' OR URL LIKE '%$Buscar%'";

      Eliminar
    4. muchisimas gracias por la ayuda

      Eliminar
  2. Hola soy principiante, pero me gustaria saber como hacer lo siguiente: Tengo una base de datos con varias tablas, digamos que una tabla de empresas, al hacer la consulta me arroja todas las empresas registradas en la tabla, y las muestra en una ">TR>" y en el campo de IDEmpresa le agregue un href para que cuando de clic en cualquier IDempresa de la primera consulta, nos lanse otra consulta y nos aparesca la informacion relacionada a esa empresa, espero me haya explicado y me puedan ayudar, gracias

    Nota. Tube que cambiar la etiqueta TR para que me dejara ponerla

    ResponderEliminar

Werneriabits - La era de la información

Busqueda

Flakreath Chat

El Magistrado. Con la tecnología de Blogger.

Síguenos en Facebook

Suscribite vía Email:

Introduce tu Email:

- Copyright © WerneriaBits - La era de la información - werneriabits.com -