Foros del Web » Programando para Internet » PHP »

Problema con formulario en Firefox y IE

Estas en el tema de Problema con formulario en Firefox y IE en el foro de PHP en Foros del Web. Hola, buenos días, Tengo un problema con un envío de formulario, el cuál no funciona en Firefox ni en IE, sin embargo funciona perfecto en ...
  #1 (permalink)  
Antiguo 06/09/2012, 10:48
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años, 6 meses
Puntos: 27
Problema con formulario en Firefox y IE

Hola, buenos días,

Tengo un problema con un envío de formulario, el cuál no funciona en Firefox ni en IE, sin embargo funciona perfecto en Chrome, Opera y Safari.

El código del formulario es este:

Código HTML:
<form action="contacto.php" method="post" name="formulario" >
                    <tr>
                        <td>Nombre</td>
                        <td><input type="text" name="nombre" id="nombre" size="35%" style="margin-bottom:15px;" required="required"  /> *</td>
                    </tr>
                    <tr>
                        <td>email</td>
                        <td><input type="email" name="email" id="email" size="35%" style="margin-bottom:15px;" required="required"  /> *</td>
                    </tr>
                    <tr>
                        <td>Teléfono</td>
                        <td><input type="text" name="telefono" id="telefono" size="35%" style="margin-bottom:15px;"  /></td>
                    </tr>
                    <tr>
                        <td>Comentarios</td>
                        <td></td>
                    </tr>
                    <tr>
                        <td colspan="2" valign="middle"><textarea name="comentarios" cols="45" rows="5" style="margin-top:15px;" required="required"></textarea> *</td>
                    </tr>  
                    <tr>
                        <td colspan="2" align="right"><input type="image" src="img/botones/enviar.png" name="enviar" id="enviar2" value="Enviar" style="margin-left:2px; margin-top: 10px;" /></td>
	                </tr>             
                    <tr>
                        <td colspan="2"><span style="color:#FFF; font-style:italic;"><?php echo $mensaje; ?></span></td>
	                </tr>             
                </form> 
y el PHP que controla en formulario es el siguiente:

Código PHP:
if($_POST[enviar]) {
        
        
/* Para la empresa */
        
        
$sqlContacto mysql_query("Select config_contacto from configuracion_espanol"); $rowSqlContacto mysql_fetch_array($sqlContacto);
        
        
$today date("Ymd");
        
$deemail=$_POST['email'];
        
$sfrom=$_POST['email']; //cuenta que envia
        //$sBCC="@"; //me envio una copia oculta
        
$sdestinatario$rowSqlContacto['config_contacto']; //cuenta destino
        
$ssubject="Mensaje de contacto de Obr.mx"//subject
                        
        
$shtml 'Correo enviado desde el sitio <a href="http://www.obr.mx" target="_blank">www.obr.mx</a> del Sr(a) <strong>' $_POST['nombre'] . '</strong> <br />  Correo electr&oacute;nico: <strong>' $_POST['email'] . "<br />" '</strong><p>Tel&eacute;fono: <strong>' $_POST['telefono'] . '</strong></p><br/>Comentarios: <p>' utf8_decode($_POST['comentarios']) . '</p><br/>';
                        
        
$encabezados "MIME-Version: 1.0\n";
        
$encabezados .= "Content-type: text/html; charset=iso-8859-1\n";
        
$encabezados .= "From: $denombre <$deemail>\n";
        
$encabezados .= "X-Sender: <$sfrom>\n";
        
//$encabezados .= "BCC: <$sBCC>\n"; //aqui fijo el BCC
        
$encabezados .= "X-Mailer: PHP\n";
        
$encabezados .= "X-Priority: 1\n"// fijo prioridad
        
$encabezados .= "Return-Path: <$sfrom>\n";
        
        
mail($sdestinatario,$ssubject,$shtml,$encabezados);
        

        
/* Para el cliente */
        
        
$today date("Ymd");
        
$deemail$rowSqlContacto['config_contacto']; //cuenta destino
        
$sfrom$rowSqlContacto['config_contacto']; //cuenta destino //cuenta que envia
        //$sBCC="@"; //me envio una copia oculta
        
$sdestinatario$_POST['email']; //cuenta que envia
        
$ssubject="Mensaje de contacto de Obr.mx"//subject
                        
        
$shtml 'Haz enviado un mensaje a <a href="http://www.obr.mx" target="_blank">www.obr.mx</a>, en breve nos pondremos en contacto. <br />' 'Tu mensaje: ' utf8_decode($_POST['comentarios']) . '</p><br/>';
                        
        
$encabezados "MIME-Version: 1.0\n";
        
$encabezados .= "Content-type: text/html; charset=iso-8859-1\n";
        
$encabezados .= "From: $denombre <$deemail>\n";
        
$encabezados .= "X-Sender: <$sfrom>\n";
        
//$encabezados .= "BCC: <$sBCC>\n"; //aqui fijo el BCC
        
$encabezados .= "X-Mailer: PHP\n";
        
$encabezados .= "X-Priority: 1\n"// fijo prioridad
        
$encabezados .= "Return-Path: <$sfrom>\n";
        
        
mail($sdestinatario,$ssubject,$shtml,$encabezados);
        
        
$mensaje "El correo se envío satisfactoriamente. En breve nos pondremos en contacto.";
    
    } 
