Foros del Web » Programando para Internet » PHP »

Formulario que funciona en un servidor y en otro no

Estas en el tema de Formulario que funciona en un servidor y en otro no en el foro de PHP en Foros del Web. Hola, amigos. He hecho una web en Flash que contiene un formulario y, para probar, la he subido a dos servidores distintos. La misma web, ...
  #1 (permalink)  
Antiguo 25/04/2011, 05:51
Avatar de CaballeroCreativo  
Fecha de Ingreso: abril-2011
Ubicación: España
Mensajes: 6
Antigüedad: 13 años
Puntos: 0
Pregunta Formulario que funciona en un servidor y en otro no

Hola, amigos.

He hecho una web en Flash que contiene un formulario y, para probar, la he subido a dos servidores distintos. La misma web, con el mismo formulario, con el mismo php, todo en la misma carpeta y, por tanto, con las mismas rutas. Todo exactamente igual. Idéntico. Ni una mínima diferencia entre una y otra. Mismo todo, servidores distintos.

Relleno y envío el formulario de uno de los servidores y llega a mi correo el mensaje con los datos.
Relleno y envío el formulario del otro servidor y llega a mi correo el mensaje ¡SIN LOS DATOS!

¿Podemos afirmar sin género de dudas que el problema radica en el servidor? ¿O no necesariamente, porque el mensaje llega, aunque vacío?

Muchas gracias a todos.
  #2 (permalink)  
Antiguo 25/04/2011, 06:30
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Formulario que funciona en un servidor y en otro no

Verifica las configuraciones del servidor para que veas la diferencia de cada una y ver si se pueden corregir.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 25/04/2011, 08:26
Avatar de CaballeroCreativo  
Fecha de Ingreso: abril-2011
Ubicación: España
Mensajes: 6
Antigüedad: 13 años
Puntos: 0
Respuesta: Formulario que funciona en un servidor y en otro no

Gracias por contestar tan rápido, Abimaelrc.

Miraré a ver si soy capaz de saber cómo se comprueba la configuración de un servidor sin cargarme nada. ;)
  #4 (permalink)  
Antiguo 25/04/2011, 09:43
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Formulario que funciona en un servidor y en otro no

A lo que me refiero verifica si por ejemplo con
Código PHP:
Ver original
  1. <?php
Te trae la información y compara. Luego verifica las configuraciones que estén en el httpd.conf
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 25/04/2011, 10:24
Avatar de CaballeroCreativo  
Fecha de Ingreso: abril-2011
Ubicación: España
Mensajes: 6
Antigüedad: 13 años
Puntos: 0
Respuesta: Formulario que funciona en un servidor y en otro no

Gracias de nuevo.

La verdad es que hay unos cuantos campos que son diferentes de uno y otro, aunque es difícil saber cuál es el que afecta a esto. Dentro de PHP Core, en uno el display_errors está on y en otro off; en uno el error_log está como error_log y en otro no value; en uno el expose_php está on y en otro off... En fin, esto es una locura.

De todas formas, muchas gracias por compartir tus conocimientos.
  #6 (permalink)  
Antiguo 26/04/2011, 04:09
Avatar de CaballeroCreativo  
Fecha de Ingreso: abril-2011
Ubicación: España
Mensajes: 6
Antigüedad: 13 años
Puntos: 0
Respuesta: Formulario que funciona en un servidor y en otro no

Bueno, para quienes tengan el mismo problema que yo, creo que el asunto puede ser el siguiente:

El servidor que hacía que me llegara el correo sin los datos tenía desactivadas las famosas register_globals. Pedí al administrador del servidor que si podía activarlas (sabiendo que me iba a decir que no) y me ha proporcionado la siguiente utilísima información, que comparto con todos:

A partir de la versión de PHP 4.2.0 el valor por defecto de la directiva register_globals es off. El por qué de este cambio viene motivado por un aumento del nivel de seguridad en la configuración del PHP por defecto.

