Adjuntar archivos y mandar alerta en PHP

Hola! Veréis, necesito preparar, para una web de una copistería, un formulario que permita adjuntar archivos al cliente, de forma que éstos se...

La FAQ Adjuntar archivos y mandar alerta en PHP tiene

Pertenece a la categoría:

Pregunta
Hola! Veréis, necesito preparar, para una web de una copistería, un formulario que permita adjuntar archivos al cliente, de forma que éstos se almacenen en un servidor o correo electrónico y llegue una alerta, cada vez que se produzca un nuevo envío, a la cuenta de correo electrónico de la empresa.



Ando algo perdida, me han dicho que se puede programar con PHP y tal... ¿podríais ayudarme?


Respuesta de Mey
No fue tan simple la pregunta!


con php podes hacer un upoad a una determinada carpeta, lo ideal seria que la aplicacion corra en un webserver dentro de la copisteria (en la misma lan) para que se puedan aceder a los archvos si tener que bajarlos ni saturar algun hosting pedorro.



Podes hostear el sitio en un linux y con el comando mail mandas el alerta.

Complementar la respuestaComplementar la respuesta
Volver al árbol de categoríasVolver al árbol de categorías

Comentarios
Fueron enviados 3 comentarios a la faq
3 comentarios revisados:
Por: Cristian
04/3/08
A ver, lo primero que debes tener en cuenta es que en el formulario que estás creándo tengas enctype="multipart/form-data" dentro de la etiqueta form, esto te permite trabajar con uploads de archivos.

Luego con php investiga un poquito sobe el comando move_uploaded_file es muy sencillo de utilizar, con este comando subes los archivos al servidor y puedes utilizar la función mail de php o tambiñen existe una clase llamada phpMailer que puede ser de mucha ayuda, espero haberte ayudado
Por: Gabriel
04/3/08
La función php que necesitas es, básicamente, la función move_uploaded_file.

PHP limita por defecto el tamaño máximo de los ficheros a 8MB, sin embargo se puede cambiar este límite. También se puede configurar qué tipo de ficheros se permiten (jpg, png, etc...). Con una combinación de estas cosas se puede hacer que no se colapse el servidor.

También se puede hacer que las imágenes se redimensionen, es decir, bajar la resolución de la imagen para, por ejemplo, mostrar un preview en la web.

Personalmente no recomiendo usar un servidor en la propia copisteria si la copisteria no dispone de personal informático especializado. Es mejor contratar una empresa de hosting especializada. Además, el "cuello de botella" suele estar más en el ancho de banda (línea ADSL o cable) que no en el propio servidor.

Para el tema de las alertas, si es via e-mail, te recomiendo la clase phpmailer. Una cosa que ahora se está implantando bastante es realizar las alertas mediante SMS, que también es posible hacerlo en PHP usando proveedores específicos (te puedo proporcionar algunos).

Espero que te sirva de ayuda.
Por: joan
04/3/08
Te mando el script completo de mi página, creo que dandole unos retoques te puede funcionar.
En mi caso el form que tengo esta en html y llama al archivo que mando a continuacion.
Espero que te sirva.
// No te olvides que en la primera linea de tu form html deberás poner :<form action="pressupost.php" method="post"enctype="multipart/form-data"> en este caso el archivo ejecutable se llama pressupost.php.Dale el nombre que te parezca.

Ahí va el código.
<?php
/*
En este caso se trata de un taller de cotxes en que los clientes piden presupesto y mandan fotos de los daños de planxa, solo tendras que cambiar
el tipo de fichero que vas a permitir que te envien, el tamaño y los comentarios de las
alertas, anular o añadir los campos de tu form para que se adapten a tus necesidades */
// Aquí le pones un include con la plantilla de tu cabecera.

