Problema con formulario PHP
Hola a todos,
Me ha caido un marroncillo ya que nuestro desarrollador se ha ido de la empresa. Es un simple formulario en PHP, pero yo no soy programador y todo me suena a chino.
El caso es que he conseguido hacer un formulario con un tutorial. Lo he probado en un servidor y funciona, pero al pasarlo al servidor donde debe estar no funciona.
El código del PHP es el siguiente:
<?php
//Importamos las variables del formulario de contacto
@$nombre = addslashes($_POST['nombre']);
@$apellidos = addslashes($_POST['apellidos']);
@$email = addslashes($_POST['email']);
@$telefono = addslashes($_POST['telefono']);
@$comentarios = addslashes($_POST['comentarios']);
//Preparamos el mensaje de contacto
$cabeceras = "From: $email\n" //La persona que envia el correo
. "Reply-To: $email\n";
$asunto = "Mensaje desde la pagina Web"; //asunto aparecera en la bandeja del servidor de correo
$email_to = "pilar_rubio@sanroman.com"; //cambiar por tu email
$contenido = "$nombre desea información del curso de fisioterapia\n"
. "\n"
. "Nombre: $nombre\n"
. "Apellidos: $apellidos\n"
. "Email: $email\n"
. "Teléfono: $telefono\n"
. "Comentarios: $comentarios\n"
. "\n";
//Enviamos el mensaje y comprobamos el resultado
if (@mail($email_to, $asunto ,$contenido ,$cabeceras )) {
//Si el mensaje se envía muestra una confirmación
header('Location: ok.html');
}else{
//Si el mensaje no se envía muestra el mensaje de error
header('Location: error.html');
}
?>
Sabríais decirme porque funciona en un servidor y en otro no? puede ser por configuración? versión? En caso de que sea así, hay alguna manera de estandarizarlo para que funcione en todos los servidores? Lo pregunto porque me va a ser muy complicado saber que versión y configuración tiene cada servidor.
Muchas gracias por la ayuda.
Aldebaran
Pensaba que no pero he conseguido averiguar las versiones de PHP de los diferentes servidores.
Donde funciona el formulario tiene la versión: 5.2.17, y donde NO funciona la: 5.2.13.
Espero que esto ayude. Gracias.
DGordillo
La diferencia entre una versión de PHP y otra no debería ser problema (son 3 sub-versiones, nada más)
Este es el típico formulario PHP que utiliza Sendmail de Linux para funcionar... no sé, los servidores Windows de ahora si tienen PHP pero dudo que tengan ése comando. Pudiera ser la razón de que en un servidor funcione y en otro no. Mira a ver qué tipo de servidor es cada uno.
prueba con este sencillísimo PHP (lo único que hace es enviar un correo de prueba):
<?php
echo ( mail("tu.direccion.de.email@blablabla.com","Correo de prueba","Esto es un correo de prueba","From:otro.email@blablabla.com") ) ? 'Mail enviado' : 'Error';
?>
Si no funciona, lo más probable es que SENDMAIL no esté en el servidor. (que el servidor sea Windows Server)
Aldebaran
Hola DGordillo, muchas gracias por contestar.
Voy a probar lo que tu me dices a ver que pasa. Saqué otro formulario diferente y me pasaba lo mismo, en el servidor con la version 5.2.13 no funcionaba.
Pruebo esto y te digo.
Gracias.
Aldebaran
DGordillo, he probado el código que me has pasado y me da el siguiente error:
Warning: mail() [function.mail]: SMTP server response: 554 5.7.1 <j_fernandez@sanroman.com>: Recipient address rejected: Access denied in C:\inetpub\wwwroot\sanroman\fisioterapia\prueba.php on line 2
Error
JMSR - Huanma Sáenz
Saludos:
Ya que no eres programador se me ocurre que instales en tu host "FormTools" y sigas los pasos para poder ter tu formulario funcionando.
http://www.formtools.org/
ponchi
Yo para los formularios que tienen que mandar un mail utilizo php mailer, te dejo un enlace que te lo explica a ver si te sirve http://www.desarrolloweb.com/articulos/phpmailer.html
Aldebaran
Gracias a los últimos dos comentarios. Ya resolví el problema hace tiempo, pero nunca está de más aprender cosas nuevas.
salu2!
Six Design
Hola Aldebaran,
Podrías explicar cómo solucionaste el problema al final? Porque creo que yo tengo el mismo problema y resulta que tampoco soy programador jeje. Saludos