Foros del Web » Programando para Internet » PHP »

Problema con formulario en PHP

Estas en el tema de Problema con formulario en PHP en el foro de PHP en Foros del Web. Buenas, Ante todo gracias por vuestro tiempo. Soy bastante novato en esto... me defiendo en HTML pero apenas con PHP y siempre le he temido ...
  #1 (permalink)  
Antiguo 29/01/2013, 11:14
 
Fecha de Ingreso: septiembre-2010
Mensajes: 15
Antigüedad: 13 años, 7 meses
Puntos: 0
Problema con formulario en PHP

Buenas,

Ante todo gracias por vuestro tiempo. Soy bastante novato en esto... me defiendo en HTML pero apenas con PHP y siempre le he temido a los formularios.

Ahora le estoy echando una mano a mis vecinos con una web y me he atascado en el formulario...

Debería de funcionar perfectamente pues venía en la plantilla que compraron y al parecer sólamente había que introducir el email y ya está, pero una vez subido todo al servidor, no funciona.

¿Podríais decirme que falla? Yo no soy capaz de hayarlo... he revisado los manuales de PHP del foro y no he visto el fallo.

ESTE ES EL HTML:
Código:
  <!-- contact form -->
                      <form id="contactform" method="post" action="mailscript.php">
                        
                            <label for="field1">Nombre: *</label>
                            <input type="text" id="field1" value="" name="field1" tabindex="1" class="contact-input" />
                            
                            <label for="field2">Email: *</label>
                            <input type="text" id="field2" value="" name="field2" tabindex="2" class="contact-input" /> 
                            
                            <label for="field3">Web:</label>                
                            <input type="text" id="field3" value="http://" name="field3" tabindex="3" class="contact-input" />
                            
                            <label for="field4">Teléfono:</label>                       
                            <input type="text" id="field4" value="" name="field4" tabindex="4" class="contact-input" />
                                
                            <label for="field5">Asunto: *</label>
                            <input type="text" id="field5" value="" name="field5" tabindex="5" class="contact-input" /> 
                            
                            <label for="field6">Mensaje: *</label>                                      
                            <textarea id="field6" name="field6" tabindex="6" class="contact-textarea"></textarea>
                            
                            <input type="submit" id="submit" value="Enviar" name="submit" tabindex="7" />
                            
                        </form> 
                        
                        <!-- form validation -->
                            
                            <script type="text/javascript">
                            //<![CDATA[
                              var field1    = new LiveValidation('field1', {onlyOnSubmit: false, validMessage: " "});
                              var field2    = new LiveValidation('field2', {onlyOnSubmit: false, validMessage: " "});
                              //var field3    = new LiveValidation('field3', {onlyOnSubmit: false, validMessage: " "});
                             //var field4    = new LiveValidation('field4', {onlyOnSubmit: false, validMessage: " "});
                              var field5    = new LiveValidation('field5', {onlyOnSubmit: false, validMessage: " "});
                              var field6    = new LiveValidation('field6', {onlyOnSubmit: false, validMessage: " "});
                    
                              field1.add( Validate.Presence,{failureMessage: " "});
                              field2.add( Validate.Email,{failureMessage: " "});
                              field2.add( Validate.Presence,{failureMessage: " "});							  
                              //field3.add( Validate.Presence,{failureMessage: " "});
                              //field4.add( Validate.Presence,{failureMessage: " "});							  
                              field5.add( Validate.Presence,{failureMessage: " "});
                              field6.add( Validate.Presence,{failureMessage: " "});
                           //]]>
                          </script>
Y ESTE ES EL CÓDIGO DEL PHP:
Código:
<?php 
   
	$youremail = '[email protected]';//enter your own email here!

	//
	// main form
	//