// Rebent variables--Aquí recoges las variables de tu form
@$pfw_ip= $_SERVER['REMOTE_ADDR'];
@$nom = addslashes($_POST['nom']);
@$cognom1 = addslashes($_POST['cognom1']);
@$cognom2 = addslashes($_POST['cognom2']);
@$telefon = addslashes($_POST['telefon']);
@$correu = addslashes($_POST['correu']);
@$client = addslashes($_POST['client']);
@$matricula = addslashes($_POST['matricula']);
@$marca = addslashes($_POST['marca']);
@$model = addslashes($_POST['model']);
@$versio = addslashes($_POST['versio']);
@$xassis = addslashes($_POST['xassis']);
@$portes = addslashes($_POST['portes']);
@$data_matricula = addslashes($_POST['data_matricula']);
@$foto1_Name = $_FILES['foto1']['name'];
@$foto1_Size = $_FILES['foto1']['size'];
@$foto1_Temp = $_FILES['foto1']['tmp_name'];
@$foto1_Mime_Type = $_FILES['foto1']['type'];
@$foto2_Name = $_FILES['foto2']['name'];
@$foto2_Size = $_FILES['foto2']['size'];
@$foto2_Temp = $_FILES['foto2']['tmp_name'];
@$foto2_Mime_Type = $_FILES['foto2']['type'];
@$foto3_Name = $_FILES['foto3']['name'];
@$foto3_Size = $_FILES['foto3']['size'];
@$foto3_Temp = $_FILES['foto3']['tmp_name'];
@$foto3_Mime_Type = $_FILES['foto3']['type'];
@$foto4_Name = $_FILES['foto4']['name'];
@$foto4_Size = $_FILES['foto4']['size'];
@$foto4_Temp = $_FILES['foto4']['tmp_name'];
@$foto4_Mime_Type = $_FILES['foto4']['type'];
@$comentaris = addslashes($_POST['comentaris']);

function RecursiveMkdir($path)
{
if (!file_exists($path))
{
RecursiveMkdir(dirname($path));
mkdir($path, 0777);
}
}


// Validació-- estos son los campos que se van a validar que hayas decidido obligatorios cuando se rellena el formulario.
if (strlen($nom) == 0 )
{
die("<p align='center'><font face='Arial' size='3' color='#FF0000'>Si usplau entri el seu <b>nom</b></font></p>");
}

if (strlen($cognom1) == 0 )
{
die("<p align='center'><font face='Arial' size='3' color='#FF0000'>Si usplau entri el primer <b>cognom</b></font></p>");
}

if (strlen($cognom2) == 0 )
{
die("<p align='center'><font face='Arial' size='3' color='#FF0000'>Si usplau entri el segon <b>cognom</b></font></p>");
}

if (strlen($telefon) == 0 )
{
die("<p align='center'><font face='Arial' size='3' color='#FF0000'>Si usplau entri el <b>telèfon</b></font></p>");
}

if (! ereg('[A-Za-z0-9_-]+@[A-Za-z0-9_-]+.[A-Za-z0-9_-]+', $correu))
{
die("<p align='center'><font face='Arial' size='3' color='#FF0000'>Si usplau entri una adreça de <b>correu electrònic vàlida</b></font></p>");
}

if (strlen($matricula) == 0 )
{
die("<p align='center'><font face='Arial' size='3' color='#FF0000'>Si usplau entri la <b>matrícula</b></font></p>");
}

if (strlen($marca) == 0 )
{
die("<p align='center'><font face='Arial' size='3' color='#FF0000'>Si usplau entri la <b>marca del vehicle</b></font></p>");
}

if (strlen($model) == 0 )
{
die("<p align='center'><font face='Arial' size='3' color='#FF0000'>Si usplau entri el <b>model</b></font></p>");
}

if (strlen($versio) == 0 )
{
die("<p align='center'><font face='Arial' size='3' color='#FF0000'>Si usplau entri la <b>versió</b></font></p>");
}

if (strlen($data_matricula) == 0 )
{
die("<p align='center'><font face='Arial' size='3' color='#FF0000'>Si usplau entri la data de la <b>1ª.matriculació</b></font></p>");
}

if( $foto1_Size > 0)

