Foros del Web » Programando para Internet » PHP »

PHP OO Como guardar en una BD los datos que envío por mail desde un formulario

Estas en el tema de Como guardar en una BD los datos que envío por mail desde un formulario en el foro de PHP en Foros del Web. Hola: Mi pregunta es: ¿Cómo guardo en una Base de datos los valores que insertan en un formulario que se envía por email? Lo que ...
  #1 (permalink)  
Antiguo 19/10/2012, 22:00
Avatar de DEIMOSDD  
Fecha de Ingreso: octubre-2009
Mensajes: 10
Antigüedad: 14 años, 6 meses
Puntos: 0
Exclamación Como guardar en una BD los datos que envío por mail desde un formulario

Hola:

Mi pregunta es:

¿Cómo guardo en una Base de datos los valores que insertan en un formulario que se envía por email?

Lo que pasa es que necesito enviar los datos de un formulario por correo, pero a su vez debo guardar estos datos en una BD.
Lo de enviar el mail me lo hace, pero no me inserta en la Bd.

Este es el código:

<?php
require_once ('EnviarMail.php');
require_once ('GuardarArchivo.php');

if(isset ($_POST['enviar'])){
$remitente=$_POST['remitente'];
$destino=$_POST['destino'];
$correoDestino=$_POST['correoDestino'];
$asunto=$_POST['asunto'];

$envia= new EnviarMail();
$guardar = new GuardarArchivo($remitente, $destino, $correoDestino, $asunto);
$envia->Enviar_Mail($remitente, $destino, $correoDestino);
$guardar->Guardar();

if($guardar){
echo 'Mensaje enviado';
}else{
echo 'Error';
}
}
?>

<html>
<head><title>Formulario de envío de datos</title></head>
<body>
<form name="FormularioEnvio" method="post" action="<?php echo $_SERVER['PHP_SELF']?>" target="_self" enctype="multipart/form-data">
Remitente: <input type="text" name="remitente"/><br>
Asunto: <input type="text" name="asunto"/><br>
Destino: <input type="text" name="destino"/><br>
E-Mail destino: <input type="text" name="correoDestino"/><br>
<input type="file" name="archivo"/>
<input type="submit" name="enviar" value="Enviar"/>
</form>
</body>
</html>


Y el script con la función de insert es este:

public function Guardar(){
$fh = fopen($_FILES['archivo']['tmp_name'], 'r');
if ($fh){
$archivo = fread($fh, file($_FILES['archivo']['tmp_name']));
fclose($fh);

$archivo = addslashes($archivo);
$tipo = $_FILES['archivo']['type'];

$timestamp =

$sql = "INSERT INTO Datos(Remitente, Destino, CorreoDestino, Asunto, Adjunto, Fecha)
VALUES('".$this->remitente."', '".$this->destino."', '".$this->correoDestino."', '".$this->asunto."', '".$archivo."')";
$this->conexion = new ClassConectar();
$this->conexion->Conectar();
$result=$this->conexion->EjecutarSql($sql);
$this->conexion->Desconectar($result);

echo "Archivo cargado exitosamente";
}else{
echo 'Error al cargar el archivo';
}

}

Les agradezco en lo que me puedan ayudar.
  #2 (permalink)  
Antiguo 20/10/2012, 01:09
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Como guardar en una BD los datos que envío por mail desde un formulario

Me parece que tu opción para verificar el archivo subido no es correcta, deberías revisar si $_FILES['archivo']['error'] es cero, lo que significa que sí se subió un archivo y el servidor lo recibió correctamente.

Aparte de eso, si no se subió un archivo, tus variables $archivo y $tipo estarán vacías.

Supongo que lo de dejar $timestamp sin un valor es un error al copiar tu código aquí, de lo contrario obtendrías un error de sintáxis al incluir el archivo donde tienes esa clase.

Para ver más sobre cómo verificar archivos, puedes leer esto: http://www.forosdelweb.com/f18/aport...8/#post4265376

Finalmente, tu código para insertar la información en la base de datos no tiene validación alguna, tal vez omitiste esa parte cuando copiaste el código, pero tampoco veo que "prepares" los datos escapándolos para evitar errores y/o ataques.

Algunos consejos útiles sobre cómo hacer eso están en: http://www.forosdelweb.com/f18/aport...8/#post4265377

P.D. Usa el Highlight para mostrar tu código, queda m ás legible.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: bd, formulario, html, mail, sql
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 08:13.