Buscador


En todo Internet
En Uterra.Com

Contenidos


Para trabajar con bases de datos, lo primero que tenemos que hacer es guardar datos en una de las tablas de nuestra base de datos. Así en nuestra base de datos hemos creado una tabla con 4 campos, que son:

id – de tipo numérico (int) y autoincremental y nos servirá de clave primaria de la tabla.

nombre – de tipo varchar con 25 caracteres

email - de tipo varchar con 50 caracteres

fecha - de tipo varchar con 25 caracteres

Esta es una tabla muy sencilla, pero lo suficiente para explicar como se guardan los datos en la tabla de la base de datos.

Una vez tenemos nuestra base de datos con nuestra tabla ya creada, configuramos los archivos de conexión a la base de datos, tal y como ya explicamos aquí.

Es importante destacar, que dado que el id es de tipo autoincremntal, no hace falta enviarle ese dato a la tabla de base de datos, ya que los valores autoincrementales los genera la misma tabla cuando se realiza un registro.

Para introducir los datos, lo primero que necesitamos es un formulario que nos permita recoger los datos. Este formulario lo enviaremos por el método POST a la página que guardará los datos, en nuestro caso, registra.php.

La página que registra los datos - registra.php - contiene en primer lugar la recepción de las variables por POST, hemos extraído la fecha mediante la función – date – y la hemos guardado en la variable fecha. En segundo lugar, mediante include, accedemos al archivo de apertura y cierre de conexión de la base de datos. Por supuesto, ni que decir tiene que la apertura debe estar antes de la consulta a la base de datos, y el cierre, estará después de la consulta a la base de datos.

La variable - $_GRABAR_SQL - contiene la consulta que propiamente guarda los registros en la base de datos. Mediante – insert into – y la variable que contiene el nombre de la tabla especificamos el nombre de los campos donde guardaremos los datos. Tras ese paréntesis, nombramos las variables que contienen los valores que guardaremos en los mencionados campos.

Por ultimo, mostramos un mensaje que indica que los datos se han guardado correctamente.

 

Ampliación del código de registro de datos:

El código presentado, si bien es correcto, tiene un gran problema, y es que no protege la entrada de datos, por lo que cualquier usuario malintencionado puede tratar de sabotear el funcionamiento de nuestra Web, lo que no es deseable.

Aunque la base de datos que usamos para las demostraciones es independiente de la que gestiona el funcionamiento de esta Web, se ha decidido agregar algunas medidas elementales de protección de los registros dados los ataques sufridos, que por otro lado, a tratarse de una base de datos independiente, no han afectado en medida alguna al funcionamiento de esta Web.

Se han tomado dos medidas de protección muy elementales, una de ellas obliga a los usuarios a cumplimentar los dos campos, para ello contamos los caracteres introducidos en cada campo, nombre y email, si el  producto de esos valores es 0, es por que algunos de los valores es cero. La variable $total_car, es la que contabiliza este producto.

La otra protección afecta a la base de datos propiamente dicha, ya que impide guardar etiquetas de código, como iframes, habiendo sido estas los ultimas detectadas. Esto lo hacemos con la función de PHP strip_tags(), que por su sencillez de uso, puede ser fácilmente implementada en nuestros códigos.

Ofrecemos el código original, y el nuevo código (2), que es el que está activo en la demo y solo agrega unas pequeñas, pero esenciales medidas de seguridad.


El código es el siguiente:

<html>  

<head>  
<title>Guardar datos en una base de datos</title>  
</head>  

<body>  

<form method="POST" action="registra.php">  

    <p>Nombre: <input type="text" name="nombre" size="20"></p>  
    <p>E-mail: <input type="text" name="email" size="20"></p>  
      
    <p><input type="submit" value="Guardar datos" name="B1"></p>  
      
</form>  

</body>  

</html>  

========================================  
========= registra.php  

<html>  

<head>  
<title>Guardamos los datos en la base de datos</title>  
</head>  

<body>  
<?php  

// Recibimos por POST los datos procedentes del formulario  

$nombre $_POST["nombre"];  
$email $_POST["email"];  
$fecha date("d-m-Y");  

// Abrimos la conexion a la base de datos  
include("abre_conexion.php");  

$_GRABAR_SQL "INSERT INTO $tabla_db1 (nombre,email,fecha) VALUES ('$nombre','$email','$fecha')";  
mysql_query($_GRABAR_SQL); 

// Cerramos la conexion a la base de datos  
include("cierra_conexion.php");  

// Confirmamos que el registro ha sido insertado con exito  

echo "  
<p>Los datos han sido guardados con exito.</p>  

<p><a href='javascript:history.go(-1)'>VOLVER ATRÁS</a></p>  
"
;  
?>  
</body>  

</html> 
========================================  
========= registra.php  (2)
<html>

<head>
<title>Guardamos los datos en la base de datos</title>
<META name='robot' content='noindex, nofollow'>
</head>

<body>
<?php

// Recibimos por POST los datos procedentes del formulario

$nombr $_POST["nombre"];
$nombre strip_tags($nombr);    // Eliminamos la etiquetas que puedan existir
$n_nombre strlen($nombre);      // Contamos el numero de caracteres

$emai $_POST["email"];
$email strip_tags($emai);        // Eliminamos la etiquetas que puedan existir
$n_email strlen($email);         // Contamos el numero de caracteres

$fecha date("d-m-Y H:i");

$total_car $n_nombre $n_email;    // Si alguno de ellos vale 0, $total_car valdrá 0

if ($total_car >= 1

    
// Abrimos la conexion a la base de datos
    
include("abre_conexion.php");
    
    
$_GRABAR_SQL "INSERT INTO $tabla (nombre,email,fecha) VALUES ('$nombre','$email','$fecha')"
    
mysql_query($_GRABAR_SQL);
    
    
// Cerramos la conexion a la base de datos
    
include("cierra_conexion.php");
    
    
// Confirmamos que el registro ha sido insertado con exito
    
    
echo "
    <p>Los datos han sido guardados con exito.</p>
    
    <p><a href='javascript:history.go(-1)'>VOLVER ATRÁS</a></p>
    
    <p><a href='http://www.uterra.com/archcodfuente/demos/id103/lista2.php' title='Clic aquí'>Ver los resgistros 
    
    guardados</a></p>
    "
;
}
else
{
    echo 
"
    Los campos <b>nombre</b> y <b>email</b> no pueden estar vacios.<br />
    <a href=\"javascript:history.go(-1)\">Volver</a>
    "
;
}
?>
</body>

</html>