Para solucionar esto debemos reemplazar las variables por las referencias adecuadas en cada caso, en PHP se han definido unos arrays diferentes con valores, dependiendo del lugar de procedencia. Por ejemplo:

Si teníamos el siguiente script:

print "Su edad: ".$edad; //cookie
print "Navegador: ".$HTTP_USER_AGENT;
print "Variable: ".$var; //variable de get


Deberíamos reemplazarlas por:

print "Su edad: ".$_COOKIE['edad']; //cookie
print "Navegador: ".$_SERVER['HTTP_USER_AGENT'];
print "Variable: ".$_GET['var']; //variable de get


Yo aún no lo he probado. Lo haré esta noche y contaré los resultados.

Saludos.
  #7 (permalink)  
Antiguo 27/04/2011, 03:23
Avatar de CaballeroCreativo  
Fecha de Ingreso: abril-2011
Ubicación: España
Mensajes: 6
Antigüedad: 13 años
Puntos: 0
Respuesta: Formulario que funciona en un servidor y en otro no

Nada. No hay manera. No va. Ahora ni siquiera llega el formulario.

No sé si cortarme las venas o dejármelas largas. He hecho un montón de pruebas y no funciona. Si ahora los servidores tienen siempre las register_globals desactivadas, tiene que haber una forma sencilla y conocida de que funcione, ¿no? Pues a mí, no.

El código que utilizo para el botón enviar en el flash es:

Cita:
on (release) {
if ((nombre=='') or (email=='') or (mensaje=='')) {
respuesta = "Hay campos obligatorios sin rellenar. Por favor, revisa tu formulario.";
} else {
loadVariablesNum ("enviar.php", 0, "POST");
respuesta = "Tu formulario ha sido enviado con éxito.";
}
}
El código php que he probado es:

Cita:
<?php
$_POST['datos'].="Fecha: ".date('d-m-Y'). ' ';
$_POST['datos'].="Ip: ".$_SERVER['REMOTE_ADDR']. '
';
//Recogemos variables post
foreach($_POST as $nombre_campo => $valor)
{
$i++;
$datos .= $nombre_campo . '=' . $valor . '
';
}

mail("[email protected]", "Mensaje desde la web de EMPRESA, s.a.",
"Información enviada desde el formulario de la web de EMPRESA, s.a. por $_POST['nombre']

Nombre: $_POST['nombre']
Email: $_POST['email']
Teléfono: $_POST['tel']
Sector: $_POST['sector']
Mensaje: $_POST['mensaje']",
"From: $_POST['nombre']");
?>
¿Qué estoy haciendo mal que no me llega nada?

Gracias por todo, amigos.
  #8 (permalink)  
Antiguo 27/04/2011, 08:29
Avatar de CaballeroCreativo  
Fecha de Ingreso: abril-2011
Ubicación: España
Mensajes: 6
Antigüedad: 13 años
Puntos: 0
Respuesta: Formulario que funciona en un servidor y en otro no

¡¡¡¡¡SOLUCIONADO!!!!!

Después de hacer algunas pruebas (solo unas cientos de miles), al final el problema estaba en algo tan sencillo como unas simples comillas. Probado y garantizado (al menos a mí) me funciona este sencillo y breve código:

Cita:
<?php
mail("[email protected]", "Mensaje desde la web de EMPRESA, s.a.",
"Datos enviados desde el formulario de la web de EMPRESA, s.a. por $_POST[nombre]

Nombre: $_POST[nombre]
Email: $_POST[email]
Tel.: $_POST[tel]
Sector: $_POST[sector]
Mensaje: $_POST[mensaje]",
"From: $_POST[nombre]");
?>
Espero que esto sirva de ayuda a los que tengan el mismo problema que yo.

Gracias a todos por ayudar a los que estamos empezando o somos un poco más torpes que el resto de los mortales. Seguro que volveremos a vernos por aquí.

Saludos.

Etiquetas: flash, servidor, 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 12:42.