if(isset($_POST["submit"])){
 
   // Creating the email
   $msg      = "Send by: ".$_POST['field1']."\r\n\r\n";
   $msg     .= "Emailaddress: ".$_POST['field2']."\r\n\r\n";
   $msg     .= "Website: ".$_POST['field3']."\r\n\r\n";
   $msg     .= "Phone: ".$_POST['field4']."\r\n\r\n";
   $msg     .= "Subject: ".$_POST['field5']."\r\n\r\n";
   $msg     .= "Message:\r\n";
   $msg     .= $_POST['field6']."\r\n";
   
   $subject  = "Email from ".$_POST['field1'];
   $headers  = "From: ".$youremail;
   $headers .= "Reply-To: ".$_POST['field1'];
   
// checking for empty fields 
if((strlen($_POST['field1']) > 1 ) || (strlen($_POST['field2']) > 1 ) || (strlen($_POST['field5']) > 1 ) || (strlen($_POST['field6']) > 1 )){
	
		 
    //Sending the email
   $msg = trim(stripslashes($msg));
   
   //Sending the email	
   if (mail($youremail, $subject, $msg, $headers)){ 
   
       // Redirecting to the thank you page
	   header("Location: messagesend.html" );
	   
     }else{

	   // If the mail is not send 
	   header("Location: senderror.html" );
	   
   }
   
	}else{
		
	   // if fields are empty
	   header("Location: senderror2.html" );
	}   
  
}

?>
Si necesitais qeu os cuelgue también el Scritp, decídmelo y os lo cuelgo enseguida.

Gracias.
  #2 (permalink)  
Antiguo 29/01/2013, 13:28
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con formulario en PHP

Qué es lo que falla?
a) No se envía el mail
b) Se envía, pero no llega al destinatario
c) Otro
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 29/01/2013, 14:17
 
Fecha de Ingreso: septiembre-2010
Mensajes: 15
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Problema con formulario en PHP

Cita:
Iniciado por Triby Ver Mensaje
Qué es lo que falla?
a) No se envía el mail
b) Se envía, pero no llega al destinatario
c) Otro
Hola Triby...

Pues no se envía... te aparece el mensaje como que no se ha enviado el email y directamente se recarga la página de contacto... he revisado hasta donde yo se, junto con los tutoriales del foro... pero no se que puede fallar... te paso un enlace por privado para que lo veas...

Gracias.
  #4 (permalink)  
Antiguo 29/01/2013, 16:05
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con formulario en PHP

Comienza por quitar los redireccionamientos y activar los mensajes de error:

Código PHP:
Ver original
  1. // Al inicio de tu script agrega la siguiente línea
  2. // Para ver los mensajes de error
  3.  
  4. // En la parte donde envías el correo, modifica:
  5.  
  6.    //Sending the email 
  7.    if (mail($youremail, $subject, $msg, $headers)){
  8.    
  9.        // Redirecting to the thank you page
  10.            die('El mensaje se envió correctamente.');
  11.        header("Location: messagesend.html" );
  12.        
  13.      }else{
  14.  
  15.        // If the mail is not send
  16.            die('El mensaje no se envió.');
  17.        header("Location: senderror.html" );
  18.        
  19.    }

Con esto podrás ver realmente si el mensaje se envía o no; en caso de que sigas teniendo alguna redirección, es porque falla algo en la validación y te toma algún campo como vacío; pero, como dijo Jack, vamos por partes.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 30/01/2013, 03:38
 
Fecha de Ingreso: septiembre-2010
Mensajes: 15
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Problema con formulario en PHP

He hecho los cambios... puedes verlo tu mismo online.

Me aparece el mensaje de error: "El mensaje no se envió."
  #6 (permalink)  
Antiguo 30/01/2013, 04:26
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con formulario en PHP

Si incluiste la línea error_reporting(E_ALL); deberías ver también un mensaje de error.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 30/01/2013, 04:38
 
Fecha de Ingreso: septiembre-2010
Mensajes: 15
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Problema con formulario en PHP

Solo ha aparecido el mensaje que he puesto entrecomillado. Nada más...

El código ha quedado así en el archivo mailscript.php:

Código:
<?php 
   
   error_reporting(E_ALL);
   
	$youremail = '[email protected]';//enter your own email here!

	//
	// main form
	//

