Ver Mensaje Individual
  #8 (permalink)  
Antiguo 26/01/2005, 06:34
cherubene
 
Fecha de Ingreso: agosto-2004
Mensajes: 27
Antigüedad: 19 años, 8 meses
Puntos: 0
Para quienes me pidieron el código final del script para subir archivos, ahí va:

El formulario formulario.php

<html>
<link rel="STYLESHEET" type="text/css" href="estilo.css">
<font size="5"><strong>ENVIENOS SU FOTO<br>
<font size="1">Por favor complete sus datos y adjunte su FOTO.</font></strong></font>
<form action="subearchivo.php" method="post" enctype="multipart/form-data">
<br>
<font size="1">Tu nombre:</font><br>
<INPUT NAME="nick" TYPE="text" id="nick" SIZE="35" MAXLENGTH="35">
<br>
<font size="1">Tu direcci&oacute;n de correo:</font><br>
<INPUT NAME="tucorreo" TYPE="text" id="tucorreo" SIZE="35" MAXLENGTH="35">
<br>
<font size="1">Enviar archivo: </font><br>
<input name="userfile" type="file">
<br>
<input type="submit" value="Enviar">
</form>
<p><font size="1">(*) Datos obligatorios.<br>
Su foto debe tener extension jpg, jpeg &oacute; gif.</font><font size="1"><br>
Sólo se permiten archivos 100kb de tamaño máximo.</font></p>
</html>


A continuación: el script subearchivo.php

<?
if(trim($nick != "") && trim($tucorreo != ""))
{
//subo el archivo
//datos del archivo, "probeta"es el directorio donde se alojará temporalmente el archivo
$directorio = "probeta/";
$fichero = $HTTP_POST_FILES['userfile']['name'];
$nombre_archivo = $directorio . $fichero;
$tipo_archivo = $HTTP_POST_FILES['userfile']['type'];
$tamano_archivo = $HTTP_POST_FILES['userfile']['size'];
//compruebo si las características del archivo son las que deseo
if (!((strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg")) && ($tamano_archivo < 100000))) {
echo "La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif o .jpg<br><li>se permiten archivos de 100 Kb máximo.</td></tr></table>";
}else{
if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'],$nombre_archivo)){
echo "El archivo ha sido cargado correctamente.";


//pasamos a enviar el correo
require "includes/class.phpmailer.php";
$mail = new phpmailer();
$mail->PluginDir = "includes/";
$mail->Mailer = "smtp";
// el siguiente es dato del servidor
$mail->Host = "smtp.miservidor.com";
//Le indicamos que el servidor smtp requiere autenticación si no requiere borramos la siguiente línea
$mail->SMTPAuth = true;
//Le decimos cual es nuestro nombre de usuario y password del correo que envia el email
$mail->Username = "[email protected]";
$mail->Password = "mipassword";
//Indicamos cual es nuestra dirección de correo y el nombre que
//queremos que vea el usuario que lee nuestro correo
$mail->From = "[email protected]";

$mail->FromName = "Fotos Locas";

//Asignamos asunto y cuerpo del mensaje
$mail->Subject = "Hemos recibido tu foto";
$mail->Body = "Esta foto pertenece a: \n";
$mail->Body .= "Nombre: ". $nick . "\n";
$mail->Body .= "Direccion de correo: ". $tucorreo . "\n";
$mail->Timeout=120;

//Indicamos el fichero a adjuntar si el usuario seleccionó uno en el formulario
if ($archivo !="none") {
$mail->AddAttachment($nombre_archivo,$fichero);
}

//Indicamos cuales son las direcciones de destino del correo y enviamos
//el mensaje
$mail->AddAddress("[email protected]");
//se envia el mensaje, si no ha habido problemas la variable $success
//tendra el valor true
$exito = $mail->Send();

//Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas
//como mucho para intentar enviar el mensaje, cada intento se hara 5 s
//segundos despues del anterior, para ello se usa la funcion sleep
$intentos=1;
while((!$exito)&&($intentos<5)&&($mail->ErrorInfo!="SMTP Error: Data not accepted")){
sleep(5);
//echo $mail->ErrorInfo;
$exito = $mail->Send();
$intentos=$intentos+1;
}


//borramos el archivo del directorio "probeta"
unlink($nombre_archivo);
//La clase phpmailer tiene un pequeño bug y es que cuando envia un mail con
//attachment la variable ErrorInfo adquiere el valor Data not accepted, dicho
//valor no debe confundirnos ya que el mensaje ha sido enviado correctamente
if ($mail->ErrorInfo=="SMTP Error: Data not accepted") {
$exito=true;
}

if(!$exito)
{
echo "Problemas enviando correo electrónico a ".$valor;
echo "<br/>".$mail->ErrorInfo;
}
else
{
//Mostramos un mensaje indicando las direccion de
//destino y fichero adjunto enviado en el mensaje
$mensaje="<p>Has enviado un mensaje a Fotos Locas:<br/>";
$mensaje.=$valor." ";
if ($archivo !="none") {
$mensaje.="Con un archivo adjunto llamado ".$fichero;
}
$mensaje.="</p>";
echo $mensaje;
}
}else{
echo "Ocurrió algún error al subir el fichero. No pudo guardarse.";
}

}
}
else{
echo "ERROR. Por favor, complete los DATOS OBLIGATORIOS <br>";
echo "<a href='formulario.php'> VOLVER AL FORMULARIO</a>";
}
?>

Espero que les sirva. Saludos.