Foros del Web » Programando para Internet » PHP »

Problema con sistema de comentarios usando php y Mysql

Estas en el tema de Problema con sistema de comentarios usando php y Mysql en el foro de PHP en Foros del Web. Hola buenas tardes a todos en este foro. Mi problema es el siguiente estoy tratando de hacer un sistema de comentarios para mi web pero ...
  #1 (permalink)  
Antiguo 01/11/2008, 19:27
Avatar de Basteri  
Fecha de Ingreso: noviembre-2008
Mensajes: 30
Antigüedad: 16 años
Puntos: 0
Problema con sistema de comentarios usando php y Mysql

Hola buenas tardes a todos en este foro. Mi problema es el siguiente estoy tratando de hacer un sistema de comentarios para mi web pero por el momento practico en mi servidor local. Este sistema esta conformado por 3 archivos

1 comentarios.php (el cual contiene el formulario)
2 conect.inc (el cual contiene los datos de coneccion a la base de datos)
3 insercomentario.php (el cual contiene el script para insertar los datos en la bd)

Al parecer todo funciona bien , no me manda ningun error pero el problema es que no ingresa ningun dato a la bd deja los espacios en blanco.

Las especificaciones de mi base de datos y de mi tabla son los siguientes:

BD comentar
TABLE comentariosale
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
nombre TEXT
email TEXT
comentario TEXT

Asi es como queda la base de datos despues de enviar los datos desde el formulario:


Y este es el codigo de los archivos respectivamente:

1- comentarios.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<h1>Insertar Comentario</h1>
<form action="insercomentario.php"><table>
<tr>
<td>Nombre:</td>
<td><input type="text" name="nombre" /></td>
</tr>
<tr>
<td>E-mail</td>
<td><input type="text" name="email" /></td>
</tr>
<tr>
<td>Comentraio:</td>
<td><textarea name="comentario"></textarea></td>
</tr>
<tr>
<td><input type="submit" name="accion" value="Comentar"></td>
<td></td>
</tr>
</table></form>
<table>
<tr>
<td width="80%"><h3>Comentarios a mi sitio</h3>
<?php include('includes/conect.inc'); ?>
</td>
</tr>
</table>
</body>
</html>

2- conect.inc

<?php
$bdconex = @mysql_connect("localhost", "root", "exin");
if (!$bdconex) {
echo( "<h1>La base de datos no está disponible</h1> " .
"<p>Por si acaso, comprueba que tienes bien los datos de la dirección, el nombre de usuario y la contraseña.</p>" );
exit();
}
if (! @mysql_select_db("comentar", $bdconex)){
echo "<h2 align='center'>ERROR3: Imposible localizar la base de datos en este momento</h2>";
exit();
}
?>
<?php

$resultado = @mysql_query("SELECT * FROM comentariosale");
if (!$resultado) {
echo ("<p> Me temo que te has colado en la query:" . mysql_error() . "</p>");
exit();
}
while ($fila = mysql_fetch_array($resultado)) {

echo ("<strong>Nombre: </STRONG>" . $fila['nombre'] . "<br />");
echo ("<strong>E-mail: </STRONG>" . $fila['email'] . "<br />");
echo ("<strong>Comentario:</strong>" . $fila['comentario'] . "<br/><br/>");
?>

<?php } ?>

3- insercomentario.php

<?php
$bdconex = @mysql_connect("localhost", "root", "exin");
if (!$bdconex) {
echo ( "<h1>La base de datos no está disponible</h1> " .
"<p>Por si acaso, comprueba que tienes bien los datos de la dirección, el nombre de usuario y la contraseña.</p>" );
exit();
}else {
echo ("ole que funciona");
}
if (! @mysql_select_db("comentar", $bdconex)){

echo "<h2 align='center'>ERROR3: Imposible localizar la base de datos en este momento</h2>";

exit();
}else {
echo "Base de datos seleccionada";
}

$sql =" INSERT INTO comentariosale ( nombre , email , comentario ) VALUES ( '$nombre' , '$email' , '$comentario' )";

if(mysql_query($sql, $bdconex)){
echo ("<p> Gracias por tu comentario!</p>");
}else{
echo ("Error al insertar los datos: " . mysql_error() . "</p>");
}

?>


Espero me puedan ayudar no soy experto en php ni en mysql la verdad apenas estoy aprendiendo y he tratado de ser lo mas claro posible.