if(isset($_POST["submit"])){
 
   // Creating the email
   $msg      = "Send by: ".$_POST['field1']."\r\n\r\n";
   $msg     .= "Emailaddress: ".$_POST['field2']."\r\n\r\n";
   $msg     .= "Website: ".$_POST['field3']."\r\n\r\n";
   $msg     .= "Phone: ".$_POST['field4']."\r\n\r\n";
   $msg     .= "Subject: ".$_POST['field5']."\r\n\r\n";
   $msg     .= "Message:\r\n";
   $msg     .= $_POST['field6']."\r\n";
   
   $subject  = "Email from ".$_POST['field1'];
   $headers  = "From: ".$youremail;
   $headers .= "Reply-To: ".$_POST['field1'];
   
// checking for empty fields 
if((strlen($_POST['field1']) > 1 ) || (strlen($_POST['field2']) > 1 ) || (strlen($_POST['field5']) > 1 ) || (strlen($_POST['field6']) > 1 )){
	
		 
    //Sending the email
   $msg = trim(stripslashes($msg));
   
   //Sending the email	
   if (mail($youremail, $subject, $msg, $headers)){ 
   
       // Redirecting to the thank you page
	   die('El mensaje se envió correctamente.');
       header("Location: messagesend.html" );
	   
     }else{

	   // If the mail is not send 
	  die('El mensaje no se envió.');
       header("Location: senderror.html" );
	   
   }
   
	}else{
		
	   // if fields are empty
	   header("Location: senderror2.html" );
	}   
  
}

?>
  #8 (permalink)  
Antiguo 30/01/2013, 06:49
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: Problema con formulario en PHP

Buenas,

Intenta poner esto

ini_set("display_errors", 1);

Saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #9 (permalink)  
Antiguo 30/01/2013, 07:02
 
Fecha de Ingreso: septiembre-2010
Mensajes: 15
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Problema con formulario en PHP

Cita:
Iniciado por rodno Ver Mensaje
Buenas,

Intenta poner esto

ini_set("display_errors", 1);

