| Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS | ||||
|
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? La FAQ Adjuntar archivos y mandar alerta en PHP tiene Pertenece a la categoría:
Comentarios de los visitantes
Comentario de 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 Comentario de 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. Comentario de 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. ?> Para ver más FAQ relacionadas accede a las categorías: |
|
||||||||||
| Complementar la respuesta | |
| Volver al árbol de categorías |
| DesarrolloWeb.com | Copyright | Anunciese | Acerca de | Datos legales | Contacta | Por GuiarteMultimedia | ||||