PD. El servidor que uso es xampp 1.6.3
PHP Version 4.4.7
Gracias de antemano
  #2 (permalink)  
Antiguo 01/11/2008, 19:59
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 17 años, 1 mes
Puntos: 101
Respuesta: Problema con sistema de comentarios usando php y Mysql

Hola,
Cambia esta linea:
Código PHP:
$sql =" INSERT INTO comentariosale ( nombre , email , comentario ) VALUES ( '$nombre' , '$email' , '$comentario' )"
Por:
Código PHP:
$sql =" INSERT INTO comentariosale ( nombre , email , comentario ) VALUES ( '".$_POST['nombre']."' , '".$_POST['email']."' , '".$_POST['comentario']."' )"
Y al <form> agrega:
Código HTML:
method="post"
Suerte
Salu2
__________________
Half Music - www.halfmusic.com
  #3 (permalink)  
Antiguo 01/11/2008, 20:13
Avatar de Basteri  
Fecha de Ingreso: noviembre-2008
Mensajes: 30
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema con sistema de comentarios usando php y Mysql

Cita:
Iniciado por pato12 Ver Mensaje
Hola,
Cambia esta linea:
Código PHP:
$sql =" INSERT INTO comentariosale ( nombre , email , comentario ) VALUES ( '$nombre' , '$email' , '$comentario' )"
Por:
Código PHP:
$sql =" INSERT INTO comentariosale ( nombre , email , comentario ) VALUES ( '".$_POST['nombre']."' , '".$_POST['email']."' , '".$_POST['comentario']."' )"
Y al <form> agrega:
Código HTML:
method="post"
Suerte
Salu2
Muchas gracias amigo Pato 12 con eso se soluciono mi problema eres muy amable.
Gracias a este foro que me ha ayudado mucho desde que empece a aprender.
Da gusto saber que los humanos todavia nos podemos dar la mano sin esperar nada a cambio.
Saludos
  #4 (permalink)  
Antiguo 01/11/2008, 20:26
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con sistema de comentarios usando php y Mysql

Espero que hayas investigado al respecto para entender cuál era el problema y el por qué de esa solucion, y no hayas simplemente copiado/pegado el código que te dió pato12.

Si no lo hiciste, sería bueno que leas algo sobre Register Globals.

Además tu sistema tiene un hueco enorme de seguridad, ya que no validas los datos de entrada. Te invito también a leer algo sobre el SQL injection (Inyección SQL).

Saludos,
  #5 (permalink)  
Antiguo 01/11/2008, 20:34
Avatar de Basteri  
Fecha de Ingreso: noviembre-2008
Mensajes: 30
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema con sistema de comentarios usando php y Mysql

Sinceramente en este momento si hice lo que mencionas solo copie y pegue para ver si era la solucion ya que apenas tengo dos dias estudiando php y mysql.

Voy a estudiar lo que mencionas de validar los datos de entrada.
Solo una duda. ¿que pasa si omito ese paso?
Te agradezco mucho tu sugerencia y los enlaces que me recomiendas.

Prometo pronto poder ayudar yo tambien a mas personas en este foro
  #6 (permalink)  
Antiguo 01/11/2008, 20:39
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Problema con sistema de comentarios usando php y Mysql

Cita:
Solo una duda. ¿que pasa si omito ese paso?
Bueno, serias vulnerable a injeccion SQL, lo cual puede ser MUY, pero MUY, dañino para tu sitio web. Te pueden borrar la base de datos completamente, cambiar informacion, robar informacion, etc.
  #7 (permalink)  
Antiguo 01/11/2008, 20:42
Avatar de Basteri  
Fecha de Ingreso: noviembre-2008
Mensajes: 30
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema con sistema de comentarios usando php y Mysql

Ok muchas gracias Rounruby por tu tiempo tomado a contestar mi duda
Te deceo lo mejor

Suerte
  #8 (permalink)  
Antiguo 02/11/2008, 10:09
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con sistema de comentarios usando php y Mysql

En el mensaje anterior te dejé un link a un artículo sobre la inyección SQL de la Wikipedia. Justamente es eso, inyectar código SQL en una consulta vulnerable (La cual se hace en base a datos que el usuario visitante envía, ya sea por un formulario o por la url). Si ves los ejemplos que allí ponen te darás cuenta de lo que significa.

Saludos,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:46.