Comunidad de diseño web y desarrollo en internet online

TAMAÑO MÁXIMO Y TIPO adjunto en formulario por E-MAIL

Citar            
MensajeEscrito el 24 May 2009 03:37 pm
Hola a todos:

He puesto en una web un formulario de contacto (por e-mail) con PHP (no tengo ni idea, pero funciona) :o

Me gustaría añadirle código para poder limitar 2 cosas:

- EL TIPO DE ARCHIVOS PERMITIDOS (en mi caso .ppp y .pps)
- EL TAMAÑO (máx. 3 megas, por ej.)

Qué escribo en mi código y donde?

Un millón de gracias, estoy desesperada ;-)

Os pego mi php:

<?php
function form_mail($sPara, $sAsunto, $sTexto, $sDe)
{
$bHayFicheros = 0;
$sCabeceraTexto = "";
$sAdjuntos = "";

if ($sDe)$sCabeceras = "From:".$sDe."\n";
else $sCabeceras = "";
$sCabeceras .= "MIME-version: 1.0\n";
foreach ($_POST as $sNombre => $sValor)
$sTexto = $sTexto."\n".$sNombre." = ".$sValor;

foreach ($_FILES as $vAdjunto)
{
if ($bHayFicheros == 0)
{
$bHayFicheros = 1;
$sCabeceras .= "Content-type: multipart/mixed;";
$sCabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n";

$sCabeceraTexto = "----_Separador-de-mensajes_--\n";
$sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
$sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n";

$sTexto = $sCabeceraTexto.$sTexto;
}
if ($vAdjunto["size"] > 0)
{
$sAdjuntos .= "\n\n----_Separador-de-mensajes_--\n";
$sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";;
$sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
$sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";

$oFichero = fopen($vAdjunto["tmp_name"], 'r');
$sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
$sAdjuntos .= chunk_split(base64_encode($sContenido));
fclose($oFichero);
}
}

if ($bHayFicheros)
$sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n";
return(mail($sPara, $sAsunto, $sTexto, $sCabeceras));
}

if (form_mail("[email protected]","TEXTO DEL ASUNTO DEL CORREO",
"Los datos introducidos en el formulario son:\n\n", "[email protected]"))
echo "TEXTO DE GRACIAS, BLA BLA BLA.";

else
echo 'TEXTO DE NO RECIBIDA. INTENTALO DE NUEVO BLA BLA BLA.';
?>

Por Ysha

0 de clabLevel



 

MADRID

firefox
Citar            
MensajeEscrito el 24 May 2009 07:52 pm
Hola Ysha modifiqué tu código, espero te sirva, no lo probé por que no tengo el formulario, si te marca error nos comentas :)

Código :

   <?php
   function form_mail($sPara, $sAsunto, $sTexto, $sDe)
   {
      $bHayFicheros = 0;
      $sCabeceraTexto = "";
      $sAdjuntos = "";
   
      if ($sDe)$sCabeceras = "From:".$sDe."\n";
      else $sCabeceras = "";
      $sCabeceras .= "MIME-version: 1.0\n";
      foreach ($_POST as $sNombre => $sValor)
      $sTexto = $sTexto."\n".$sNombre." = ".$sValor;
      
      foreach ($_FILES as $vAdjunto)
      if (($vAdjunto["type"] == "application/vnd.ms-powerpoint") || ($vAdjunto["type"] == "application/vnd.openxmlformats-officedocument.presentationml.presentation"))
      {
         if ($bHayFicheros == 0)
         {
            $bHayFicheros = 1;
            $sCabeceras .= "Content-type: multipart/mixed;";
            $sCabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n";
            
            $sCabeceraTexto = "----_Separador-de-mensajes_--\n";
            $sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
            $sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n";
            
            $sTexto = $sCabeceraTexto.$sTexto;
         }
         if ($vAdjunto["size"] > 0 && < 3072000)
         {
            $sAdjuntos .= "\n\n----_Separador-de-mensajes_--\n";
            $sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";;
            $sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
            $sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";
            
            $oFichero = fopen($vAdjunto["tmp_name"], 'r');
            $sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
            $sAdjuntos .= chunk_split(base64_encode($sContenido));
            fclose($oFichero);
         }
      }else{
         echo 'ERROR, EL ARCHIVO NO ES PPT O PPS';
      }
   }
   
   if ($bHayFicheros)
   $sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n";
   return(mail($sPara, $sAsunto, $sTexto, $sCabeceras));
   }
   
   if (form_mail("[email protected]","TEXTO DEL ASUNTO DEL CORREO",
   "Los datos introducidos en el formulario son:\n\n", "[email protected]"))
      echo "TEXTO DE GRACIAS, BLA BLA BLA.";
   
   else
      echo 'TEXTO DE NO RECIBIDA. INTENTALO DE NUEVO BLA BLA BLA.';
   ?> 


Saludos!!

Por elmaick123

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Ene 2011 07:02 pm
esta lìnea if ($vAdjunto["size"]> 0 && <3072000) figura como error.

Por mx_pinillos

0 de clabLevel



Genero:Femenino  

Santiago - chile

msie8

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.