Foros del Web » Programando para Internet » PHP »

Problema con formulario PHP.

Estas en el tema de Problema con formulario PHP. en el foro de PHP en Foros del Web. Buenas tardes, tengo un problemilla con mi formulario.php que no se arreglar por más que le he dado vueltas. Lo he intentado de dos maneras, ...
  #1 (permalink)  
Antiguo 09/11/2011, 11:08
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Problema con formulario PHP.

Buenas tardes, tengo un problemilla con mi formulario.php que no se arreglar por más que le he dado vueltas.

Lo he intentado de dos maneras, y con ninguna lo he conseguido xD
Os paso los códigos, y a haber si me podeis ayudar a resolverlo :S.

Este es el código que tengo para intentar hacerlo todo en una misma página.
Código PHP:
<h2>Formulario de contacto:</h2>
                    <?php
                    
if (!isset($_POST['email'])) {
                    
?>
                    <form id="ContactForm" action="<?=$_SERVER['PHP_SELF']?>" method="post">
                        <div class="wrapper pad_bot1">
                            <div class="wrapper">
                                <div class="bg"><input type="text" name="nombre" class="input" placeholder="Introduce tu nombre, ej; Pepito Perez" required autofocus/></div>Nombre:<br />
                            </div>
                            <div class="wrapper">
                                <div class="bg"><input type="text" name="mail" class="input" placeholder="Introduce tu correo, ej; [email protected]" /></div>E-mail:<br />
                            </div>
                            <div class="wrapper">
                                <div class="bg"><div class="textarea"><textarea name="mensaje" cols="1" rows="1" placeholder="Introduce tu mensaje lo más detalladamente posible, ej; Me gustaría contratar sus servicios para la maquetacion de un logo."></textarea></div></div>Mensaje:<br />
                            </div>
                            <div class="wrapper">
                                <a href="#" class="button" onClick="document.getElementById('ContactForm').submit()"><span><span>Enviar</span></span></a>
                                <a href="#" class="button marg_right1" onClick="document.getElementById('ContactForm').reset()"><span><span>Borrar</span></span></a>
                            </div>
                        </div>
                    </form>
                    <?php
                    
}else{
                      
$nombre $_POST['nombre'];
                        
$mail $_POST['mail'];
                        
$mensaje $_POST['mensaje'];

                        
$header 'From: ' $mail " \r\n";
                        
$header .= "X-Mailer: PHP/" phpversion() . " \r\n";
                        
$header .= "Mime-Version: 1.0 \r\n";
                        
$header .= "Content-Type: text/plain";

                        
$mensaje "Este mensaje fue enviado por " $nombre .  " \r\n";
                        
$mensaje .= "Su e-mail es: " $mail " \r\n";
                        
$mensaje .= "Mensaje: " $mensaje " \r\n";
                        
$mensaje .= "Enviado el " date('d/m/Y'time());

                        
$para '[email protected]';
                        
$asunto 'Contacto de Prueba';

                        
mail($para$asuntoutf8_decode($mensaje), $header);

                        echo 
'&estatus=ok&';
                    
?>
  <p><strong>Mensaje enviado.</strong></p>
<?php
}
?>

Este es el código que tengo para intentar ejecutarlo en 2 archivos diferentes.
form.php
Código HTML:
<h2>Formulario de contacto:</h2>
					<form id="ContactForm" action="enviar.php" method="post">
						<div class="wrapper pad_bot1">
							<div class="wrapper">
								<div class="bg"><input type="text" name="nombre" class="input" placeholder="Introduce tu nombre, ej; Pepito Perez" required autofocus/></div>Nombre:<br />
							</div>
							<div class="wrapper">
								<div class="bg"><input type="text" name="mail" class="input" placeholder="Introduce tu correo, ej; [email protected]" /></div>E-mail:<br />
							</div>
							<div class="wrapper">
								<div class="bg"><div class="textarea"><textarea name="mensaje" cols="1" rows="1" placeholder="Introduce tu mensaje lo más detalladamente posible, ej; Me gustaría contratar sus servicios para la maquetacion de un logo."></textarea></div></div>Mensaje:<br />
							</div>
							<div class="wrapper">
								<a href="#" class="button" onClick="document.getElementById('ContactForm').submit()"><span><span>Enviar</span></span></a>
								<a href="#" class="button marg_right1" onClick="document.getElementById('ContactForm').reset()"><span><span>Borrar</span></span></a>
							</div>
						</div>
					</form> 