Saludos
He probado a insertar ese código junto a lo antes añadido y el resultado es el mismo.
También he probado a sustituir ese código por
Código:
if(isset($_POST["submit"])){
Y el resultado es que no aparece ningún mensaje.
  #10 (permalink)  
Antiguo 30/01/2013, 07:22
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: Problema con formulario en PHP

Buenas,

Esto no lo quites

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

que es para saber si se envio el fue enviado a traves del formulario, mediante el boton Enviar,

Pon esto:
$msg = wordwrap($msg, 70, "\r\n");

Antes de la siguiente linea

if (mail($youremail, $subject, $msg, $headers))

Otra cosa, tu tienes acceso a la configuracion del servidor, es decir, especificamente al php.ini?

Saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #11 (permalink)  
Antiguo 30/01/2013, 10:34
 
Fecha de Ingreso: septiembre-2010
Mensajes: 15
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Problema con formulario en PHP

Buenas,

He probado a añadir la línea de código a lo que ya tenía y el resultado es el mismo.

En cuanto a tu pregunta... tengo acceso al servidor plex, pero creo que no al php ini

¿Por qué?
  #12 (permalink)  
Antiguo 30/01/2013, 10:43
 
Fecha de Ingreso: septiembre-2010
Mensajes: 15
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Problema con formulario en PHP

Creo que el problema viene del servidor....

He subido la web a un servidor mio y ahí funciona perfectamente...
Crees que será eso del PHP ini?

Me pongo en contacto con el soporte técnico del servidor?

Un saludo
  #13 (permalink)  
Antiguo 30/01/2013, 11:02
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: Problema con formulario en PHP

Buenas,

te lo decia para que cambiaras, display_errors, en el archivo para que te muestre los errores, pero bueno, sino tienes acceso, y por las vias que te hemos comentado , no se obtiene el error que te da,
seria bueno que contactaras con el soporte tecnico,

y mas ahora que lo probastes en otro server

de todas formas echale un vistazo a http://www.php.net/manual/es/mail.configuration.php


Saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #14 (permalink)  
Antiguo 30/01/2013, 16:39
 
Fecha de Ingreso: septiembre-2010
Mensajes: 15
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Problema con formulario en PHP

Gracias por el enlace y la ayuda.

A ver... a continuación pongo las conclusiones a las que se han llegado tras la conversación con el soporte del servidor.

Todo ha comenzado diciéndoles que en otro servidor sí funcionaba y en este (evidalia) no.

Su respuesta ha sido que la función mail() funciona correctamente. Han creado un archivo de prueba llamado prueba.php con el siguiente código:

Código:
<?php //indicamos el inicio de nuestro codigo php
mail("[email protected]", "Prueba de correo", "esto es una prueba");
?>
Por el que al hacer clic en el enlace "http://rszingenieria.com/prueba.php" llega un email al correo de administración.

Entonces, mi duda es.... ¿Porqué funciona en un servidor y en este no? ¿Y qué cambiar para que funcione?

Les he pedido que activen la función de errores para poder hacer pruebas... a ver si eso junto a los códigos que ya me diste... nos ayuda a ver porqué no funciona.

También les he pedido que me den las características del servidor para compararlas con el servidor en donde sí funciona y que tiene estas características....

CGI:
Active
Platform Type:
Debian
MySQL Version:
5.0.91-log
Perl Version:
5.8.8
PHP Version:
5.3.13

A ver si entre todo sacamos algo en claro.
  #15 (permalink)  
Antiguo 31/01/2013, 03:29
 
Fecha de Ingreso: septiembre-2010
Mensajes: 15
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Problema con formulario en PHP

He hablado con el Soporte del servidor y me comentan que el CGI de su servidor puede estar desactivado.

Tras activarlo, sigue sin funcionar.

Han subido un contactform a este enlace (http://www.rszingenieria.com/ContactForm/) y al parecer, funciona correctamente.
El mio en este servidor no funciona pero en otros sí.

Me estoy volviendo loco con esto.

Última edición por Nogardlsda; 31/01/2013 a las 06:03
  #16 (permalink)  
Antiguo 31/01/2013, 07:46
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: Problema con formulario en PHP

Buenas,

ya realice una prueba mediante ContactForm, y al parecer funciona, sera real?, te llego el correo?
puedes postear el script de ContactForm,

Saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #17 (permalink)  
Antiguo 31/01/2013, 09:35
 
Fecha de Ingreso: septiembre-2010
Mensajes: 15
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Problema con formulario en PHP

Cita:
Iniciado por rodno Ver Mensaje
Buenas,

ya realice una prueba mediante ContactForm, y al parecer funciona, sera real?, te llego el correo?
puedes postear el script de ContactForm,

Saludos
Buenas.. pues creo que no... Pero entre mis pruebas y las que están haciendo los del servidor tengo aquí 20 mensajes que se suponen vienen de ese formulario o del formulario que he subido a mi servidor... déjame que los revise todos....

¿Qué has puesto en el mensaje? Desde qué email? qué asunto? dime algo para que lo identifique.






ACTUALIZACIÓN:

Al parecer... después de un cabreo monumental... se han puesto a ver porqué falla.
Han hecho unos cambios en el código del php (el HTML está igual) al margen de lo que hayan movido en su servidor y ahora funciona aquí.

El codigo es este y lo nuevo está marcado en color.

Código:
<?php 
   
	$youremail = '[email protected]';//enter your own email here!

	//
	// main form
	//

if(isset($_POST["submit"])){
 
   // Creating the email
   $msg      = "Send by: ".$_POST['field1']."\r\n\r\n";
   $msg     .= "Emailaddress: ".$_POST['field2']."\r\n\r\n";
   $msg     .= "Website: ".$_POST['field3']."\r\n\r\n";
   $msg     .= "Phone: ".$_POST['field4']."\r\n\r\n";
   $msg     .= "Subject: ".$_POST['field5']."\r\n\r\n";
   $msg     .= "Message:\r\n";
   $msg     .= $_POST['field6']."\r\n";
   
   $subject  = " Email from ".$_POST['field1'];
   $headers  = " From: ".$youremail;
   $headers .= " Reply-To: ".$_POST['field2'];

	$msg .= "\r\n <br> Vamos a ver que se esta enviando: <pre> ".print_r($_POST,TRUE)."</pre> ";
   
// checking for empty fields 
if((strlen($_POST['field1']) > 1 ) || (strlen($_POST['field2']) > 1 ) || (strlen($_POST['field5']) > 1 ) || (strlen($_POST['field6']) > 1 )){
	
		 
    //Sending the email
   $msg = trim(stripslashes($msg));
   
   //Sending the email	
	echo "email[$youremail], sub[$subject], msg[$msg], headers[$headers]";
   if (mail($youremail, $subject, $msg, $headers)){ 
   	
       // Redirecting to the thank you page
	   header("Location: messagesend.html" );
	   
     }else{
	
	   // If the mail is not send 
	   header("Location: senderror.html" );
	   
   }
   
	}else{
	   // if fields are empty
	   header("Location: senderror2.html" );
	}   
  
}

?>
El email de prueba ahora llega así:

Código:
Send by: Rubén



Emailaddress: [email protected]



Website: http://



Phone:



Subject: Prueba



Message:

Esto es una prueba



 <br> Vamos a ver que se esta enviando: <pre> Array
(
    [field1] => Rubén
    [field2] => [email protected]
    [field3] => http://
    [field4] =>
    [field5] => Prueba
    [field6] => Esto es una prueba
    [submit] => Enviar
)
</pre>



Los cambios que han hecho son:
Insertar un espacio entre las comillas y /Email, From y Reply-to/
Modificar el número de campo en la línea
Código:
$headers .= " Reply-To: ".$_POST['field2'];
(antes field1 - ahora field2)
Insertar línea de código:
Código:
$msg .= "\r\n <br> Vamos a ver que se esta enviando: <pre> ".print_r($_POST,TRUE)."</pre> ";
(Que lo que creo que hace es comprobar que campos se están enviando correctamente en el email)

Insertar "echo":
Código:
echo "email[$youremail], sub[$subject], msg[$msg], headers[$headers]"; 
(se supone que los echo sirven para mostrar variables o ver textos en pantalla... no se la relevancia de insertar este comando pero parece que funciona)
  #18 (permalink)  
Antiguo 31/01/2013, 09:36
 
Fecha de Ingreso: septiembre-2010
Mensajes: 15
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Problema con formulario en PHP

Aquí el código del contactform:
Código:
<!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=WINDOWS-1250">
       <title>Contact Form with field validation</title>
       
       <!-- the cascading style sheet-->
       <link href="style.css" rel="stylesheet" type="text/css" />
       
</head>
  

<body>
     <div id="contentForm">

            <!-- The contact form starts from here-->
            <?php
                 $error    = ''; // error message
                 $name     = ''; // sender's name
                 $email    = ''; // sender's email address
                 $subject  = ''; // subject
                 $message  = ''; // the message itself
               	 $spamcheck = ''; // Spam check

            if(isset($_POST['send']))
            {
                 $name     = $_POST['name'];
                 $email    = $_POST['email'];
                 $subject  = $_POST['subject'];
                 $message  = $_POST['message'];
               	 $spamcheck = $_POST['spamcheck'];

                if(trim($name) == '')
                {
                    $error = '<div class="errormsg">Por favor escriba su nombre!</div>';
                }
            	    else if(trim($email) == '')
                {
                    $error = '<div class="errormsg">POr favor indique su direccion Email!</div>';
                }
                else if(!isEmail($email))
                {
                    $error = '<div class="errormsg">Su Email no es valido, por favor intente de nuevo!!</div>';
                }
            	    if(trim($subject) == '')
                {
                    $error = '<div class="errormsg">Indique el asunto del mensaje!</div>';
                }
            	else if(trim($message) == '')
                {
                    $error = '<div class="errormsg">Escriba su mensaje!</div>';
                }
	          	else if(trim($spamcheck) == '')
	            {
	            	$error = '<div class="errormsg">REalice la suma para controlar el Spam!</div>';
	            }
	          	else if(trim($spamcheck) != '5')
	            {
	            	$error = '<div class="errormsg">Control Spam: El resultado de la suma no es correcta! 2 + 3 = ???</div>';
	            }
                if($error == '')
                {
                    if(get_magic_quotes_gpc())
                    {
                        $message = stripslashes($message);
                    }

                    // the email will be sent here
                    // make sure to change this to be your e-mail
                    $to      = "[email protected]";

                    // the email subject
                    // '[Contact Form] :' will appear automatically in the subject.
                    // You can change it as you want

                    $subject = '[Contacto web] : ' . $subject;

                    // the mail message ( add any additional information if you want )
                    $msg     = "From : $name \r\ne-Mail : $email \r\nSubject : $subject \r\n\n" . "Message : \r\n$message";

                    mail($to, $subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n");
            ?>

                  <!-- Message sent! (change the text below as you wish)-->
                  <div style="text-align:center;">
                    <h1>Enviado</h1>
                       <p>Gracias <b><?=$name;?></b>, le responderemos lo antes posible!</p>
                  </div>
                  <!--End Message Sent-->


            <?php
                }
            }

            if(!isset($_POST['send']) || $error != '')
            {
            ?>

            <h1>Ejemplo de Formulario:</h1>
  <!--Error Message-->
            <?=$error;?>

            <form  method="post" name="contFrm" id="contFrm" action="">


                      <label><span class="required">*</span> Nombre:</label>
            			<input name="name" type="text" class="box" id="name" size="50" value="<?=$name;?>" />

            			<label><span class="required">*</span> Email: </label>
            			<input name="email" type="text" class="box" id="email" size="50" value="<?=$email;?>" />

            			<label><span class="required">*</span> Asunto: </label>
            			<input name="subject" type="text" class="box" id="subject" size="50" value="<?=$subject;?>" />

                 		<label><span class="required">*</span> Mensaje: </label>
                 		<textarea name="message" cols="50" rows="6"  id="message"><?=$message;?></textarea>

            			<label><span class="required">*</span> Control spam: <b>2 + 3=</b></label>
						<input name="spamcheck" type="text" class="box" id="spamcheck" size="4" value="<?=$spamcheck;?>" /><br /><br />

            			<!-- Submit Button-->
                 		<input name="send" type="submit" class="button" id="send" value="" />

            </form>

            <!-- E-mail verification. Do not edit -->
            <?php
            }

            function isEmail($email)
            {
                return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i"
                        ,$email));
            }
            ?>
            <!-- END CONTACT FORM -->

           
            
     
</div> <!-- /contentForm -->
     
</body>
</html>
  #19 (permalink)  
Antiguo 31/01/2013, 09:37
 
Fecha de Ingreso: septiembre-2010
Mensajes: 15
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Problema con formulario en PHP

Aquí un mensaje del soporte del servidor:

Buenas Tardes,

Hemos hecho funcionar su formulario,
Les recomendamos analicen las respuestas del post ya que se estaban haciendo un mal uso de las mismas.
Comparen el actual código funcional en la web con el código que ustedes tienen, el cambio ha sido mínimo.


Cual ha sido finalmente el fallo? si es que lo hay... qué quiere decir el administrador del soporte técnico con "estaban haciendo un mal uso de las mismas (entendido por respuestas del post)"?

¿Qué debo dejar del código y qué debo quitar?

La página de contacto con el formulario funcionando puede verse aquí: http://www.rszingenieria.com/contactoconformulario.html

Última edición por Nogardlsda; 31/01/2013 a las 10:30
  #20 (permalink)  
Antiguo 31/01/2013, 12:54
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con formulario en PHP

Ahora, revisando bien tu código, el error no era del servidor, sino problema con los encabezados:

Código PHP:
Ver original
  1. $subject  = "Email from ".$_POST['field1'];
  2.    // Mal: $headers  = "From: ".$youremail;
  3.    // Bien:
  4.    $headers = "From $youremail\r\n";
  5.    $headers .= "Reply-To: {$_POST['field1']}\r\n";

La diferencia no son los espacios previos, sino el retorno de carro \r y salto de línea \n al final de cada encabezado.
__________________
- León, Guanajuato
- GV-Foto
  #21 (permalink)  
Antiguo 31/01/2013, 17:22
 
Fecha de Ingreso: septiembre-2010
Mensajes: 15
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Problema con formulario en PHP

Cita:
Iniciado por Triby Ver Mensaje
Ahora, revisando bien tu código, el error no era del servidor, sino problema con los encabezados:

Código PHP:
Ver original
  1. $subject  = "Email from ".$_POST['field1'];
  2.    // Mal: $headers  = "From: ".$youremail;
  3.    // Bien:
  4.    $headers = "From $youremail\r\n";
  5.    $headers .= "Reply-To: {$_POST['field1']}\r\n";

La diferencia no son los espacios previos, sino el retorno de carro \r y salto de línea \n al final de cada encabezado.

Entonces ¿dejo el código así? Hay que quitar o poner algo?
¿Por qué entonces, funcionaba bien en el otro servidor?

Etiquetas: formulario, html
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 15:11.