Problema con envio de formulario POST y FIREFOX

X

Hola,
antes de nada quisiera presentarme ya que soy nuevo en el foro y daros las gracias por servir de ayuda a tanta gente que como yo se queda atascada alguna vez.

El tema es que tengo un problema con un formulario que estoy haciendo con el método POST de php, el problema es que funciona a la perfección tanto en Chrome como IE, en ambos los he probado, relleno el formulario le doy a enviar y me va salta la pagina “aviso de sistema” en la cual me dice que el correo se ha enviado correctamente y que nos pondremos en contacto con usted...., y a los 5 segundo me llega el correo con toda la información perfectamente.

El problema surge cuando lo pruebo desde Firefox, hago lo mismo, y me llega a la misma pagina indicándome lo mismo, “que nos ha llegado el correo y que nos pondremos en contacto....”, pero el PROBLEMA ES QUE EL CORREO NUNCA LLEGA....

No entiendo porque funciona bien en los otros navegadores y en Firefox NO, les agradecería mucho que me dieran un poco de luz sobre este asunto, se que no estará programado de la forma mas ortodoxa, pero no encuentro el problema..... Os dejo los códigos:

Pedir_cita.php

Letto

Te pongo el código con [ code ] que sino eran todo :) y similar.

1 respuesta
X

ok, muchas gracias Letto, sobre todo por la rapidez

por cierto se ve un poco destructurado..... sera porque primero lo copie en el Write del Open Office en lugar de copiarlo directamente desde dreanweaver...

Khanser

Pues por favor, copialo desde dreamweaver y edita tu post :)

X

si claro, como no, ya lo he hecho,

pero hay algunas sentencias como por ejemplo la que controla el envio del formulario "onsubmit" que contienen bucles if para controlar que el usuario rellena los campos que son un poco largas, pero bueno eso no es importante, eso funciona bien, el problema es porque no Firefox no lo envia....

Gracias de nuevo por vuestro interes.

1 respuesta
NeB1

#5 haz un

print_r($_POST);

para ver que datos se envían

1 respuesta
LOc0

Por ir descartando cosas comprueba el retorno de la función mail.

if(!mail($to, $subject, $message, $headers))
    die('Caca con el email 1');

if(!mail($to2, $subject, $message, $headers))
   die('Caca con el email 2');

Salu2 ;)

1 respuesta
X

#7 ----> he hecho eso, y cuando le doy a enviar en el formulario, se carga el marco de la pagina pero no el contenido.... (no se carga la pagina "aviso_sistema" que dice que todo se envio bien), y por supuesto no envia el correo, pero ni para chrome, ni para firefox......

#6 ---->¿donde tendría que poner esa instrucción, y que es lo que hace exactamente?

Perdonar pero estoy un poco oxidado con PHP.

Gracias a los dos por vuestra rápida respuesta.

1 respuesta
LOc0

Pues entonces parece que algún campo o campos del email no son válidos. Haz lo que te dice NeB1 para ver el contenido exacto de las variables $_POST por si alguna tiene caracteres extraños o lo que sea. Si no, ya habría que mirar el resto del código a ver qué le envias a la función mail.

<?php

if(!empty($_POST))
{
print_r($_POST);
die();
}

Salu2 ;)

1 respuesta
NeB1

#8 como te dice #9 ponla al inicio de la página donde se envía el correo

<?php 
    print_r($_POST);

/* y todo el resto de la web */

así al principio de la web deberías de ver algo así al entrar con el navegador y mirar el código fuente:

     Array(
          'contact_from_name' => 'Pepito',
          'contact_from_address' => 'Calle de las piruletas'
     );
     <html>
           <head>
       .....

Eso que sale dentro de 'array' es el contenido de la variable $_POST, indicando que es un array y cada uno de sus elementos que valor tiene, así podrás ver si realmente se están enviando los datos que has rellenado, para poder encontrar más rápidamente el error.

1 respuesta
X

#10 ok, lo pruebo ahora mismo, pero me gustaria recordaros con con Chrome e IE funciona a la perfeccion, llega el correo con todos los datos que se meten en los campos del formulario, por lo que no parece que el problema venga por ese camino..... El problema es que con Firefox no llega el correo y en cambio llega a la sentencia que de "aviso_de_sistema" que muestra el mensaje correctamente (cuando puse lo del "DIE" no llegaba, pero con ningun explorador)....

en fin voy a probarlo y os comento, Gracias de nuevo por vuestra ayuda.

X

bueno pues ya lo probe.... y me muestra esto:

Array ( 
[contact_from_name] => Miguel Angel 
[contact_from_phone] => 1234567 
[contact_from_address] => [email protected]
[contact_from_city] => Huelva 
[contact_from_state] => gaspar 
[contact_message] => prueba de nuevao con variable print $_post
[command] => send_contact_message ) 


Parece que esta todo Bien no?, tuve el problema que por los styles me aparecia en blanco, al igual que el fondo y parecia que no salia nada (pero subrayando vi que estaba ay), por este motivo he intentado poner lo del DIE, pero modificandolo un poco para que me saltara una ventana emergente avisandome que entraba en ese condicional, ya que como carga otra pagina despues quizas no viera lo que ponia.... pero nada con estas sentencias se carga el marco principal de la pagina, pero ningun contenido, ni mensaje de error, ni ventana emergente:

