Foros del Web » Programando para Internet » PHP »

Function Mail en PHP 5.2.9

Estas en el tema de Function Mail en PHP 5.2.9 en el foro de PHP en Foros del Web. Hola.. me esta pasando algo que considero "misterioso" Tengo un formulario que completo mediante un .swf, el cual envia la info a un archivo php. ...
  #1 (permalink)  
Antiguo 06/06/2009, 20:17
Avatar de ss007  
Fecha de Ingreso: marzo-2002
Mensajes: 205
Antigüedad: 22 años, 1 mes
Puntos: 0
Function Mail en PHP 5.2.9

Hola.. me esta pasando algo que considero "misterioso"
Tengo un formulario que completo mediante un .swf, el cual envia la info a un archivo php.

El codigo funciona perfectamente en la version 5.2.6 de php, pero en la versión 5.2.9 no...

Aclaro que, hasta donde sé, es completamente valido en PHP cambiar las llaves {} por : endif. De todas manera tambien lo probe del modo convencional, con el mismo resultado


Código:
<?php
$adminaddress = "[email protected]";
$siteaddress ="http://www.miweb.com";
$sitename = "Mi Pagina";
$date = date("m/d/Y H:i:s");
if ($REMOTE_ADDR == "") $ip = "no ip";
     else $ip = getHostByAddr($REMOTE_ADDR);
