Aquí vemos como colocamos las variables dentro de los atributos " value " de los inputs y el textarea . También podemos ver como tenemos un campo escondido, llamado "identificador", que solo tendrá un valor asignado, cuando estemos respondiendo a un mensaje, pero que no existirá cuando sea un mensaje nuevo. Solo queda ver el script que se encarga de grabar el mensaje en la base de datos, agregar.php .
//Hacemos algunas validaciones
if(empty( $autor )) $autor = "Anónimo" ;
if(empty( $titulo )) $titulo = "Sin título" ;
//Evitamos que el usuario ingrese HTML
$mensaje = htmlentities ( $mensaje );
// Grabamos el mensaje en la base.
$sql = "INSERT INTO foro (autor, titulo, mensaje, identificador, fecha, ult_respuesta) " ;
$sql .= "VALUES ('$autor','$titulo','$mensaje','$ident',NOW(),NOW())" ;
$rs = mysql_query ( $sql , $con ) or die( "Error al grabar un mensaje: " . mysql_error );
$ult_id = mysql_insert_id ( $con );
/* si es un mensaje en respuesta a otro
actualizamos los datos */
if(!empty( $ident ))
{
$sql = "UPDATE foro SET respuestas=respuestas+1, ult_respuesta=NOW()" ;
$sql .= " WHERE id = '$ident'" ;
$rs = mysql_query ( $sql , $con );
Header ( "Location: foro.php?id=$ident#$ult_id" );
exit();
}
Header ( "Location: index.php" );
?>
En este script, luego de tomar las variables desde el formulario (con el método POST), primero verificamos que exista un nombre de autor y el título del mensaje, caso contrario le asignamos un valor por defecto. También utilizamos la función de PHP htmlentities() para convertir todos los caracteres especiales ( >, <, ", &, etc ) en sus respectivas entidades HTML ( >, <, "e;, &). Con esto evitamos que un usuario ingrese código HTML en nuestro Foro (con la respectiva vulnerabilidad que este implica).