enviar.php
Código PHP:
<?php
$nombre 
$_POST['nombre'];
$mail $_POST['mail'];
$mensaje $_POST['mensaje'];

$header 'From: ' $mail " \r\n";
$header .= "X-Mailer: PHP/" phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje "Este mensaje fue enviado por " $nombre .  " \r\n";
$mensaje .= "Su e-mail es: " $mail " \r\n";
$mensaje .= "Mensaje: " $mensaje " \r\n";
$mensaje .= "Enviado el " date('d/m/Y'time());

$para '[email protected]';
$asunto 'Contacto de Prueba';

mail($para$asuntoutf8_decode($mensaje), $header);

echo 
'&estatus=ok&';
?>



A ver si alguien me puede resolver alguno d los dos formularios para que lo envie correctamente, ya que no encuentro el error..

+INFO: Recalco, que tengo un index.php en el que hay un div 'contenido', donde cargo todas las páginas, es decir, el formulario esta dentro de un DIV y toda la página se carga bajo index.php
  #2 (permalink)  
Antiguo 09/11/2011, 11:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problema con formulario PHP.

¿Cual es el error?
  #3 (permalink)  
Antiguo 09/11/2011, 11:16
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: Problema con formulario PHP.

Perdon, que torpeza la mia, el error es que no envia los emails. XD
  #4 (permalink)  
Antiguo 09/11/2011, 11:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problema con formulario PHP.

¿Tienes un servidor SMTP instalado? Necesitas un servidor SMTP correctamente instalado y configurado si quieres usar la función mail() de PHP.

Saludos.
  #5 (permalink)  
Antiguo 09/11/2011, 11:59
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: Problema con formulario PHP.

Sí, lo tengo y esta bien configurado, es lo primero que miré al ver que no enviaba los correos, porque creo que el codigo (al menos el que va por separado), no tiene ningun error :S.

Si vosotros no encontrais tampoco ningun error y creeis que debería funcionar me pondré en contacto con el servidor para que comprueben ellos a ver que le pasa al correo, no sea problema suyo y me este comiendo yo la cabeza. xD

Un saludo y gracias GatorV.
  #6 (permalink)  
Antiguo 09/11/2011, 12:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problema con formulario PHP.

Pues en cuanto al código no se ve ningún problema, y si no te reporta problemas, entonces yo si contactaría con el administrador del servidor.

Saludos.
  #7 (permalink)  
Antiguo 09/11/2011, 14:11
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: Problema con formulario PHP.

Código PHP:
<h2>Formulario de contacto:</h2>
                    <?php
                    
if (!isset($_POST['email'])) {
                    
?>
                    <form id="ContactForm" action="<?=$_SERVER['PHP_SELF']?>" method="post">
                        <div class="wrapper pad_bot1">
                            <div class="wrapper">
                                <div class="bg"><input type="text" name="nombre" class="input" placeholder="Introduce tu nombre, ej; Pepito Perez" required autofocus/></div>Nombre:<br />
                            </div>
                            <div class="wrapper">
                                <div class="bg"><input type="text" name="mail" class="input" placeholder="Introduce tu correo, ej; [email protected]" /></div>E-mail:<br />
                            </div>
                            <div class="wrapper">
                                <div class="bg"><div class="textarea"><textarea name="mensaje" cols="1" rows="1" placeholder="Introduce tu mensaje lo más detalladamente posible, ej; Me gustaría contratar sus servicios para la maquetacion de un logo."></textarea></div></div>Mensaje:<br />
                            </div>
                            <div class="wrapper">
                                <a href="#" class="button" onClick="document.getElementById('ContactForm').submit()"><span><span>Enviar</span></span></a>
                                <a href="#" class="button marg_right1" onClick="document.getElementById('ContactForm').reset()"><span><span>Borrar</span></span></a>
                            </div>
                        </div>
                    </form>
                    <?php
                    
}else{
                      
$nombre $_POST['nombre'];
                        
$mail $_POST['mail'];
                        
$mensaje $_POST['mensaje'];

                        
$header 'From: ' $mail " \r\n";
                        
$header .= "X-Mailer: PHP/" phpversion() . " \r\n";
                        
$header .= "Mime-Version: 1.0 \r\n";
                        
$header .= "Content-Type: text/plain";

                        
$mensaje "Este mensaje fue enviado por " $nombre .  " \r\n";
                        
$mensaje .= "Su e-mail es: " $mail " \r\n";
                        
$mensaje .= "Mensaje: " $mensaje " \r\n";
                        
$mensaje .= "Enviado el " date('d/m/Y'time());

                        
$para '[email protected]';
                        
$asunto 'Contacto de Prueba';

                        
mail($para$asuntoutf8_decode($mensaje), $header);

                        echo 
'&estatus=ok&';
                    
?>
  <p><strong>Mensaje enviado.</strong></p>
<?php
}
?>
Este código es correcto GatorV? porque preferiría implementar este, pero no estoy seguro de que funcione, sin embargo el otro estoy casi al 100% seguro de que si funciona..
  #8 (permalink)  
