Foros del Web » Programando para Internet » PHP »

Formulario Para Enviar Imagenes

Estas en el tema de Formulario Para Enviar Imagenes en el foro de PHP en Foros del Web. Hola a todos, he buscado en los diferenes foros este tema y no lo he encuentro resuelto....MI PREGUNTA: ¿ ES COMO HAGO PARA ENVIAR SEIS ...
  #1 (permalink)  
Antiguo 30/06/2008, 14:37
Avatar de davincci  
Fecha de Ingreso: enero-2005
Mensajes: 193
Antigüedad: 19 años, 3 meses
Puntos: 0
Exclamación Formulario Para Enviar Imagenes

Hola a todos, he buscado en los diferenes foros este tema y no lo he encuentro resuelto....MI PREGUNTA: ¿ ES COMO HAGO PARA ENVIAR SEIS O MAS IMAGENES EN UN FORMULARIO DE CONTACTO Y QUE ESTE CONTENIDO LLEGUE A MI EMAIL O EL EMAIL DESEAD?. ¿SI ADEMAS DE ESTO LE ADIERO LA OPCION DE BOTON DE RADIO COMO HAGO PARA ENVIAR ESTAS RESPUESTAS?, gracias.

Dejo una muestra de lo que quiero

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Documento sin t&iacute;tulo</title>
</
head>

<
body>
<
form action="[email protected]method="post" enctype="multipart/form-data" name="form1" id="form1">
  <
label>Nombre
  
<input type="text" name="Nombre" id="Nombre" />
  </
label>
  <
label>Telefono
  
<input type="text" name="Telefono" id="Telefono" />
  </
label>
  <
p>
    <
label>
    <
input type="radio" name="radio" id="Casa" value="Casa" />
    
Casa</label>
  </
p>
  <
p>
    <
label>
    <
input type="radio" name="radio" id="Carro" value="Carro" />
    
Carro</label>
  </
p>
  <
p>
    <
label>
    <
input type="checkbox" name="Moto" id="Moto" />
    
Moto</label>
  </
p>
  <
p>
    <
label>
    <
input type="checkbox" name="Bicicleta" id="Bicicleta" />
    
Bicicleta</label>
  </
p>
  <
p>
    <
label>Imagen1
    
<input type="file" name="Imagen1" id="Imagen1" />
    </
label>
    <
label>Imagen4
    
<input type="file" name="Imagen4" id="Imagen4" />
    </
label>
</
p>
  <
p>
    <
label>Imagen2
    
<input type="file" name="Imagen2" id="Imagen2" />
    </
label>
    <
label>Imagen5
    
<input type="file" name="Imagen5" id="Imagen5" />
    </
label>
</
p>
  <
p>
    <
label>Imagen3
    
<input type="file" name="Imagen3" id="Imagen3" />
    </
label>
    <
label>Imagen6
    
<input type="file" name="Imagen6" id="Imagen6" />
    </
label>
</
p>
  <
p>
    <
label>Enviar
    
<input type="submit" name="Enviar" id="Enviar" value="Enviar" />
    </
label>
  </
p>
</
form>
</
body>
</
html
__________________
Mil gracias por sus enseñanzas.

Davincci
  #2 (permalink)  
Antiguo 30/06/2008, 14:48
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Formulario Para Enviar Imagenes

Hola

Puedes probar usando PHPMailer, buscando en google

Un saludo
  #3 (permalink)  
Antiguo 30/06/2008, 16:50
Avatar de davincci  
Fecha de Ingreso: enero-2005
Mensajes: 193
Antigüedad: 19 años, 3 meses
Puntos: 0
Umm creo que no

Pues nada jaronu, gracias por el consejo lo he estado ensayando, pero no me cuadra mucho eh, casi no lo entiendo y la verdad me gustaria una guia de como se hace o un ejemplo, por que la verdad se puede necesitar mas opciones y no quiero enredarme o complicarme.
__________________
Mil gracias por sus enseñanzas.

Davincci
  #4 (permalink)  
Antiguo 30/06/2008, 17:09
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Formulario Para Enviar Imagenes

Se supone que las fotos suben a tu servidor no?... entonces lo que debes enviar via mail no es la foto sino la direccion de donde subiste la foto en tu servidor.

Trata enviandote eso...

No te entendi eso de los radios.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #5 (permalink)  
Antiguo 30/06/2008, 17:11
 