if ($action != ""):
    mail("$adminaddress","Jano - Contrataciones",
    "Alguien visito tu website esperando que te contactes\n
     Fecha/Hora:  $date
     Nombre: $fname
     Apellido: $lname
     Email: $email
     Telefono: $telno\n
     Mensaje:
     ------------------------------
     $comments
     Info :
     ------------------------------
     Host: $ip",
     "FROM:$adminaddress");
      mail("$email","Gracias por visitar mi website",
      "Hola $fname,\n
      A la brevedad te respondere.\n
      Saludos afectuosos,
     $sitename
     $siteaddress","FROM:Mi");
     $sendresult = "Gracias por contactarte con <a href = \"$siteaddress\" target =       \"_blank\"><u>$sitename</u></a>. Recibiras su respuesta a la brevedad. ";
     $send_answer = "answer=";
     $send_answer .= rawurlencode($sendresult);
     echo "$send_answer";
     endif;
?>
Gracias.
__________________
MonaS
  #2 (permalink)  
Antiguo 06/06/2009, 20:23
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Te dice algun error en especifico o simplemente no aparece lo que quieres?

Para salir de dudas trata que la información que escribes directamente en la funcion de mail() pasala primero a variables y luego llama las variables en la funcion.

Última edición por GatorV; 06/06/2009 a las 20:57
  #3 (permalink)  
Antiguo 06/06/2009, 20:38
Avatar de ss007  
Fecha de Ingreso: marzo-2002
Mensajes: 205
Antigüedad: 22 años, 1 mes
Puntos: 0
Respuesta: Function Mail en PHP 5.2.9

No me muestra ningun error... solo queda en la pagina "enviando mail" ....
__________________
MonaS
  #4 (permalink)  
Antiguo 06/06/2009, 20:40
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Function Mail en PHP 5.2.9

Hiciste lo de las variables?

Y para verificar te aseguraste que configuraras bien el php.ini?

Última edición por abimaelrc; 06/06/2009 a las 20:58
  #5 (permalink)  
Antiguo 06/06/2009, 20:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Function Mail en PHP 5.2.9

¿Tienes un servidor SMTP instalado y configurado correctamente para poder hacer uso de mail()?

Saludos.
  #6 (permalink)  
Antiguo 06/06/2009, 21:47
Avatar de ss007  
Fecha de Ingreso: marzo-2002
Mensajes: 205
Antigüedad: 22 años, 1 mes
Puntos: 0
Si, lo tengo configurado.

En principio tenia configurado el Xampp con Mercury con php 5.2.6 y todo funcionaba.

La comprobacion real la hice sobre dos servidores web, al ver que no funcionaba sobre el que debe ir, probe en otro y si funcionaba.

Descubri que la unica diferencia era la version de PHP, por eso actualice el Xampp que tambien viene con php 5.2.9

A partir de eso, el codigo dejo de funcionar (tal cual sucede en la web a la que debo subirlo)

Es asi que deduzco que el problema esta en la version.

Cita:
Para salir de dudas trata que la información que escribes directamente en la funcion de mail() pasala primero a variables y luego llama las variables en la funcion.
Acabo de probar otro codigo mas simple con if y no funciono... pero lo probe sin los if y lo envio, supongo entonces, que el problema no esta en la function mail tampoco...

Código:
<?php
	$dest = "[email protected]";
	$head = "From: ".$_POST['email']."\r\n";
	$head.= "To: [email protected]\r\n";
	$msg.= "NOMBRE:   ".$_POST['nombre']."\n";
	$msg.= "EMPRESA:  ".$_POST['empresa']."\n";
	$msg.= "EMAIL:    ".$_POST['email']."\n";
	$msg.= "HORA:     ".date("h:i:s a ")."\n";
	$msg.= "FECHA:    ".date("D, d M Y")."\n";
	$msg.= "------------------------------- \n\n";
	$msg.= $_POST['mensaje']."\n\n";
	$msg.= "------------------------------- \n";
			
	mail($dest, "Comentarios", $msg, $head);
?>
__________________
MonaS

Última edición por GatorV; 06/06/2009 a las 23:06
  #7 (permalink)  
Antiguo 06/06/2009, 22:01
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Function Mail en PHP 5.2.9

Pues en vez de trabajar de esa forma con los if trata entonces con

if(empty($REMOTE_ADDR)){}

if(!empty($action)){}

Me dejas saber
  #8 (permalink)  
Antiguo 06/06/2009, 22:13
Avatar de ss007  
Fecha de Ingreso: marzo-2002
Mensajes: 205
Antigüedad: 22 años, 1 mes
Puntos: 0
Respuesta: Function Mail en PHP 5.2.9

E X C E L E N T E !!!

Cita:
if(empty($REMOTE_ADDR)){}

if(!empty($action)){}

Gracias... esa era la solucion
__________________
MonaS
  #9 (permalink)  
Antiguo 06/06/2009, 23:29
Avatar de ss007  
Fecha de Ingreso: marzo-2002
Mensajes: 205
Antigüedad: 22 años, 1 mes
Puntos: 0
Respuesta: Function Mail en PHP 5.2.9

Malas Noticias....

Acabo de probarlo sobre el servidor y sigue sin funcionar!!!! (cuando anduvo fue sobre XAMPP)

Probe el codigo simple anterior (sin if) y funciona...

pueden verlo en http://quoviz.host56.com/

AYUDA!!! (otra vez!! )


Gracias
__________________
MonaS
  #10 (permalink)  
Antiguo 07/06/2009, 00:21
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Function Mail en PHP 5.2.9

Pues lo más probable es que tienes declarado en tu php.ini
register_globals = On

Y no debe ser así cambialo a
register_globals = Off

Y la variable que dice
empty($REMOTE_ADDR)

debe ser
empty($_SERVER["REMOTE_ADDR"])

El $action tambien hay que cambiarlo, de donde tu sacas ese $action?

Me dejas saber
  #11 (permalink)  
Antiguo 07/06/2009, 12:54
Avatar de ss007  
Fecha de Ingreso: marzo-2002
Mensajes: 205
Antigüedad: 22 años, 1 mes
Puntos: 0
Respuesta: Function Mail en PHP 5.2.9

Si, action viene de AS...
Código:
fscommand ("allowscale", "false");
fname1.tabIndex = 1; 
lname1.tabIndex = 2; 
email1.tabIndex = 3; 
telno1.tabIndex = 4; 
comments1.tabIndex = 5; 
mailform = "mailform.php";
confirm = "Confirmando el envio"
action = "send";
Selection.setFocus("fname");
function validate (address) {
	if (address.length>=7) {
		if (address.indexOf("@")>0) {
			if ((address.indexOf("@")+2)<address.lastIndexOf(".")) {
				return (true);
			}
		}
	}
	return (false);
}
function formcheck () {
	if ((((email == null)) || (email.length<1)) || (email == "ERROR! E-Mail Incorrecto")) {
		email = "ERROR! E-Mail Incorrecto";
		action = "";
	}
	if (!validate(email)) {
		email = "E-Mail Incorrecto";
		action = "";
	}
	if ((((fname == null)) || (fname.length<1)) || (fname == "ERROR! Address not valid")) {
		fname = "Ingrese su Nombre";
		action = "";
	}
	if ((((lname == null)) || (lname.length<1)) || (lname == "ERROR! Address not valid")) {
		lname = "Ingrese su Apellido";
		action = "";
	}
	if ((validate(email)) && (email != "ERROR!") && (fname != "") && (lname != "")) {
		action = "send";
		loadVariablesNum (mailform, 0, "POST");
		gotoAndPlay ("wait");
	}
}
stop ();

Cita:
Y no debe ser así cambialo a
register_globals = Off
Sin embargo, antes de postear pensando que ese podia ser el problema, en el Xampp lo pase a On y aun asi, funcionaba... De todas maneras no puedo cambiar el php.ini del servidor y no se como hacerlo por codigo :(
__________________
MonaS
  #12 (permalink)  
Antiguo 07/06/2009, 13:09
Avatar de ss007  
Fecha de Ingreso: marzo-2002
Mensajes: 205
Antigüedad: 22 años, 1 mes
Puntos: 0
Respuesta: Function Mail en PHP 5.2.9

Acabo de probar nuevamente quitando TODOS los if y el mail se envia... solo que a la casilla no llegan las variables ($fname, $lname, etc). Llega asi:
Cita:
Alguien visito tu website esperando que te contactes


Fecha/Hora: 06/07/2009 12:05:54

Nombre:
Apellido:
Email:
Telefono:

Mensaje:
------------------------------





Info :
------------------------------
Host:
A propósito... en el servidor web register_globals esta Off
__________________
MonaS
  #13 (permalink)  
Antiguo 07/06/2009, 13:47
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Function Mail en PHP 5.2.9

porque tienes que declararlas como debe ser ejemplo si envias los datos por el metodo de POST pues $_POST["fname"] etc

Si es por GET seria $_GET["fname"] etc

Me dejas saber
  #14 (permalink)  
Antiguo 07/06/2009, 14:08
Avatar de ss007  
Fecha de Ingreso: marzo-2002
Mensajes: 205
Antigüedad: 22 años, 1 mes
Puntos: 0
Respuesta: Function Mail en PHP 5.2.9

Logre que funcionara... con el codigo "casi" original (cambiando el if como cuando funciono en el Xammp) sin agregarle _$POST.

Cree un archivo .htaccess con la siguiente linea:

Código:
php_flag register_globals on
Solo me preocupa que consecuencias puede traerme haberlo habilitado, ya que por defecto viene deshabilitado... (register_globals = off)
__________________
MonaS
  #15 (permalink)  
Antiguo 07/06/2009, 14:18
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Function Mail en PHP 5.2.9

No es seguro debes usar el $_POST o $_GET

Por eso php declaro por default que estuviera off para la version 6 de php tengo entendido que se va a quitar los register_globals por lo peligroso que es usarlo
  #16 (permalink)  
Antiguo 07/06/2009, 19:04
Avatar de ss007  
Fecha de Ingreso: marzo-2002
Mensajes: 205
Antigüedad: 22 años, 1 mes
Puntos: 0
ok.. voy a probar entonces con $_POST.... en un rato te comentare como me fue

Se me complico con $_POST... quizas no estoy colacandolo como se debe...

Cambie tambien mi Xampp a register_global = Off para comprobar desde alli

Puedes ayudarme?
__________________
MonaS

Última edición por GatorV; 08/06/2009 a las 08:11
  #17 (permalink)  
Antiguo 08/06/2009, 06:36
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Function Mail en PHP 5.2.9

Escribe el codigo
  #18 (permalink)  
Antiguo 08/06/2009, 11:32
Avatar de ss007  
Fecha de Ingreso: marzo-2002
Mensajes: 205
Antigüedad: 22 años, 1 mes
Puntos: 0
Respuesta: Function Mail en PHP 5.2.9

Es igual al anterior con los cambios que me habias dicho (este es el que anda con register_globals=On

Código:
<?php
$adminaddress = "[email protected]";
$siteaddress ="http://www.miweb.com";
$sitename = "Mi Pagina";
$date = date("m/d/Y H:i:s");

if (empty($REMOTE_ADDR)) {
     $ip = "no ip";
     }else{
      $ip = getHostByAddr($REMOTE_ADDR);
}

if (!empty($action)){
    mail("$adminaddress","Mi Web",
    "Alguien visito tu website esperando que te contactes\n
     Fecha/Hora:  $date
     Nombre: $fname
     Apellido: $lname
     Email: $email
     Telefono: $telno\n
     Mensaje:
     ------------------------------
     $comments
     Info :
     ------------------------------
     Host: $ip",
     "FROM:$adminaddress");
      
     mail("$email","Gracias por visitar mi website",
      "Hola $fname,\n
      A la brevedad te respondere.\n
      Saludos afectuosos,
     $sitename
     $siteaddress","FROM:Mi Web");
     
     $sendresult = "Gracias por contactarte con <a href = \"$siteaddress\" target =       \"_blank\"><u>$sitename</u></a>. Recibiras su respuesta a la brevedad. ";
     $send_answer = "answer=";
     $send_answer .= rawurlencode($sendresult);
     echo "$send_answer";
}
?>
Probe con:

Cita:
"Alguien visito tu website esperando que te contactes\n
Fecha/Hora:" $date
"Nombre:" $_POST['$fname']
"Apellido:" $_POST['$lname']
"Email:" $_POST['$email']
"Telefono:" $_POST['$telno']"\n"
"Mensaje:
------------------------------"
$_POST['$comments']

"Info :
------------------------------
Host:" $ip,
"FROM:$adminaddress");
Tambien con las variables por afuera de este codigo...

Cita:
$fname=$_POST['fname']
Espero que se pueda entender. Gracias
__________________
MonaS
  #19 (permalink)  
Antiguo 08/06/2009, 11:53
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Function Mail en PHP 5.2.9

Cual es el metodo que tu usas para enviar la informacion en el form. GET o POST? tambien de donde tu sacas

$REMOTE_ADDR

y

$action?
  #20 (permalink)  
Antiguo 08/06/2009, 12:46
Avatar de ss007  
Fecha de Ingreso: marzo-2002
Mensajes: 205
Antigüedad: 22 años, 1 mes
Puntos: 0
Respuesta: Function Mail en PHP 5.2.9

$action lo saco del formulario flash (mas arriba esta el codigo que te copie cuando me preguntaste :D)

$REMOTE_ADDR lo recoje en el mismo php.

La info del formulario va por POST...

Gracias
__________________
MonaS
  #21 (permalink)  
Antiguo 08/06/2009, 14:42
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Function Mail en PHP 5.2.9

pues tienes que hacerlo así

Código PHP:
<?php
if (empty($_SERVER["REMOTE_ADDR"])) {
     
$ip "no ip";
     }else{
      
$ip getHostByAddr($_SERVER["REMOTE_ADDR"]);
}
//Como los POST estan dentro de las comillas tienes que demostrarlo con {} las variables normales no son necesarias escribirlas dentro de{}
if (!empty($_POST["action"])){
    
$mensaje "Alguien visito tu website esperando que te contactes\n
     Fecha/Hora:  {$_POST["date"]}
     Nombre: {$_POST["fname"]}
     Apellido: {$_POST["lname"]}
     Email: {$_POST["email"]}
     Telefono: {$_POST["telno"}\n
     Mensaje:
     ------------------------------
     {$_POST["comments"]}
     Info :
     ------------------------------
     Host: $ip"
;

     
$headers "FROM: {$_POST["adminaddress"]}";

    
mail($_POST["adminaddress"],"Mi Web",$mensaje$headers);

     
$mensajeUsuario =  "Hola {$_POST["fname"]},\n
      A la brevedad te respondere.\n
      Saludos afectuosos,
     {$_POST["sitename"]}
     {$_POST["siteaddress"]}"
;
     
$headersUsuario "FROM: email_del_web@ dominio.com"
     
mail($_POST["email"],"Gracias por visitar mi website"$mensajeUsuario,$headersUsuario );
     
     
$sendresult "Gracias por contactarte con <a href = \"{$_POST["siteaddress"]}\" target = \"_blank\"><u>$sitename</u></a>. Recibiras su respuesta a la brevedad. ";
     
$send_answer "answer=";
     
$send_answer .= rawurlencode($_POST["sendresult"]);
     echo 
"$send_answer";
}
?>
Acuerdate cambiar el register_global = Off
  #22 (permalink)  
Antiguo 08/06/2009, 20:30
Avatar de ss007  
Fecha de Ingreso: marzo-2002
Mensajes: 205
Antigüedad: 22 años, 1 mes
Puntos: 0
Respuesta: Function Mail en PHP 5.2.9

Me esta dando un error en la linea 37 que es
Cita:
mail($_POST["email"],"Gracias por visitar mi website", $mensajeUsuario,$headersUsuario );
Cambie $headersUsuario x $headers...

Las variables $adminaddress, $siteaddress y $sitename las declaro al comienzo del codigo

Cita:
<?php
$adminaddress = "[email protected]";
$siteaddress ="http://www.miweb.com";
$sitename = "Mi Pagina";
Tambien debo usar $_POST?

Gracias
__________________
MonaS
  #23 (permalink)  
Antiguo 08/06/2009, 20:38
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Function Mail en PHP 5.2.9

No esas no
  #24 (permalink)  
Antiguo 08/06/2009, 23:19
Avatar de ss007  
Fecha de Ingreso: marzo-2002
Mensajes: 205
Antigüedad: 22 años, 1 mes
Puntos: 0
Respuesta: Function Mail en PHP 5.2.9

F U N C I O N O O O O !!!

Gracias Abimaelrc por ayudarme y enseñarme!!
__________________
MonaS
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 21:47.