Antiguo 09/11/2011, 14:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problema con formulario PHP.

Pues correcto se ve, como te digo, la única forma de ver los errores es probando y ejecutando el código, si no ves mensajes de error es que el mail se envió al servidor de forma correcta, ya si el servidor SMTP no lo entrega es cuestión del servidor SMTP, no de PHP.
  #9 (permalink)  
Antiguo 22/11/2011, 09:16
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: Problema con formulario PHP.

GatorV, bueno, tras un tiempo y viendo que la página me iba a llegar mas trabajo del que creía he subido parte de la página a un servidor provisional y he probado el correo.

No me llega, te dejo el link de la pagina ( www.estoengancha.webuda.com/index.php?id=3 )
para que puedas verlo, y probarlo (si me llega algun correo te aviso jaj).

Y el codigo final que tengo:
Código PHP:
Ver original
  1. <h2>Formulario de contacto:</h2>
  2.                     <?php
  3.                     if (!isset($_POST['email'])) {
  4.                     ?>
  5.                     <form id="ContactForm" action="<?=$_SERVER['PHP_SELF']?>" method="post">
  6.                         <div class="wrapper pad_bot1">
  7.                             <div class="wrapper">
  8.                                 <div class="bg"><input type="text" name="nombre" class="input" placeholder="Introduce tu nombre, ej; Pepito Perez" required /></div>Nombre:<br />
  9.                             </div>
  10.                             <div class="wrapper">
  11.                                 <div class="bg"><input type="text" name="mail" class="input" placeholder="Introduce tu correo, ej; [email protected]" /></div>E-mail:<br />
  12.                             </div>
  13.                             <div class="wrapper">
  14.                                 <div class="bg"><div class="textarea"><textarea name="mensaje" cols="1" rows="1" placeholder="Introduce tu mensaje lo más detalladamente posible, ej; Me gustaría contratar sus servicios para la maquetacion de un logo."></textarea></div></div>Mensaje:<br />
  15.                             </div>
  16.                             <div class="wrapper">
  17.                                 <a href="#" class="button" onClick="document.getElementById('ContactForm').submit()"><span><span>Enviar</span></span></a>
  18.                                 <a href="#" class="button marg_right1" onClick="document.getElementById('ContactForm').reset()"><span><span>Borrar</span></span></a>
  19.                             </div>
  20.                         </div>
  21.                     </form>
  22.                     <?php
  23.                     }else{
  24.                       $nombre = $_POST['nombre'];
  25.                         $mail = $_POST['mail'];
  26.                         $mensaje = $_POST['mensaje'];
  27.  
  28.                         $header = 'De: ' . $mail . " \r\n";
  29.                         $header .= "Desde: PHP/" . phpversion() . " \r\n";
  30.                         $header .= "Version: 1.0 \r\n";
  31.                         $header .= "Contenido de tipo: texto/plano";
  32.  
  33.                         $mensaje = "Este mensaje fue enviado por " . $nombre .  " \r\n";
  34.                         $mensaje .= "Su e-mail es: " . $mail . " \r\n";
  35.                         $mensaje .= "Mensaje: " . $mensaje . " \r\n";
  36.                         $mensaje .= "Enviado el " . date('d/m/Y', time());
  37.  
  38.                         $para = '[email protected]';
  39.                         $asunto = 'Contacto de Prueba';
  40.  
  41.                         mail($para, $asunto, utf8_decode($mensaje), $header);
  42.  
  43.                         echo '&estatus=ok&';
  44.                     ?>
  45.   <p><strong>Mensaje enviado.</strong></p>
  46. <?php
  47. }
  48. ?>

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 07:54.