Fecha de Ingreso: junio-2008
Mensajes: 3
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Formulario Para Enviar Imagenes

Hola! Mirate esto (es una idea general y escrita algo rápido, pero te servirá)

Código:
<?php
if(isset($_POST["enviar"])) //si existe el botón de enviar
{
         // Creamos lo necesario para el mensaje
         $to = "[email protected]";
         $from = "[email protected]";
         $from_nombre = "El fulano que envia";
         $subject = "Enviando archivos";
         $headers = "MIME-Version: 1.0\n";
	$headers .= "Content-type: text/html; charset=iso-8859-1 \r\n";
	// El De: en la forma Nombre [email protected], esto garantiza que
	// en el cliente de correo del receptor se vea sólo el nombre de quien envia
	// en su bandeja de entrada
	$headers .= "From: $from_nombre  <$from> \r\n";
	// Opcional: Resopnder a:
	$headers .= "Reply-To: " . $from; 
        $message = "Ahi te van algunos archivos"; // al declararlo como text / html, puedes agregar html
       $archivos = "";

         for($x=1;$x<=6;$x++) // tome 6, pero puedes traerte una variable que diga cuantos
         {
               if(isset($_FILES["imagen$x"])) // $x tiene de 1 hasta 6, esto genera image1, imagen2....
               {
                    $local = $_FILES[""imagen$x"]["name"];
                    $ruta = "/home/usuario/" . $local; // obviamente esta ruta sería la que uses
                    $remoto = $_FILES[""imagen$x"]["tmp_name"];
                    if (is_uploaded_file($remoto)){
			// copiamos el archivo temporal, del directorio de temporales de nuestro servidor a la ruta que creamos
			copy($remoto, $ruta);
$archivos .= "$ruta,";
		}      
               }
           $attachs = substr($archivos, 0, strlen(archivos) -1); // esto elimina la coma que quedo al final
// --- ahora el envio lo hago con un proceso unix que invoca a sendmail
$fd = popen("/usr/sbin/sendmail -t - a $attachs", 'w'); //el -a es para enviar attachments
		// Metes las cabeceras del mensaje en el pipe
		fputs($fd, "To: $to\n");
		fputs($fd, "Subject: $subject\n");
		fputs($fd, "X-Mailer: PHP4\n");
		if ($headers) {
			fputs($fd, "$headers\n");
		}
		// Dejas un espacio en blanco
		fputs($fd, "\n");
		// Metes el mensaje en el pipe
		fputs($fd, $message);
		//Cierras el pipe y con ello se envia el mensaje
		pclose($fd);
          }
}
analizálo y ajustalo a tus necesidades
  #6 (permalink)  
Antiguo 30/06/2008, 17:22
Avatar de davincci  
Fecha de Ingreso: enero-2005
Mensajes: 193
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Formulario Para Enviar Imagenes

Gracia Marvin, que placer de leerte de nuevo, mira la cosa es asi:

No quiero guardar imagenes en mi server, lo que quiero es mediante un formulario que los usuarios escriban sus datos, hagan una encuesta, esta en forma de seleccion y otras y por ultimo me envien tres o cuatro fotos.

Aqui esta el codigo del cual me funciona cuando me envian una foto, pero no logro sacar la forma de que me envien cuatro fotos.

Gracias

ESTE ES EL FORMULARIO BASICO

Código PHP:
<html>
<
head>
<
title>Send an Email</title>
</
head>
<
body>
<
h1>FORMULARIO</h1>
<
form action="mail.php" method="POST" enctype="multipart/form-data">
<
p>Para
  <
input type="text" name="to" value="" /><br />
De
<
input type="text" name="from" value="" /><br />
Asunto
<
input type="text" name="subject" value="" /></p>
<
p>Mensaje:<br />
<
textarea cols="70" rows="20" name="message"></textarea></p>
<
p>Imagen
  <
input type="file" name="fileatt" /></p>
<
p><input type="submit" value="Send" /></p>
</
form>
</
body>
</
html
AQUI EL email.php

Código PHP:
<html>
<head>
<title>Enviando email </title>
</head>
<body>
<?php

$to      
$_POST['to'];
$from    $_POST['from'];
$subject $_POST['subject'];
$message $_POST['message'];


$fileatt      $_FILES['fileatt']['tmp_name'];
$fileatt_type $_FILES['fileatt']['type'];
$fileatt_name $_FILES['fileatt']['name'];

$headers "From: $from";

if (
is_uploaded_file($fileatt)) {
  
  
$file fopen($fileatt,'rb');
  
$data fread($file,filesize($fileatt));
  
fclose($file);

  
  
$semi_rand md5(time());
  
$mime_boundary "==Multipart_Boundary_x{$semi_rand}x";
  
  
  
$headers .= "\nMIME-Version: 1.0\n" .
              
"Content-Type: multipart/mixed;\n" .
              
" boundary=\"{$mime_boundary}\"";

 
  
$message "This is a multi-part message in MIME format.\n\n" .
             
"--{$mime_boundary}\n" .
             
"Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
             
"Content-Transfer-Encoding: 7bit\n\n" .
             
$message "\n\n";


  
$data chunk_split(base64_encode($data));

 
  
$message .= "--{$mime_boundary}\n" .
              
"Content-Type: {$fileatt_type};\n" .
              
" name=\"{$fileatt_name}\"\n" .
             
              
"Content-Transfer-Encoding: base64\n\n" .
              
$data "\n\n" .
              
"--{$mime_boundary}--\n";
}


$ok = @mail($to$subject$message$headers);
if (
$ok) {
  echo 
"<p>El mensaje ha sido enviado!</p>";
} else {
  echo 
"<p>El mensaje fue rechazado!</p>";
}
?>
</body>
</html>
__________________
Mil gracias por sus enseñanzas.

Davincci
  #7 (permalink)  
Antiguo 30/06/2008, 18:56
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Formulario Para Enviar Imagenes

Sip... vuelvo a ratos :D

Prueba esto por si funciona! (yo no tengo el servidor de correo funcionando en este pc pero por lo menos no me tira errores al agregar las imagenes)

Código PHP:
<?
error_reporting
(E_ALL);
if(
$_POST['submit'] != "Send"){
?>
<html>
<head>
<title>Send an Email</title>
</head>
<body>
<h1>FORMULARIO</h1>
<form action="<?=$_SERVER['PHP_SELF']?>" method="POST" enctype="multipart/form-data">
<p>Para: 
  <input type="text" name="to" value="" /><br />
De: 
<input type="text" name="from" value="" /><br />
Asunto: 
<input type="text" name="subject" value="" /></p>
<p>Mensaje:<br />
<textarea cols="70" rows="20" name="message"></textarea></p>
<p>Imagen: 
  <input type="file" name="fileatt[]" /></p>
<p>Imagen 2: 
  <input type="file" name="fileatt[]" /></p>
<p>Imagen 3: 
  <input type="file" name="fileatt[]" /></p>
<p>Imagen 4: 
  <input type="file" name="fileatt[]" /></p>
<p>Imagen 5: 
  <input type="file" name="fileatt[]" /></p>
<p>Imagen 6: 
  <input type="file" name="fileatt[]" /></p>
<p><input type="submit" name="submit" value="Send" /></p>

</form>
</body>
</html>  

<html>
<head>
<title>Enviando email </title>
</head>
<body>
<?php
}else{
    
$to      $_POST['to'];
    
$from    $_POST['from'];
    
$subject $_POST['subject'];
    
$message $_POST['message'];

    
$headers "From: $from";

    
$semi_rand md5(time());
    
$mime_boundary "==Multipart_Boundary_x{$semi_rand}x";

    
$headers .= "\nMIME-Version: 1.0\n" .
        
"Content-Type: multipart/mixed;\n" .
        
" boundary=\"{$mime_boundary}\"";

    
$message "This is a multi-part message in MIME format.\n\n" .
        
"--{$mime_boundary}\n" .
        
"Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
        
"Content-Transfer-Encoding: 7bit\n\n" .
    
$message "\n\n";

    
$data chunk_split(base64_encode($data));

    
$err 0;
    
$ok 0;
    
$num 0;
    foreach(
$_FILES['fileatt']['tmp_name'] as $tmp_name){
        if(
$tmp_name != ""){
            
$arr[$num]['tmp_name'] = $tmp_name;//nombre temporal
            
$num++;
        }
    }
    
$num 0;
    foreach(
$_FILES['fileatt']['type'] as $type){
        if(
$type != ""){
            
$arr[$num]['type'] = $type;//tipo
            
$num++;
        }
    }
    
$num 0;
    foreach(
$_FILES['fileatt']['name'] as $name){
        if(
$name != ""){
            
$arr[$num]['name'] = $name;//nombre
            
$num++;
        }
    }
    foreach(
$arr as $imagen){
        
$fileatt      $imagen['tmp_name'];
        
$fileatt_type $imagen['type'];
        
$fileatt_name $imagen['name'];
        if (
is_uploaded_file($fileatt)) {
            
$file fopen($fileatt,'rb');
            
$data fread($file,filesize($fileatt));
            
fclose($file);

            
$message .= "--{$mime_boundary}\n" .
                
"Content-Type: {$fileatt_type};\n" .
                
" name=\"{$fileatt_name}\"\n" .

                
"Content-Transfer-Encoding: base64\n\n" .
                
$data "\n\n" .
                
"--{$mime_boundary}--\n";
            
$ok++;
        }else{
            
$err++;
        }
    }

    if (
mail($to$subject$message$headers)) {
        echo 
"<p>El mensaje ha sido enviado ($ok imagen/es adjuntada/as)</p>";
    } else {
        echo 
"<p>El mensaje fue rechazado! ($ok imagen/es)</p>";
    }
?>
</body>
</html>
<?
}
?>
Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #8 (permalink)  
Antiguo 30/06/2008, 19:20
Avatar de davincci  
Fecha de Ingreso: enero-2005
Mensajes: 193
Antigüedad: 19 años, 3 meses
Puntos: 0
uppps

me da este error Notice: Undefined index: submit in /home2/zimbio/public_html/2/index2.php on line 3......
__________________
Mil gracias por sus enseñanzas.

Davincci
  #9 (permalink)  
Antiguo 30/06/2008, 19:28
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Formulario Para Enviar Imagenes

Sip... eso es porque le puse "error_reporting(E_ALL)" y es un notice porque pregunta si el submit (el boton para enviar el mail) se ha apretado... como no se ha apretado te tira el notice... pero nada de que preocuparse...

Si te funciona ponle "error_reporting(0)" y listo

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #10 (permalink)  
Antiguo 30/06/2008, 19:59
Avatar de davincci  
Fecha de Ingreso: enero-2005
Mensajes: 193
Antigüedad: 19 años, 3 meses
Puntos: 0
Gracias..perooo

Hola mervin gracias por tu gran ayuda, le he dado vueltas al codigo como me lo diste y le he corregido para que me llegue las seis fotos y nada...solo me llega una
__________________
Mil gracias por sus enseñanzas.

Davincci
  #11 (permalink)  
Antiguo 01/07/2008, 06:09
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Formulario Para Enviar Imagenes

Todavia estoy pensando de que manera efectiva podrias agregar las fotos al mail... se te ha ocurrido que podrias comprimir todos los archivos en uno solo?...

Es una idea.. pero cualquier otra solucion que se me ocurra te aviso...

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #12 (permalink)  
Antiguo 01/07/2008, 06:12
Avatar de davincci  
Fecha de Ingreso: enero-2005
Mensajes: 193
Antigüedad: 19 años, 3 meses
Puntos: 0
Podri ser pero..

Hola marvin, podria ser posible, pero hay personas que ni siquiera saben comprimir, por ello que gmail, hotmail, implementan este sistema de adjuntar fotos por separado, gracias de todas maneras por ayudarme a solucionar el problema. Espero que podamos dar con elchiste.
__________________
Mil gracias por sus enseñanzas.

Davincci
  #13 (permalink)  
Antiguo 01/07/2008, 06:20
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Formulario Para Enviar Imagenes

Sip... yo me referia a que tu pagina php comprimiera las fotos y las enviara como un solo archivo.

Asi no tienes que preocuparte de cuantas fotos son (exceptuando el tiempo de ejecucion de pagina y el size de ellas)

Sipos... a darle no mas :D
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #14 (permalink)  
Antiguo 01/07/2008, 06:25
Avatar de davincci  
Fecha de Ingreso: enero-2005
Mensajes: 193
Antigüedad: 19 años, 3 meses
Puntos: 0
Por que solo funciona una

Marvin, mira no entiendo por que el formulario solo me envia una foto?, he mirado la funcion y no encuentro el error, del por que no me envia las seis fotos, es decir cuando envia el mensaje me dice: ha sido adjuntada/s 6 imagen/es...pero al checar el correo solo encuentro 1. y noi es que la escoja en orden aleatorio, solo acepta una la ultima opcion.
__________________
Mil gracias por sus enseñanzas.

Davincci
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 12:02.