¿Saben si habrá algún problema de compatibilidad con Firefox e IE?

De antemano, gracias por sus comentarios.

Saludos!
  #2 (permalink)  
Antiguo 06/09/2012, 10:55
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: Problema con formulario en Firefox y IE

¿y qué es lo que no funciona?

Por cierto, no es buena práctica maquetar el formulario con tablas, con css es más limpio y corto el código. y al inicio de tu código tienes

$_POST[enviar]

y debería ser
$_POST['enviar']
  #3 (permalink)  
Antiguo 06/09/2012, 10:59
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años, 6 meses
Puntos: 27
Respuesta: Problema con formulario en Firefox y IE

Lo que no funciona es que no envía nada por Firefox ni por IE. Es decir no envía el correo tanto a la empresa como al cliente. Sin embargo en Chrome, Opera y Safari si lo envía sin problemas.

Tengo duda con respecto a $_POST['enviar'] o $_POST[enviar], porque he visto muchos manuales donde usan las comillas simples o no y funciona bien.

Saludos!
  #4 (permalink)  
Antiguo 06/09/2012, 11:02
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: Problema con formulario en Firefox y IE

Bueno, es que la mayoría de las instalaciones de php están configuradas para pasar por alto el no-uso de los ' pero son necesarios.

Te sugiero mostrar el contenido de lo recibido, en tu código donde recibes los datos coloca la instrucción

var_dump($_POST);

así sabrás si llegan los datos o no, y cómo llegan
  #5 (permalink)  
Antiguo 06/09/2012, 11:19
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años, 6 meses
Puntos: 27
Respuesta: Problema con formulario en Firefox y IE

Estoy colocando el var_dump en el código de PHP donde recibo la información del formulario, ¿pero donde visualizo los resultados? Me tienen que salir sobre la página donde se refresca? si es así no me sale nada

Puedo ver en los correos como llega la información cuando lo mando desde Chrome, pero con Firefox e IE sigo sin poder recibirla. :/
  #6 (permalink)  
Antiguo 06/09/2012, 15:37
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años, 6 meses
Puntos: 27
Respuesta: Problema con formulario en Firefox y IE

Seguí intentando corregir el script, no sé de donde porque lo veo bien :/ , y sigue el mismo problema... cambie lo que me comentaste sobre $_POST[''] con las comillas simples y ni así.