{
if( $foto1_Size >3000000)//tamaño máximo de en este caso fotos 3Mb
{
//esborrar fitxer --si no cumple las condiciones borra el fitxero temp del server
unlink($foto1_Temp);
die("<p align='center'><font face='Arial' size='3' color='#FF0000'><b>Foto 1. Tamany màxim: 3Mb.</b> La foto que ens vol enviar no pot superar els 3Mb de tamany. Si usplau redueixi el tamany i torni-ho a enviar</font></p>");
}
if( $foto1_Mime_Type != "image/gif" AND $foto1_Mime_Type != "image/ief" AND $foto1_Mime_Type != "image/pjpeg" AND $foto1_Mime_Type != "image/jpeg" AND $foto1_Mime_Type != "image/png" AND $foto1_Mime_Type != "image/tiff" )
{
unlink($foto1_Temp);
die("<p align='center'><font face='Arial' size='3' color='#FF0000'><b>Foto 1. Formats acceptats:.jpg .jpeg .pjpeg .png .gif.</b> La foto que ens vol enviar hauria d'estar en qualsevol dels formats anteriors.Si usplau rectifiqui el format i torni-ho a enviar</font></p>");
}
$uploadFile = "fotos_pressupost/"/*esto és la carpeta donde se almacenaran los ficheros que te manden- deberás crearla en tu servidor*/.$foto1_Name ;
if (!is_dir(dirname($uploadFile)))
{
@RecursiveMkdir(dirname($uploadFile));
}
else
{
@chmod(dirname($uploadFile), 0777);
}
@move_uploaded_file( $foto1_Temp , $uploadFile);
chmod($uploadFile, 0644);
$foto1_URL = "http://www.tu_domino.com/web/fotos_pressupost/"/*este és el path donde a donde hayas creado la carpeta anterior-cambialo tambien en las lineas de mas abajo*/.$foto1_Name ;
}
if( $foto2_Size > 0){

if( $foto2_Size >3000000)
{
//Esborrar fitxer --lo mismo de mas arriba
unlink($foto2_Temp);
die("<p align='center'><font face='Arial' size='3' color='#FF0000'><b>Foto 2. Tamany màxim: 3Mb.</b> La foto que ens vol enviar no pot superar els 3Mb de tamany. Si usplau redueixi el tamany i torni-ho a enviar</font></p>");
}
if( $foto2_Mime_Type != "image/gif" AND $foto2_Mime_Type != "image/pjpeg" AND $foto2_Mime_Type != "image/jpeg" AND $foto2_Mime_Type != "image/png" AND $foto2_Mime_Type != "image/tiff" )
{
unlink($foto2_Temp);
die("<p align='center'><font face='Arial' size='3' color='#FF0000'><b>Foto 2. Formats acceptats:.jpg .jpeg .pjpeg .png .gif.</b> La foto que ens vol enviar hauria d'estar en qualsevol dels formats anteriors. Si usplau rectifiqui el format i torni-ho a enviar</font></p>");
}
$uploadFile = "fotos_pressupost/".$foto2_Name ;
if (!is_dir(dirname($uploadFile)))
{
@RecursiveMkdir(dirname($uploadFile));
}
else
{
@chmod(dirname($uploadFile), 0777);
}
@move_uploaded_file( $foto2_Temp , $uploadFile);
chmod($uploadFile, 0644);
$foto2_URL = "http://www.tu_domino.com/web/fotos_pressupost/".$foto2_Name ;
}
if( $foto3_Size > 0){

if( $foto3_Size >3000000)
{
//Esborrar fitxer --mas de lo mismo
unlink($foto3_Temp);
die("<p align='center'><font face='Arial' size='3' color='#FF0000'><b>Foto 3. Tamany màxim: 3Mb.</b> La foto que ens vol enviar no pot superar els 3Mb de tamany. Si usplau redueixi el tamany i torni-ho a enviar</font></p>");
}
if( $foto3_Mime_Type != "image/gif" AND $foto3_Mime_Type != "image/pjpeg" AND $foto3_Mime_Type != "image/jpeg" AND $foto3_Mime_Type != "image/png" )
{
unlink($foto3_Temp);
die("<p align='center'><font face='Arial' size='3' color='#FF0000'><b>Foto 3. Formats acceptats:.jpg .jpeg .pjpeg .png .gif.</b> La foto que ens vol enviar hauria d'estar en qualsevol dels formats anteriors.Si usplau rectifiqui el format i torni-ho a enviar</font></p>");
}
$uploadFile = "fotos_pressupost/".$foto3_Name ;
if (!is_dir(dirname($uploadFile)))
{
@RecursiveMkdir(dirname($uploadFile));
}
else
{
@chmod(dirname($uploadFile), 0777);
}
@move_uploaded_file( $foto3_Temp , $uploadFile);
chmod($uploadFile, 0644);
$foto3_URL = "http://www.tu_dominio.com/web/fotos_pressupost/".$foto3_Name ;
}
if( $foto4_Size > 0){

if( $foto4_Size >3000000)
{
//Esborrar fitxer
unlink($foto4_Temp);
die("<p align='center'><font face='Arial' size='3' color='#FF0000'><b>Foto 4. Tamany màxim: 3Mb.</b> La foto que ens vol enviar no pot superar els 3Mb de tamany. Si usplau redueixi el tamany i torni-ho a enviar</font></p>");
}
if( $foto4_Mime_Type != "image/gif" AND $foto4_Mime_Type != "image/pjpeg" AND $foto4_Mime_Type != "image/jpeg" AND $foto4_Mime_Type != "image/png" )//aquí tendràs que poner el formato de los ficheros que permitiras que te manden,tif,pdf...
{
unlink($foto4_Temp);
die("<p align='center'><font face='Arial' size='3' color='#FF0000'><b>Foto 4. Formats acceptats:.jpg .jpeg .pjpeg .png .gif.</b> La foto que ens vol enviar hauria d'estar en qualsevol dels formats anteriors.Si usplau rectifiqui el format i torni-ho a enviar</font></p>");
}
$uploadFile = "fotos_pressupost/".$foto4_Name ;
if (!is_dir(dirname($uploadFile)))
{
@RecursiveMkdir(dirname($uploadFile));
}
else
{
@chmod(dirname($uploadFile), 0777);
}
@move_uploaded_file( $foto4_Temp , $uploadFile);
chmod($uploadFile, 0644);
$foto4_URL = "http://www.Tu_dominio.com/web/fotos_pressupost/".$foto4_Name ;
}
//ens enviem correu a la nostra bústia--te manda el mensaje a tu correo con los links en este caso de fotos
$pfw_header = "From: $correu "
. "Reply-To: $correu ";
$pfw_subject = "Pressupost reparació";
$pfw_email_to = "tu_correo@telefonica.net";//aquí vas a recibir tus pedidos
$pfw_message = "Visitor's IP: $pfw_ip "//te manda el ip del cliente.
. "nom: $nom "
. "cognom1: $cognom1 "
. "cognom2: $cognom2 "
. "telefon: $telefon "
. "correu: $correu "
. "client: $client "
. "matricula: $matricula "
. "marca: $marca "
. "model: $model "
. "versio: $versio "
. "xassis: $xassis "
. "portes: $portes "
. "data_matricula: $data_matricula "
. "foto1: $foto1_URL "
. "foto2: $foto2_URL "
. "foto3: $foto3_URL "
. "foto4: $foto4_URL "
. "comentaris: $comentaris ";
@mail($pfw_email_to, $pfw_subject ,$pfw_message ,$pfw_header ) ;

