Foros del Web » Programando para Internet » PHP »

¿Arreglo en formulario?

Estas en el tema de ¿Arreglo en formulario? en el foro de PHP en Foros del Web. Hola gente, llevo tiempo con una duda...y esque como mas de uno sabreis me peleo bastante con el php ... Tengo el siguiente formulario: Código: ...
  #1 (permalink)  
Antiguo 14/07/2010, 02:58
Avatar de siken  
Fecha de Ingreso: octubre-2008
Mensajes: 52
Antigüedad: 15 años, 6 meses
Puntos: 1
¿Arreglo en formulario?

Hola gente, llevo tiempo con una duda...y esque como mas de uno sabreis me peleo bastante con el php ...

Tengo el siguiente formulario:
Código:
<?php          
@putenv("TZ=Europe/Paris");
//ERROR_REPORTING(E_ALL);
// * VictorCL Formulario de Contacto V 1.0
// * Este es un simple formulario de contacto que pudes integrar facilmente 
// * en tu pagina web. puedes ver un ejemplo en mi web http://www.victorcl.com/php
//-----------------------

//*****************************************************************************
//Aqui tienes que colocar el mail al que quieres que llegen los mails
//desde el formulario de contacto, te recomiendo que no uses un 
//correo de hotmail, porque hotmail aveces los detecta como spam.
$mail_destino='[email protected]'; 

//Aqui coloca el mensaje que quieres que aparesca como titulo del mail.
$titulo="Mensaje desde el formulario de contacto de tu web";

//********************************************
//Aqui no tienes que tocar nada
$msg="";
$email_form="";
$nombre_form="";
$mensaje_form="";


