Foros del Web » Programando para Internet » PHP »

validar formulario de comentarios conflicto

Estas en el tema de validar formulario de comentarios conflicto en el foro de PHP en Foros del Web. Qué tal amigos de forosdelweb. E creado un sistema de noticias y lo que pasa es de que los datos no se ingresan a la ...
  #1 (permalink)  
Antiguo 06/06/2013, 18:46
Avatar de freddy31DA  
Fecha de Ingreso: junio-2012
Mensajes: 84
Antigüedad: 11 años, 10 meses
Puntos: 2
Busqueda validar formulario de comentarios conflicto

Qué tal amigos de forosdelweb. E creado un sistema de noticias y lo que pasa es de que los datos no se ingresan a la base de datos. Creo que es por el exceso de seguridad que le e puesto pero aun así no se si es seguro. Al dejar solo así el archivo para procesar la información la información se ingresa normalmente.
Código:
<?php
	require_once("conexion.php");


	
	$nombre = htmlspecialchars(mysqli_real_escape_string($conexion, $_POST["nombre"]),ENT_QUOTES);
	$correo = htmlspecialchars(mysqli_real_escape_string($conexion, $_POST["correo"]),ENT_QUOTES);
	$comentario = htmlspecialchars(mysqli_real_escape_string($conexion, $_POST["comentario"]),ENT_QUOTES);
	$id_noticia = htmlspecialchars(mysqli_real_escape_string($conexion, $_POST["id_noticia"]),ENT_QUOTES);

	
	$sql = "INSERT INTO comentarios VALUES (null,'".$nombre."','".$correo."','".$comentario."','".$id_noticia."')";
	
	$result = $conexion->query($sql);
	header("Location: detalle.php?id_noticia=".$id_noticia);
	
	

?>
El formulario es el siguiente:
Código:
 <form action="comentario_process.php" method="post" name="form">
                <label>Nombre</label><br>
                <input type="text" name="nombre" required>
                <br>
                <label>correo</label><br>
                <input type="email" name="correo" required>
                <br>
                <label>comentario</label>
                <br>
                <textarea cols="52" rows="6" name="comentario" required></textarea>
               <input type="hidden" name="id_noticia" value="<?php echo $_GET["id_noticia"] ?>">
                <input type="submit" value="Comentar" title="Enviar Comentario" style="cursor:pointer">
                </form>
el valor del campo hidden es de el id de la noticia bueno estos datos llegan correctamente al archivo para procesar. Aquí todo bien pero Que pasa cuando modifico el código fuente al modificar el atributo required lo borro usando inspeccionando el elemento de google chrome. El formulario queda totalmente habilitado para que se puedan enviar campos vacíos y el codigo de arribar si acepta campos vacíos y los ingresa a la base de datos pero ese es el problema.

Ahora la otra opción para validar mis campos es la siguiente e aqui donde ocurre el problema ya que no logra ingresarme los datos.

Código:
<?php
	require_once("conexion.php");
	
	if(isset($_POST["nombre"]) && !empty($_POST["nombre"]) &&
	isset($_POST["correo"]) && !empty($_POST["correo"]) &&
	isset($_POST["comentario"]) && !empty($_POST["comentario"]) &&
	isset($_POST["id_video"]) && !empty($_POST["id_video"])) {
	

	
	$nombre = htmlspecialchars(mysqli_real_escape_string($conexion, $_POST["nombre"]),ENT_QUOTES);
	$correo = htmlspecialchars(mysqli_real_escape_string($conexion, $_POST["correo"]),ENT_QUOTES);
	$comentario = htmlspecialchars(mysqli_real_escape_string($conexion, $_POST["comentario"]),ENT_QUOTES);
	$id_noticia = htmlspecialchars(mysqli_real_escape_string($conexion, $_POST["id_noticia"]),ENT_QUOTES);

	
	
	
	$sql = "INSERT INTO comentarios VALUES (null,'".$nombre."','".$correo."','".$comentario."','".$id_noticia."')";
	
	$result = $conexion->query($sql);
	header("Location: detalle.php?id_noticia=".$id_noticia);
	
	
	
	}else{
echo "Error al ingresar los datos ";
//Aqui estoy trabajando para ridereccionar etc....

}





?>
No se lo que está pasando. También e intentado otras formas poniendo las variables $nombre - $correo - $comentario - $id_noticia dentro la condición if . Espero alguna sugerencia por parte de ustedes para solucionar esto gracias.
  #2 (permalink)  
Antiguo 06/06/2013, 20:10
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: validar formulario de comentarios conflicto

Imprime la consulta que te genera y ejecutala en el cliente que uses para gestionar la db, para ver que te da, además siempre es bueno depurar los query
Cita:
Iniciado por manual de php
Código PHP:
Ver original
  1. if (!$mysqli->query("tuquery")) {
  2.     printf("Errormessage: %s\n", $mysqli->error);
  3. }
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 06/06/2013, 20:45
Avatar de freddy31DA  
Fecha de Ingreso: junio-2012
Mensajes: 84
Antigüedad: 11 años, 10 meses
Puntos: 2
Respuesta: validar formulario de comentarios conflicto

Cita:
Iniciado por carlos_belisario Ver Mensaje
Imprime la consulta que te genera y ejecutala en el cliente que uses para gestionar la db, para ver que te da, además siempre es bueno depurar los query
Gracias Carlos por la sugerencia. Bueno ya está listo se me ocurrió lo siguiente ahora creo que existe más seguro pero me hace doble inserción dejo el código
Código PHP:
<?php
    
require_once("conexion.php");
    
$nombre htmlentities($_POST["nombre"]);
    
$correo htmlentities($_POST["correo"]);
    
$comentario htmlentities($_POST["comentario"]);
    
$id_noticia htmlentities($_POST["id_noticia"]);
    
                if(isset(
$nombre) && !empty($nombre) &&
        isset(
$correo) && !empty($correo) &&
        isset(
$comentario) && !empty($comentario) &&
        isset(
$id_noticia) && !empty($id_noticia)){
    

    

    
      
htmlspecialchars(mysqli_real_escape_string($conexion$nombre),ENT_QUOTES);
      
htmlspecialchars(mysqli_real_escape_string($conexion$correo),ENT_QUOTES);
      
htmlspecialchars(mysqli_real_escape_string($conexion$comentario),ENT_QUOTES);
      
htmlspecialchars(mysqli_real_escape_string($conexion$id_noticia),ENT_QUOTES);
    

    
    
$sql "INSERT INTO comentarios VALUES (null,'".$nombre."','".$correo."','".$comentario."','".$id_noticia."')";
    
    
$result $conexion->query($sql);
            if (!
$conexion->query("$sql")) {
    
printf("Errormessage: %s\n"$mysqli->error);
}
    



    
header("Location: detalle.php?id_noticia=".$id_noticia);
    
    
//header("Location: detalle.php?id_noticia=".$_POST["id_noticia"]);
    
    
}else{
        echo 
"campos vacios redireccionando:";
        (
"Location: detalle.php?id_noticia=".$_POST["id_noticia"]);

        
        }
    





?>
Al depurar el query surge la doble inserción pero no está mal recibir algunas sugerencias más.

Última edición por freddy31DA; 06/06/2013 a las 20:52

Etiquetas: formulario, procesar
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 14:09.