//Enviem autoresposta per email al visitant--esto manda un correo instantaneo a tu cliente.
$pfw_header = "From: tu_correo@telefonica.net "
. "Reply-To: tu_correo@telefonica.net ";
$pfw_subject = "Pressupost reparació";
$pfw_email_to = "$correu";
$pfw_message = "Hem rebut correctament la seva sol.licitud, el més aviat possible el respondrem. "
. "Gràcies per confiar en nosaltres.";
@mail($pfw_email_to, $pfw_subject ,$pfw_message ,$pfw_header ) ;

//Guarda les dades en fitxer de text -- en este caso te genera en el server un archivo .txt con los datos que te han mandado.
$pfw_file_name = "pressupost.txt";
$pfw_first_raw = "nom,cognom1,cognom2,telefon,correu,client,matricula,marca,model,versio,xassis,portes,data_matricula,foto1,foto2,foto3,foto4,comentaris ";
$pfw_values = "$nom,$cognom1,$cognom2,$telefon,$correu,$client,$matricula,$marca,$model,$versio,$xassis,$portes,$data_matricula,$foto1_Name,$foto2_Name,$foto3_Name,$foto4_Name,".str_replace (" ","<BR>",$comentaris )." ";
$pfw_is_first_row = false;
if(!file_exists($pfw_file_name))
{
$pfw_is_first_row = true ;
}
if (!$pfw_handle = fopen($pfw_file_name, 'a+')) {
die("Cannot open file ($pfw_file_name)");
exit;
}
if ($pfw_is_first_row)
{
if (fwrite($pfw_handle, $pfw_first_raw ) === FALSE) {
die("Cannot write to file ($pfw_filename)");
exit;
}
}
if (fwrite($pfw_handle, $pfw_values) === FALSE) {
die("Cannot write to file ($pfw_filename)");
exit;
}
fclose($pfw_handle);

echo("<p align='center'><font face='Arial' size='3' color='#FF0000'>Hem rebut correctament la seva sol.licitut,el respondrem el més aviat possible</font></p>");
//aquí le pones un include: footer.inc o lo que sea para que te ponga pie en la respuesta.
?>

Volver al árbol de categoríasVolver al árbol de categorías
Alojados en el grupo