if(isset($_POST['nombre'])){
	
$email_form=$_POST['email'];
$nombre_form=$_POST['nombre'];
$mensaje_form=$_POST['mensaje'];

/*Aqui verificamos si nos estan haciendo spam */
function verificar_spam($verificar) {
	$msg="";
  $palabras_prohibidas = array(
                "content-type:"
                ,"mime-version:"
                ,"multipart/mixed"
		            ,"Content-Transfer-Encoding:"
                ,"bcc:"
		            ,"cc:"
		            ,"to:"   );
  
  foreach($palabras_prohibidas as $palabra) {
    if(eregi($palabra, strtolower($verificar))) {
      $msg.= "Se encontro una palabra prohibida <b><u>$palabra</u></b> en el nombre o Email<br />";
    }
  }
  
   if(preg_match("/(%0A|%0D|\\n+|\\r+)/i", $verificar) != 0) {
     $msg.= "El nombre o Email no pude contener saltos de linea <br />";
   }
  return $msg;
}


$msg.=verificar_spam($email_form);
$msg.=verificar_spam($nombre_form);

/*Aqui termina la la verificacion de spam */

/*Aqui verificamos los campos del formulario */

if($email_form != "")
{
	$email_form=trim($email_form);
  if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$", $email_form))
  $msg.="Tu E-mail es invalido <br />";
}else
 $msg.="Tu e-mail es obligatorio <br />";

if($nombre_form != ""){
	$nombre_form=trim($nombre_form);
	if(!preg_match("/^[\w\s_]+$/",$nombre_form))
	$msg.="El nombre no es valido <br />";
}else
$msg.="Tu nombre es obligatorio <br />";

if($mensaje_form == "")	$msg.="El mensaje es obligatorio <br />";


if($msg == ""){
 $headers  = "MIME-Version: 1.0\r\n"; 
 $headers .= "From: ".$email_form."\n"; 
 $headers .= "To: ".$mail_destino."\n"; 
 $headers .= "Reply-To: ".$email_form."\n";
 $headers .= "Return-Path: ".$email_form."\n";
 $headers .= "X-Priority: 1\n"; 
 $headers .= "X-Mailer:PHP ".phpversion()."\n";
 $headers .= "Content-Type: text/plain; charset=iso-8859-1";
 $contenido="Te han enviado un mensaje ".$nombre_form." desde el formulario de contacto de tu web \r\n";
 $contenido.="Nombre: ".$nombre_form."\r\n";
 $contenido.="Email: ".$email_form."\r\n";
 $contenido.="Mensaje: ".$mensaje_form."\r\n"; 
 
 if(mail($mail_destino, $titulo, $contenido, $headers))
 {
 header("location:".$_SERVER['PHP_SELF']."?ok=ok");
 
 }
 else
 $msg.="Ocurrio un error al enviar el mensaje";
 
}

}
if(isset($_GET['ok'])) $msg="El mensaje se ha enviado correctamente";
	
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Formulario Contacto </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.texto{color:#42606C;font-weight:bold;font-family: Geneva, Arial, Helvetica, sans-serif;}
body td,form {font-family:verdana;font-size:11px;color:#535353;}
form input,textarea{margin-bottom:4px;font-size:11px;background-color:#F0F0F0;border:1px solid #C0C0C0;}
.boton {color:#FFFFFF;height:20px;width:55px;border:1px solid #698B9A;background-color:#8BA6B1;font-size:11px;font-weight:bold;}
</style>	
</head>
<body>
<table cellspacing='2' cellpadding='2'>
	<tr>
		<td>
			<!-- Formulario de contacto creado por VictorCL , descargatelo en www.victorcl.com -->
			<span style='font-size:11px;font-weight:bold;color:#F20000;'><?php echo $msg; ?></span>
			
		</td>
	</tr>
	<tr>
	 <td>
<form action="<?php echo $_SERVER['PHP_SELF']?>" method='post'>
<span class='texto'>* Nombre:</span><br />
<input type='text' name='nombre' size='28' value="<?php echo $nombre_form;?>"/><br />
<span class='texto'>* Tu email:</span><br />
<input type='text' name='email' size='28' value="<?php echo $email_form;?>" /><br />
<span class='texto'>* Mensaje:</span><br />
<textarea name='mensaje' rows='10' cols='20'><?php echo $mensaje_form;?></textarea><br />
<input type='submit' value='Enviar' class='boton' />
</form>
</td>
</tr>
</table>
</body>
</html>
Me da el siguiente mensaje:
Ocurrio un error al enviar el mensaje

Porque puede ser? me estoy volviendo loco! Gracias

Última edición por siken; 14/07/2010 a las 03:44
  #2 (permalink)  
Antiguo 14/07/2010, 04:31
Avatar de siken  
Fecha de Ingreso: octubre-2008
Mensajes: 52
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: ¿Arreglo en formulario?

vale, me auto-respondo, he visto que el problema se centra en los headers, si lo borro funciona :S
  #3 (permalink)  
Antiguo 14/07/2010, 04:53
Avatar de siken  
Fecha de Ingreso: octubre-2008
Mensajes: 52
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: ¿Arreglo en formulario?

Vale, solucionado, pego el código que uso, he quitado algunas cosas del header que no necesitaba y queda tal que asi:

Código:
<?php          
@putenv("TZ=Europe/Paris");
//ERROR_REPORTING(E_ALL);
//-----------------------

//*****************************************************************************
//Correo al que llegan los mails
//desde el formulario de contacto, te recomiendo que no uses un 
//correo de hotmail, porque hotmail aveces los detecta como spam.
$mail_destino='TUEMAIL'; 

//Aqui coloca el mensaje que quieres que aparesca como titulo del mail.
$titulo="Consultas web";

//********************************************
//Aqui no tienes que tocar nada
$msg="";
$email_form="";
$nombre_form="";
$mensaje_form="";


if(isset($_POST['nombre'])){
	
$email_form=$_POST['email'];
$nombre_form=$_POST['nombre'];
$mensaje_form=$_POST['mensaje'];

/*Aqui verificamos si nos estan haciendo spam */
function verificar_spam($verificar) {
	$msg="";
  $palabras_prohibidas = array(
                "content-type:"
                ,"mime-version:"
                ,"multipart/mixed"
		            ,"Content-Transfer-Encoding:"
                ,"bcc:"
		            ,"cc:"
		            ,"to:"   );
  
  foreach($palabras_prohibidas as $palabra) {
    if(eregi($palabra, strtolower($verificar))) {
      $msg.= "Se encontro una palabra prohibida <b><u>$palabra</u></b> en el nombre o Email<br />";
    }
  }
  
   if(preg_match("/(%0A|%0D|\\n+|\\r+)/i", $verificar) != 0) {
     $msg.= "El nombre o Email no pude contener saltos de linea <br />";
   }
  return $msg;
}


$msg.=verificar_spam($email_form);
$msg.=verificar_spam($nombre_form);

/*Aqui termina la la verificacion de spam */

/*Aqui verificamos los campos del formulario */

if($email_form != "")
{
	$email_form=trim($email_form);
  if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$", $email_form))
  $msg.="Tu E-mail es invalido <br />";
}else
 $msg.="Tu e-mail es obligatorio <br />";

if($nombre_form != ""){
	$nombre_form=trim($nombre_form);
	if(!preg_match("/^[\w\s_]+$/",$nombre_form))
	$msg.="El nombre no es valido <br />";
}else
$msg.="Tu nombre es obligatorio <br />";

if($mensaje_form == "")	$msg.="El mensaje es obligatorio <br />";


if($msg == ""){
$headers .= "De: ".$nombre_form."\n";
$headers .= "Enviado a: ".$mail_destino."\n";
$headers .= "Responder a: ".$email_form."\n";
$headers .= "Return-Path: ".$email_form."\n";
$contenido="".$nombre_form." Envio una consulta desde Tapitoldosgonzalez.es \r\n";

$contenido.="Nombre: ".$nombre_form."\r\n";
$contenido.="Email: ".$email_form."\r\n";
$contenido.="Mensaje: ".$mensaje_form."\r\n";
 
 if(mail($mail_destino, $titulo, $headers, $contenido))
 {
 header("location:".$_SERVER['PHP_SELF']."?ok=ok");
 
 }
 else
 $msg.="Ocurrio un error al enviar el mensaje";
 
}

}
if(isset($_GET['ok'])) $msg="El mensaje se ha enviado correctamente";
	
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Formulario Contacto </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.texto{color:#42606C;font-weight:bold;font-family: Geneva, Arial, Helvetica, sans-serif;}
body td,form {font-family:verdana;font-size:11px;color:#535353;}
form input,textarea{margin-bottom:4px;font-size:11px;background-color:#F0F0F0;border:1px solid #C0C0C0;}
.boton {color:#FFFFFF;height:20px;width:55px;border:1px solid #698B9A;background-color:#8BA6B1;font-size:11px;font-weight:bold;}
</style>	
</head>
<body>
<table cellspacing='2' cellpadding='2'>
	<tr>
		<td>
			
			<span style='font-size:11px;font-weight:bold;color:#F20000;'><?php echo $msg; ?></span>
			
		</td>
	</tr>
	<tr>
	 <td>
<form action="<?php echo $_SERVER['PHP_SELF']?>" method='post'>
<span class='texto'>* Nombre:</span><br />
<input type='text' name='nombre' size='28' value="<?php echo $nombre_form;?>"/><br />
<span class='texto'>* Tu email:</span><br />
<input type='text' name='email' size='28' value="<?php echo $email_form;?>" /><br />
<span class='texto'>* Mensaje:</span><br />
<textarea name='mensaje' rows='10' cols='20'><?php echo $mensaje_form;?></textarea><br />
<input type='submit' value='Enviar' class='boton' />
</form>
</td>
</tr>
</table>
</body>
</html>
El problema esque cuando recibo un email no pone de quien viene, pone:

[email protected]

Como puedo solucionarlo?

Etiquetas: formulario, arreglos
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 17:07.