Foros del Web » Programando para Internet » PHP »

¿Que falla Aquí?

Estas en el tema de ¿Que falla Aquí? en el foro de PHP en Foros del Web. Hola Buenas, soy nuevo en el foro, me gustaria saber que falla en este codigo. Por favor si sois tan amables de rectificarlo, muchas gracias ...
  #1 (permalink)  
Antiguo 26/10/2010, 12:51
 
Fecha de Ingreso: octubre-2010
Ubicación: Granada
Mensajes: 10
Antigüedad: 13 años, 5 meses
Puntos: 0
Exclamación ¿Que falla Aquí?

Hola Buenas, soy nuevo en el foro, me gustaria saber que falla en este codigo.

Por favor si sois tan amables de rectificarlo, muchas gracias

Código PHP:
<?php

$mail
='[email protected]';

(
$_POST['action'] == "Enviar Formulario");
$Nombre $_POST['Nombre'];
$Telefono $_POST['Telefono'];
$Email $_POST['Email'];
$Mensaje $_POST['Mensaje'];
$varname $_FILES['archivo']['name'];
$vartemp $_FILES['archivo']['tmp_name'];
if (
$varname != "") {
$mail->AddAttachment($vartemp$varname);


$thank="gracias.html";

$message "Correo Enviado desde el formulario de contacto de la Web
Nombre:"
.$Nombre."
telefono:"
.$Telefono."
Email:"
.$Email."
Mensaje:"
.$Mensaje."";

 if (
mail($mail,"Formulario de Consulta",$message))
Header ("Location: $thank" );
?>
Mismo como esta me da el error:

Parse error: syntax error, unexpected $end in ........ line 26

La linea 26 es donde cierra php ?>


Muchas Gracias y espero poder ayudar aquí en el foro.
  #2 (permalink)  
Antiguo 26/10/2010, 12:55
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 13 años, 7 meses
Puntos: 91
Respuesta: ¿Que falla Aquí?

El error está acá

Código PHP:
Ver original
  1. if ($varname != "") {
  2. $mail->AddAttachment($vartemp, $varname);

primero, te faltó poner el corchete de cierre " } "

y segundo, $mail es una variable de tipo string, no es un object para que puedas aplicar un metodo de esa manera.

saludos
  #3 (permalink)  
Antiguo 26/10/2010, 12:58
 
Fecha de Ingreso: octubre-2010
Ubicación: Granada
Mensajes: 10
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: ¿Que falla Aquí?

Esa parte del codigo es la que envia el adjunto del formulario de contacto, ¿Hay otra manera de poder hacerlo?

Muchas gracias por tu rapida respuesta
  #4 (permalink)  
Antiguo 26/10/2010, 13:00
 
Fecha de Ingreso: octubre-2010
Ubicación: Granada
Mensajes: 10
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: ¿Que falla Aquí?

Cita:
Iniciado por Ribon Ver Mensaje
El error está acá

Código PHP:
Ver original
  1. if ($varname != "") {
  2. $mail->AddAttachment($vartemp, $varname);

primero, te faltó poner el corchete de cierre " } "

y segundo, $mail es una variable de tipo string, no es un object para que puedas aplicar un metodo de esa manera.

saludos
¿Hay otra manera? esta parte es del envió de un archivo adjunto

Puedes ayudarme con esto ¿ por favor ?
  #5 (permalink)  
Antiguo 26/10/2010, 13:49
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 13 años, 7 meses
Puntos: 91
Respuesta: ¿Que falla Aquí?

Claro, lo que tal vez quieras hacr tu es algo como lo que te deja phpmailer

http://phpmailer.worxware.com/

ai te lees la documentación y es facil.

saludos
  #6 (permalink)  
Antiguo 26/10/2010, 13:58
 
Fecha de Ingreso: octubre-2010
Ubicación: Granada
Mensajes: 10
Antigüedad: 13 años, 5 meses
Puntos: 0
Exclamación Ayudaaa! Que le pasa a mi codigo.

Estoy haciendo un formulario de contacto, os pongo el codigo:

Código PHP:
<?php

$mail
='++++@++++.++';

(
$_POST['action'] == "Enviar Formulario");
$Nombre $_POST['Nombre'];
$Telefono $_POST['Telefono'];
$Email $_POST['Email'];
$Mensaje $_POST['Mensaje'];
$varname $_FILES['archivo']['name'];
$vartemp $_FILES['archivo']['tmp_name'];
if (
$varname != "") {}
$mail->AddAttachment($vartemp$varname);


$thank="gracias.html";

$message "Correo Enviado desde el formulario de contacto de la Web
Nombre:"
.$Nombre."
telefono:"
.$Telefono."
Email:"
.$Email."
Mensaje:"
.$Mensaje."";

 if (
mail($mail,"Formulario de Consulta",$message))
Header ("Location: $thank" );
?>
Quiero saber que me falla, Se que esta en:

Código PHP:
if ($varname != "") {}
$mail->AddAttachment($vartemp$varname); 
El formulario de contacto que estoy haciendo en la parte que falla hace que se envie un archivo adjunto a mi correo desde la web.

Si quito esa parte funciona a la perfeccion envia el correo pero no me llega ningun adjunto.

Me gustaria saber que puedo utilizar o que alguien me arregle el codigo.

Gracias de antemano

Me urge por favor
  #7 (permalink)  
Antiguo 26/10/2010, 14:02
 
Fecha de Ingreso: octubre-2010
Ubicación: Granada
Mensajes: 10
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: ¿Que falla Aquí?

Ribon, ese no es mi problema el mensaje se envia si quito las lineas que fallan pero recibo sin adjunto.
  #8 (permalink)  
Antiguo 26/10/2010, 14:04
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Ayudaaa! Que le pasa a mi codigo.

Que estas utilizando para realizar el attach?

revisate la documentación aqui: http://php.net/manual/es/function.mail.php

Saludos.
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #9 (permalink)  
Antiguo 26/10/2010, 14:09
 
Fecha de Ingreso: octubre-2010
Ubicación: Granada
Mensajes: 10
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Ayudaaa! Que le pasa a mi codigo.

No se mucho de Php, pero me hace falta crear un formulario que desde la web me puedan enviar 2 archivos adjuntos y me llegue al correo electrónico.

¿Algún código?
  #10 (permalink)  
Antiguo 26/10/2010, 14:11
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 13 años, 7 meses
Puntos: 91
Respuesta: ¿Que falla Aquí?

Excacto, al inicio de tu codigo declaraste $mail como string

$mail = "[email protected]";

luego de eso en las lineas que fallas aplicas

$mail->AddAttachment($vartemp, $varname);

Cosa que no esta permitido debido a que $mail es un string no un objeto de tipo mail o algo así, por eso puse omo referencia phpmailer, una librería que te permite enviar correos incluso con adjuntos.

saludos
  #11 (permalink)  
Antiguo 26/10/2010, 14:15
 
Fecha de Ingreso: octubre-2010
Ubicación: Granada
Mensajes: 10
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: ¿Que falla Aquí?

Haber, yo cuando envio un mensaje desde el formulario de contacto desde la web, llega al correo con el remitente de PhpMailer. eso quiere decir que esta instalado en el servidor ya no?

Entonces como tendria que poner el codigo podrias arreglarmelo.

Muchas Gracias
  #12 (permalink)  
Antiguo 26/10/2010, 14:16
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Ayudaaa! Que le pasa a mi codigo.

Estos son algunos de los ejemplos publicadosp or usuarios
en el link.

Realmente tienes que basarte en el contenido de la coleccion
$_FILES

akam
Código PHP:
<?php
$to      
$_POST['to']; 
$email   $_POST['email']; 
$name    $_POST['name'];
$subject $_POST['subject']; 
$comment $_POST['message'];

$To          strip_tags($to);
$TextMessage =strip_tags(nl2br($comment),"<br>");
$HTMLMessage =nl2br($comment);
$FromName    =strip_tags($name);
$FromEmail   =strip_tags($email);
$Subject     =strip_tags($subject);

$boundary1   =rand(0,9)."-"
.rand(10000000000,9999999999)."-"
.rand(10000000000,9999999999)."=:"
.rand(10000,99999);
$boundary2   =rand(0,9)."-".rand(10000000000,9999999999)."-"
.rand(10000000000,9999999999)."=:"
.rand(10000,99999);

 
for(
$i=0$i count($_FILES['youfile']['name']); $i++){
if(
is_uploaded_file($_FILES['fileatt']['tmp_name'][$i]) && 
   !empty(
$_FILES['fileatt']['size'][$i]) && 
   !empty(
$_FILES['fileatt']['name'][$i])){
     
$attach      ='yes';
$end         ='';

   
$handle      =fopen($_FILES['fileatt']['tmp_name'][$i], 'rb'); 
   
$f_contents  =fread($handle$_FILES['fileatt']['size'][$i]); 
   
$attachment[]=chunk_split(base64_encode($f_contents));
   
fclose($handle); 

$ftype[]       =$_FILES['fileatt']['type'][$i];
$fname[]       =$_FILES['fileatt']['name'][$i];
}
}

/***************************************************************
 Creating Email: Headers, BODY
 1- HTML Email WIthout Attachment!! <<-------- H T M L ---------
 ***************************************************************/
#---->Headers Part
$Headers     =<<<AKAM
From: $FromName <$FromEmail>
Reply-To: $FromEmail
MIME-Version: 1.0
Content-Type: multipart/alternative;
    boundary="$boundary1"
AKAM;

#---->BODY Part
$Body        =<<<AKAM
MIME-Version: 1.0
Content-Type: multipart/alternative;
    boundary="$boundary1"

This is a multi-part message in MIME format.

--$boundary1
Content-Type: text/plain;
    charset="windows-1256"
Content-Transfer-Encoding: quoted-printable

$TextMessage
--$boundary1
Content-Type: text/html;
    charset="windows-1256"
Content-Transfer-Encoding: quoted-printable

$HTMLMessage

--$boundary1--
AKAM;

/***************************************************************
 2- HTML Email WIth Multiple Attachment <<----- Attachment ------
 ***************************************************************/
 
if($attach=='yes') {

$attachments='';
$Headers     =<<<AKAM
From: $FromName <$FromEmail>
Reply-To: $FromEmail
MIME-Version: 1.0
Content-Type: multipart/mixed;
    boundary="$boundary1"
AKAM;

for(
$j=0;$j<count($ftype); $j++){
$attachments.=<<<ATTA
--$boundary1
Content-Type: $ftype
[$j];
    name="$fname
[$i]"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
    filename="$fname
[$j]"

$attachment
[$j]

ATTA;
}

$Body        =<<<AKAM
This is a multi-part message in MIME format.

--$boundary1
Content-Type: multipart/alternative;
    boundary="$boundary2"

--$boundary2
Content-Type: text/plain;
    charset="windows-1256"
Content-Transfer-Encoding: quoted-printable

$TextMessage
--$boundary2
Content-Type: text/html;
    charset="windows-1256"
Content-Transfer-Encoding: quoted-printable

$HTMLMessage

--$boundary2--

$attachments
--$boundary1--
AKAM;
}

/***************************************************************
 Sending Email
 ***************************************************************/
$ok=mail($To$Subject$Body$Headers);
echo 
$ok?"<h1> Mail Sent</h1>":"<h1> Mail not SEND</h1>";
?>
panoramical:
Código PHP:

<?php

if(isset($_POST['submit']))
{

// Reads in a file (eml) a user has inputted
function eml_read_in()
{

    
$file_ext stristr($_FILES['upload']['name'], '.');
    
    
// If it is an eml file
    
if($file_ext == '.eml')
    {
    
        
// Define vars
        
$dir 'eml/';
        
$file $dir.basename($_FILES['upload']['name']);
        
$carry 'yes';
        
        
// Try and upload the file
        
if(move_uploaded_file($_FILES['upload']['tmp_name'], $file))
        {
        
            
// Now attempt to read the file
            
if($eml_file file($file))
            {
            
                
// Create the array to store preliminary headers
                
$headers = array();
                
$body '';
                
$ii = -1;

                
                
// For every line, carry out this loop
                
foreach($eml_file as $key => $value)
                {
                
                    
$pattern '^<html>';
                    
                    if(((
eregi($pattern$value)))||($carry == 'no'))
                    {
                    
                        
// Stop putting data into the $headers array
                        
$carry 'no';
                        
$i++;
                        
$body .= $value;
                        
                    }
                    
                    else
                    {    
                        
                        
// Separate each one with a colon
                        
if(($eml_file_expl explode(':'$value))&&($carry == 'yes'))
                        {

                        
                            
// The row has been split in half at least...
                            
if(isset($eml_file_expl[1]))
                            {
        
                                
// Put it into the preliminary headers
                                
$headers[$eml_file_expl[0]] = $eml_file_expl[1];
                            
                                
// There might be more semicolons in it...
                                
for($i=2;$i<=$count;$i++)
                                {
                            
                                    
// Add the other values to the header
                                    
$headers[$eml_file_expl[0]] .= ':'.$eml_file_expl[$i];
                                    
                                }
                            
                            }    
                            
                        }        
                    
                    }
                    
                }
                
                
// Clear up the headers array
                
$eml_values = array();
                
$eml_values[to] = $headers[To];
                
$eml_values[from] = $headers[From];
                
$eml_values[subject] = $headers[Subject];
                
$eml_values['reply-to'] = $headers['Reply-To'];
                
$eml_values['content-type'] = $headers['Content-Type'];
                
$eml_values[body] = $body;
                
                
unlink($file);
        
                return 
$eml_values;
                
                
                        
            }
            
        }
        
        else
        {
        
            return 
'<p>File not uploaded - there was an error</p>';
                        
        }
        
    }
    
}    

// Takes information automatically from the $_FILES array...
$eml_pattern eml_read_in()

// Headers definable...through eml_read_in() again, but I'm guessing they'll be the same for each doc...

if(mail($eml_pattern[to], $eml_pattern[subject], $eml_pattern[content], $headers)) echo 'Mail Sent';

?>
Saludo.
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #13 (permalink)  
Antiguo 26/10/2010, 14:34
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 8 meses
Puntos: 105
Respuesta: ¿Que falla Aquí?

Podrias solucionarlo, si no confundieras $mail con $email.

$mail es la variable de la libreria phpmailer.
$email es la variable que contiene el correo electronico.

Suerte
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #14 (permalink)  
Antiguo 26/10/2010, 14:42
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 8 meses
Puntos: 105
Respuesta: Ayudaaa! Que le pasa a mi codigo.

Podrias solucionarlo, si no confundieras $mail con $email.

$mail es la variable de la libreria phpmailer.
$email es la variable que contiene el correo electronico.

Y por favor, no dupliques temas....
http://www.forosdelweb.com/f18/que-falla-aqui-854213/
http://www.forosdelweb.com/f18/ayuda...codigo-854239/
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #15 (permalink)  
Antiguo 26/10/2010, 14:51
 
Fecha de Ingreso: octubre-2010
Ubicación: Granada
Mensajes: 10
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: ¿Que falla Aquí?

Me da este error:

Fatal error: Call to a member function AddAttachment() on a non-object in........line 14

el codigo que tengo puesto es:

Código PHP:
<?php

$email
='***@***.***';

require(
"class.phpmailer.php");
(
$_POST['action'] == "Enviar Formulario");
$Nombre $_POST['Nombre'];
$Telefono $_POST['Telefono'];
$Email $_POST['Email'];
$Mensaje $_POST['Mensaje'];
$varname $_FILES['archivo']['name'];
$vartemp $_FILES['archivo']['tmp_name'];
if (
$varname != "") {}
$mail->AddAttachment($vartemp,$varname);

$thank="gracias.html";

$message "Correo Enviado desde el formulario de contacto de la Web
Nombre:"
.$Nombre."
telefono:"
.$Telefono."
Email:"
.$Email."
Mensaje:"
.$Mensaje."";

 if (
mail($mail,"Formulario de Consulta",$message))
Header ("Location: $thank" );
?>
Haber si alguien me puede solucionar esto....

Muchas Gracias
  #16 (permalink)  
Antiguo 26/10/2010, 15:01
 
Fecha de Ingreso: octubre-2010
Ubicación: Granada
Mensajes: 10
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Ayudaaa! Que le pasa a mi codigo.

No me solucionas nada con esa respuesta, tengo otros formularios con $mail y mi direccion de correo y me llegan perfectamente, lo que quiero es que desde el formulario de la pagina cargar un archivo y que me llegue de adjunto a mi correo.

Gracias
  #17 (permalink)  
Antiguo 26/10/2010, 15:03
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 8 meses
Puntos: 105
Respuesta: ¿Que falla Aquí?

Amigo ese codigo esta fatal por dos grandes razones.
1. Usas mal la libreria phpmailer (En San Google hay muchos ejemplos phpmailer)
2. Estas adjuntando un archivo temporal (Antes de adjuntarlo deberias cargarlo al servidor).

Te recomiendo leer http://blog.unijimpe.net/introduccion-a-phpmailer/, justo hay ejemplos de archivos adjuntos.

Suerte
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #18 (permalink)  
Antiguo 26/10/2010, 15:06
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 8 meses
Puntos: 105
Respuesta: Ayudaaa! Que le pasa a mi codigo.

Si puedes usar $mail para la direccion de correo, lo malo es que $mail es usado para tu phpmailer !!!!

Y una vez mas decidete en que post vas a estar.... tienes estos dos con el mismo tema
http://www.forosdelweb.com/f18/ayuda...codigo-854239/
http://www.forosdelweb.com/f18/que-falla-aqui-854213/

No se porque ningun moderador, aun no eliminan uno de los dos o los une.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #19 (permalink)  
Antiguo 26/10/2010, 16:48
 
Fecha de Ingreso: octubre-2010
Ubicación: Granada
Mensajes: 10
Antigüedad: 13 años, 5 meses
Puntos: 0
Exclamación Respuesta: ¿Que falla Aquí?

Ya lo eh solucionado:


Aqui el codigo que utilice

PHP

Código PHP:
<?php
require("class.phpmailer.php");
if (
$_POST['action'] == "send") {
$varname $_FILES['archivo']['name'];
$vartemp $_FILES['archivo']['tmp_name'];

$mail = new PHPMailer();
$mail->Host "localhost";
$mail->From "[email protected]";
$mail->FromName "desde formuario";
$mail->Subject $_POST['asunto'];
$mail->AddAddress($_POST['destino']);
if (
$varname != "") {
$mail->AddAttachment($vartemp$varname);
}
$body "<strong>Mensaje</strong><br><br>";
$body.= $_POST['mensaje']."<br>";
$body.= "<i>Enviado formulario</i>";
$mail->Body $body;
$mail->IsHTML(true);
$mail->Send();

?>
Subi al servidor los archivos class.phpmailer.php y los de el servidor de smtp

y funciono a la perfección

Gracias a todos por ayudarme, y lograr que me caliente la cabeza...jeje

Un Saludo

Y aquí esta el codigo.

Si alguien lo necesita que me lo pida.

Etiquetas: formulario
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 09:23.