if(!mail("[email protected]", $subject, $message, $headers)){
   			 alert('Entra en el Bucle 1');
			 die('Caca con el mi email');}
		
	if(!mail($to, $subject, $message, $headers)){
		alert('Entra en el Bucle 1');
		 die('Caca con el email 1');}

	if(!mail($to2, $subject, $message, $headers)){
		alert('Entra en el Bucle 1');
		die('Caca con el email 2');}

Alguna Sugerencia??, no se porque FireFox me hace esto cuando lo normal es que el que de problemas sea el IE.......

Gracias de nuevo.

X

Bueno, buscando mas información he encontrado 2 posibles temas que quizas puede que sea por donde este el problema, haber si alguien con experiencia con el metodo POST para Firefox me arroja algo de luz....

1º Hipotesis: AL parecer para segun que cosas hay que habilitar algunos permisos especiales para que Firefox no de problemas, ¿puede ser algo de esto?, he visto algunos ejemplos como:

             [code]........<script language="JavaScript" type="text/javascript">
function security() {
            netscape.security.PrivilegeManager.enablePrivilege("UniversalFileRead");
    }

</script>
</head>

<body onload="security();"> .......[/code]

2º Hipotesis: Tambien he visto que para los formularios la gente suele darle un id (id="formxxx") en la cabecera de la etiquete form y despues utilizan un "Onlclick" en el boton de enviar con la id del formulario....... no creo que sea esto ya que si funciona como yo lo tengo con IE y Chrome, pero no con Firefox, me tira mas problema de compatibilidad de algun metodo..... como la primera hipotesis.....

NeB1

a ver, si los datos se están enviando bien, el problema debe de ser otra cosa :S:S:S:S es que me parece que te has rallado en algo y tiene que ser una tontería, porque ya ves tu, un formulario de contacto no es nada complicado.

1º la función 'alert' no existe en PHP, creo que te estás haciendo la pixa un lío. La función 'die' para la ejecución del script PHP y además muestra un mensaje (el que se le pase como parámetro)

Oye, podemos acceder a la URL donde estás colocando la web?

1 respuesta
X

#14 ya, pero cuando le meto el DIE no me muestra ningún mensaje......

si claro, ya esta colgada, la pagina es : www.septimadental.es

y es la pagina de la opcion: Pedir Cita

Gracias NeB1 por el interes que estas poniendo en ayudarme.

1 respuesta
MisKo

#15 Pues prueba poniendo el asunto del email como texto normal, en vez de esto que tienes:

$subject="=?$charset?B?".base64_encode($subject)."?=\n";

Y aunq no tiene nada que ver, yo cambiaria el siguiente fragmento de codigo:

#         $to=to_informacion;
#         $to2=to_informacion;
#        
#        
#         if ($clinic=='gaspar')
#                 {              
#                         $to=to_gaspar;                  
#                        
#                 }elseif ($clinic=='triana')
#                 {      
#                         $to=to_triana;
#                 }elseif ($clinic=='laguillo')
#                 {      
#                         $to=to_laguillo;
#                 }elseif ($clinic=='nervion')
#                 {      
#                         $to=to_nervion;
#                 }elseif ($clinic=='alcala')
#                 {      
#                         $to=to_alcala;
#                 }elseif ($clinic=='cadiz')
#                 {      
#                         $to=to_cadiz;
#                 }elseif ($clinic=='antequera')
#                 {      
#                         $to=to_antequera;
#                 }elseif ($clinic=='ceuta')
#                 {
#                         $to=to_ceuta;
#                 }else{  
#                         $to=to_informacion;
#                 }
#         

por algo asi

$to2=to_informacion;
switch($clinic)
{
	case "gaspar":
    	$to = to_gaspar;
        break ;
	case "triana":
    	$to = to_gaspar;
        break ;
	case "laguillo":
    	$to = to_gaspar;
        break ;
	case "nervion":
    	$to = to_gaspar;
        break ;
	case "alcala":
    	$to = to_gaspar;
        break ;
	case "cadiz":
    	$to = to_gaspar;
        break ;
	case "antequera":
    	$to = to_gaspar;
        break ;
	case "ceuta":
    	$to = to_gaspar;
        break ;
    default:
    	$to = to_informacion ;
        break ;       
} Poniendo en cada "case" el "to_" q corresponda

Por cierto, esto que tienes tb al inicio del script

         echo '<script language="JavaScript" type="text/javascript">
         <!--
         window.location="'.$menu_aviso_sistema.'?pag=pedir_cita";
         //-->
         </script>';

PHP tiene su propia funcion para redireccionar la pagina, siempre y cuando aun no hayas enviado nada al explorador

header("Location: $url") ;

1 saludo

EDIT: Ademas, quita ese alert de ahi, y el die tb. Que no te salga ningun problema el php, no significa que los tenga. Igual en el host no esta habilitado para mostrar los errores.

1 respuesta
X

#16 Gracias Misko, seguire tus consejos y probare mañana y ya os comento que tal me fue.

saludos

Usuarios habituales