¿Alguna otra idea de porque no funcione con Firefox ni IE? :(

Saludos!
  #7 (permalink)  
Antiguo 06/09/2012, 15:52
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: Problema con formulario en Firefox y IE

Lo del var_dump tendrías que ponerlo arriba del

if($_POST[enviar]) {


Por cierto, el botón lo tienes como Enviar con la mayúscula al inicio, creo que por ahí está el problema. Si ese es, con el var_dump al inicio verás exactamente cómo recibes el dato.

Edito: el name sí esta como "enviar", con lo que no debería haber problema. Verifica lo que recibes:


var_dump($_POST);
if($_POST[enviar]) {
.
.
.

Y también que no haya un código intermedio ya que el php que muestras no está completo.
  #8 (permalink)  
Antiguo 06/09/2012, 16:36
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años, 6 meses
Puntos: 27
Respuesta: Problema con formulario en Firefox y IE

Ok, ya funcionó la prueba:

Desde Firefox me salió lo siguiente:


Código:
array(6) {
  ["nombre"]=>
  string(22) "Antonio Rebollar Angel"
  ["email"]=>
  string(23) "[email protected]"
  ["telefono"]=>
  string(7) "-------"
  ["comentarios"]=>
  string(30) "Correo de prueba desde Firefox"
  ["enviar_x"]=>
  string(2) "14"
  ["enviar_y"]=>
  string(1) "5"
}
y desde Chrome algo similar:

Código:
array(7) {
  ["nombre"]=>
  string(8) "Antonio "
  ["email"]=>
  string(23) "[email protected]"
  ["telefono"]=>
  string(6) "------"
  ["comentarios"]=>
  string(29) "Correo de prueba desde Chrome"
  ["enviar_x"]=>
  string(2) "27"
  ["enviar_y"]=>
  string(1) "8"
  ["enviar"]=>
  string(6) "Enviar"
}
Al parecer si recibe bien los datos desde el formulario. Y como comentas, hay dos secciones más en PHP, sin embargo una es para hacer una consulta a una tabla de la base de datos que no tiene que ver con el código del envío de formulario, pero si es necesario, coloco el código php completo.

Código PHP:
<?php
    
    
/* Llamamos al archivo de conexión a la BD y Servidor */
    
include("bd/conexion.php");
    
    
    
/* Sección: Buscar Marcas */
    
        
$sqlBuscarMarcas mysql_query("Select * from marcas");
    
        
$sqlBuscaMarcasInd mysql_query("Select * from marcas Where marca_nombre = '$marca'");
        
$rowSqlBuscaMarcasInd mysql_fetch_array($sqlBuscaMarcasInd);

    
/* Sección: Configuración */
    
        
$sqlConfiguracionEsp mysql_query("Select * from configuracion_espanol");
        
$rowSqlConfigEsp mysql_fetch_array($sqlConfiguracionEsp);
        
        
$sqlConfiguracionIng mysql_query("Select * from configuracion_ingles");
        
$rowSqlConfigIng mysql_fetch_array($sqlConfiguracionIng);
    
    
/* Envío de correos por contacto [Español]*/
    
var_dump($_POST);
    if(
$_POST['enviar']) {
        
        
/* Para la empresa */
        
        
$sqlContacto mysql_query("Select config_contacto from configuracion_espanol"); $rowSqlContacto mysql_fetch_array($sqlContacto);
        
        
$today date("Ymd");
        
$deemail=$_POST['email'];
        
$sfrom=$_POST['email']; //cuenta que envia
        //$sBCC="@"; //me envio una copia oculta
        
$sdestinatario$rowSqlContacto['config_contacto']; //cuenta destino
        
$ssubject="Mensaje de contacto de Obr.mx"//subject
                        
        
$shtml 'Correo enviado desde el sitio <a href="http://www.obr.mx" target="_blank">www.obr.mx</a> del Sr(a) <strong>' $_POST['nombre'] . '</strong> <br />  Correo electr&oacute;nico: <strong>' $_POST['email'] . "<br />" '</strong><p>Tel&eacute;fono: <strong>' $_POST['telefono'] . '</strong></p><br/>Comentarios: <p>' utf8_decode($_POST['comentarios']) . '</p><br/>';
                        
        
$encabezados "MIME-Version: 1.0\n";
        
$encabezados .= "Content-type: text/html; charset=iso-8859-1\n";
        
$encabezados .= "From: $denombre <$deemail>\n";
        
$encabezados .= "X-Sender: <$sfrom>\n";
        
//$encabezados .= "BCC: <$sBCC>\n"; //aqui fijo el BCC
        
$encabezados .= "X-Mailer: PHP\n";
        
$encabezados .= "X-Priority: 1\n"// fijo prioridad
        
$encabezados .= "Return-Path: <$sfrom>\n";
        
        
mail($sdestinatario,$ssubject,$shtml,$encabezados);
        

        
/* Para el cliente */
        
        
$today date("Ymd");
        
$deemail$rowSqlContacto['config_contacto']; //cuenta destino
        
$sfrom$rowSqlContacto['config_contacto']; //cuenta destino //cuenta que envia
        //$sBCC="@"; //me envio una copia oculta
        
$sdestinatario$_POST['email']; //cuenta que envia
        
$ssubject="Mensaje de contacto de Obr.mx"//subject
                        
        
$shtml 'Haz enviado un mensaje a <a href="http://www.obr.mx" target="_blank">www.obr.mx</a>, en breve nos pondremos en contacto. <br />' 'Tu mensaje: ' utf8_decode($_POST['comentarios']) . '</p><br/>';
                        
        
$encabezados "MIME-Version: 1.0\n";
        
$encabezados .= "Content-type: text/html; charset=iso-8859-1\n";
        
$encabezados .= "From: $denombre <$deemail>\n";
        
$encabezados .= "X-Sender: <$sfrom>\n";
        
//$encabezados .= "BCC: <$sBCC>\n"; //aqui fijo el BCC
        
$encabezados .= "X-Mailer: PHP\n";
        
$encabezados .= "X-Priority: 1\n"// fijo prioridad
        
$encabezados .= "Return-Path: <$sfrom>\n";
        
        
mail($sdestinatario,$ssubject,$shtml,$encabezados);
        
        
$mensaje "El correo se envío satisfactoriamente. En breve nos pondremos en contacto.";
    
    }
    
        
/* Envío de correos por contacto [Inglés]*/
    
    
if($_POST['send']) {
        
        
/* Para la empresa */
        
        
$sqlContacto mysql_query("Select config_contacto from configuracion_espanol"); $rowSqlContacto mysql_fetch_array($sqlContacto);
        
        
$today date("Ymd");
        
$deemail=$_POST['email2'];
        
$sfrom=$_POST['email2']; //cuenta que envia
        //$sBCC="@"; //me envio una copia oculta
        
$sdestinatario$rowSqlContacto['config_contacto']; //cuenta destino
        
$ssubject="Contact email from Obr.mx"//subject
                        
        
$shtml 'Email send to <a href="http://www.obr.mx" target="_blank">www.obr.mx</a> to the Mr(s) <strong>' $_POST['name'] . '</strong> <br />  E-mail: <strong>' $_POST['email2'] . "<br />" '</strong><p>Phone: <strong>' $_POST['phone'] . '</strong></p><br/>Comments : <p>' utf8_decode($_POST['comments']) . '</p><br/>';
                        
        
$encabezados "MIME-Version: 1.0\n";
        
$encabezados .= "Content-type: text/html; charset=iso-8859-1\n";
        
$encabezados .= "From: $denombre <$deemail>\n";
        
$encabezados .= "X-Sender: <$sfrom>\n";
        
//$encabezados .= "BCC: <$sBCC>\n"; //aqui fijo el BCC
        
$encabezados .= "X-Mailer: PHP\n";
        
$encabezados .= "X-Priority: 1\n"// fijo prioridad
        
$encabezados .= "Return-Path: <$sfrom>\n";
        
        
mail($sdestinatario,$ssubject,$shtml,$encabezados);
        

        
/* Para el cliente */
        
        
$today date("Ymd");
        
$deemail$rowSqlContacto['config_contacto']; //cuenta destino
        
$sfrom$rowSqlContacto['config_contacto']; //cuenta destino //cuenta que envia
        //$sBCC="@"; //me envio una copia oculta
        
$sdestinatario$_POST['email2']; //cuenta que envia
        
$ssubject="Contact email from Obr.mx"//subject
                        
        
$shtml 'You have sent a message to <a href="http://www.obr.mx" target="_blank">www.obr.mx</a>, we will contact you as soon as possible. <br />' 'Your message: ' utf8_decode($_POST['comments']) . '</p><br/>';
                        
        
$encabezados "MIME-Version: 1.0\n";
        
$encabezados .= "Content-type: text/html; charset=iso-8859-1\n";
        
$encabezados .= "From: $denombre <$deemail>\n";
        
$encabezados .= "X-Sender: <$sfrom>\n";
        
//$encabezados .= "BCC: <$sBCC>\n"; //aqui fijo el BCC
        
$encabezados .= "X-Mailer: PHP\n";
        
$encabezados .= "X-Priority: 1\n"// fijo prioridad
        
$encabezados .= "Return-Path: <$sfrom>\n";
        
        
mail($sdestinatario,$ssubject,$shtml,$encabezados);
        
        
$mensajeIng "The message was sent successfully. We will contact you as soon as possible.";
    
    }

    
    
    
mysql_close();

 
?>
Saludos!
  #9 (permalink)  
Antiguo 06/09/2012, 16:38
 
Fecha de Ingreso: mayo-2006
Mensajes: 475
Antigüedad: 18 años, 6 meses
Puntos: 58
Respuesta: Problema con formulario en Firefox y IE

El input type image envia las cordenadas exactas en la que se hizo click en este formato en tu ejemplo:
enviar.x=3
enviar.y=5

Es decir, que se envia el name.x y el name.y.
En firefox no se envia el name tal cual
  #10 (permalink)  
Antiguo 06/09/2012, 16:46
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años, 6 meses
Puntos: 27
Respuesta: Problema con formulario en Firefox y IE

Tienes razón, nunca había usado en var_dump, por ello no me fijé en eso.

¿Sería conveniente cambiar el input type="image", por el input type="submit"?

Saludos!
  #11 (permalink)  
Antiguo 06/09/2012, 16:47
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 9 meses
Puntos: 177
Respuesta: Problema con formulario en Firefox y IE

En firefox no estás recibiendo $_POST['enviar'] por eso no se ejecuta, probá cambiando el boton a un type submit comun y corriente

Consejo, usá siempre algo así para corroborar si llega la variable
if(array_key_exists('enviar', $_POST) AND $_POST['enviar'] != "")

o asi

if(isset($_POST['enviar']) AND $_POST['enviar'] != "")
__________________
la la la
  #12 (permalink)  
Antiguo 06/09/2012, 16:59
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años, 6 meses
Puntos: 27
Respuesta: Problema con formulario en Firefox y IE

En efecto, era el tipo de input que se estaba utilizando. Por el momento aparece el clásico botón de "Enviar" genérico pero eso ya es lo de menos :)

Ahora los correos ya salen correctamente desde todos los navegadores.

Agradezco a todos por sus comentarios y sugerencias. Tomaré en cuenta todas sus observaciones para hacer un mejor código ^^

Saludos!

Etiquetas: firefox, formulario, html, mysql, sql
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 22:34.