Tengo problemas con formulario alojado en PHP y alojado en Yahoo
3 seguidores
hola a todos!
necesito ayuda con un formulario que he creado.
el formulario te envia a una pagina de "gracias" , pero si no rellenas el campo "email" te lleva a una página de "error".
se supone que esto es lo que debe hacer si funcionara bien, pero resulta que no funciona, siempre te manda a la página de "error" a no ser que la direccion de mail introducida en el campo email sea una de las que están asociadas a la cuenta de yahoo en la que está alojada la web. me resulta muy extraño, ya que este mismo formulario me funciona perfectamente en otra web alojada con 1and1. ¿Alguien sabe porque ocurre esto y como puedo solucionarlo?
gracias por adelantado!
Cloudstudio
Nadie en este universo te puede decir exactamente que pasa sin ver el código :)
Pega el codigo o sube el archivo a algun sitio para que podamos verlo.
Un saludo
mjetejvar
Este es el código del formulario en html:
<div id="formulario">
<form id="form" action="procesar.php" method="post" >
<div class="izq">
<div><h3> ¿Cual es tu nombre? </h3> </div>
<div><input type='text' class="long" title="Introduce tu nombre y apellidos" name='nombre' value='' /></div>
<div class="down_peq"></div>
<div><h3>¿Cual es tu dirección de correo electrónico?</h3> </div>
<div><input type='text' class="long" title="Introduce tu dirección de correo electrónico" name='email' value='' /></div>
<div class="down_peq"></div>
<div><h3> ¿Y tu teléfono? </h3> </div>
<div><input type='text' class="long" title="Introduce un teléfono de contacto" name='telefono' value='' /> </div>
<div class="down_lit"></div>
</div>
<div class="der">
<div><h3> ¿Qué idioma/s te interesa/n? ¿Qué nivel tienes de ese idioma? </h3></div>
<div><textarea name='idioma' rows='3' cols='55' title='Escribe tu mensaje en este área de texto'> </textarea> </div>
<div class="down_lit"></div>
<div><h3> ¿Quieres prepararte para un examen oficial? </h3> </div>
<div><textarea name='of_exam' rows='3' cols='55' title='Escribe tu mensaje en este área de texto'> </textarea></div>
<div class="down_lit"></div>
<div><h3> ¿Cual es tu disponibilidad horaria? </h3></div>
<div><textarea name='disponibilidad' rows='3' cols='55' title='Escribe tu mensaje en este área de texto'> </textarea></div>
<div class="down_lit"></div>
<div class="boton_enviar"> <input type='submit' title="Haz click aquí para enviar" name='submit' value='enviar'/> </div>
</div>
</form>
</div>
Este archivo llama a procesar.php, cuyo código es el siguiente:
<?php
$para = 'mjetejera@gmail.com';
$asunto = "Consulta web Language Planet";
$mailheader = "From: ".$_POST["email"]."\r\n";
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n";
$mailheader .= "Content-type: text/html; charset=utf-8";
// definimos las variables o marcamos el error
$nombre = $_POST['nombre'];
if ( !empty($_POST['email']) ) $email = $_POST['email']; else $error = true;
$telefono = $_POST['telefono'];
$idioma = $_POST['idioma'];
$of_exam = $_POST['of_exam'];
$disponibilidad = $_POST['disponibilidad'];
// verificamos que no exista un error
if ( !empty($error) ) {
header( 'Location: error.php' );
die;
}
// definimos el cuerpo del email
$cuerpo = "
Nombre: $nombre <br>
Email: $email <br>
Telefono: $telefono <br>
Idioma: $idioma <br>
Examen oficial: $of_exam <br>
Disponibilidad: $disponibilidad <br>
";
// enviamos el email
if ( mail( $para, $asunto, $cuerpo, $mailheader ) ) {
header( 'Location: gracias.php' );
die;
} else {
header( 'Location: error.php' );
die;
}
?>
Siempre me lleva a la página de error, como dije, a no ser que en el campo email introduzca una de las direcciones asociadas al hosting de yahoo...
Ahora mismo no aparece el formulario en la página porque no quiero que nadie se ofusque con el formulario si no le deja enviar los datos.
Igualmente los datos del usuario que ha enviado el formulario solo llegan a mi correo si no se ha producido error, pero al producirse siempre...nunca llegan, salvo la excepción comentada antes...
¿Qué puedo hacer???
mjetejvar
Hola!
He modificado la página, la he alojado en otro hosting con otra empresa y me ha traido el dominio a la misma para que no haya problemas con los redireccionaminetos...
Sin embargo el formulario sigue sin funcionar....ahora no funciona con ninguna dirección de mail que introduzcas.
De todas formas estoy esperando a que las DNS se modifiquen definitivamente, porque al transferir el dominio a la nueva compañía puede que haya habido algún error...
Podéis comprobar el funcionamiento en la url: http://www.sevillalanguageplanet.com/contacto
El código está arriba.
Necesito ayuda pleaseee!!
phpninja
Puede ser que te lleve siempre a error.php, porque la variable $error no está definida ?
$error solo la veo definida dentro del IF...
Podrías probar a definir $error = false; al principio,
y cambiar
if ( !empty($error) ) {
por:
if ($error) { header location error.php ....
mjetejvar
Muchas gracias phpninja.
Al final se ha solucionado solo.
Imagino que el problema estaba en tener el dominio redireccionado a un hosting diferente, ahora tengo dominio y hosting bajo el mismo proveedor de servicios web y me funciona perfectamente.
Tendré en cuenta la solución que me propones por si vuelvo a tener problemas en futuros formularios.
Gracias!