PHP - Error formularios PHP en 5.6

 
Vista:

Error formularios PHP en 5.6

Publicado por Antonio Gallardo Martinez (3 intervenciones) el 04/06/2015 07:51:32
Muy buenas,
Tengo una web en la que la gente contactaba conmigo a través de un formulario básico. La web ha estado funcionando perfectamente hasta que la semana pasada instalé la Moodle en el servidor y cambié la versión PHP del 5.3 al 5.6.
A partir de ahí no funcionan los formularios. He estado rastreando foros pero no encuentro la solución. No sé si es el código php o la configuración del servidor, les dejo la siguiente información:

ERROR:
Notice: Undefined variable: headers in /mnt/webg/e0/71/52878871/htdocs/contacto.php on line 126
Error al enviar el formulario. Por favor, inténtelo de nuevo mas tarde.

CÓDIGO:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
$mail_destinatario = 'avgm2001@gmail.com';
 
if (isset ($_POST['enviar'])) {
$headers .= "From: ".$_POST['email']. "";
if ( mail ($mail_destinatario, "Contacto", "Nombre y apellidos: ".$_POST['nombre']."\n"."Teléfono: ".stripcslashes ($_POST['telefono'])."\n"."Localidad: ".stripcslashes ($_POST['localidad'])."\n"."Asunto: ".stripcslashes ($_POST['asunto'])."\n"."Mensaje: ".stripcslashes ($_POST['mensaje']), $headers )) echo '

Su mensaje a sido enviado correctamente. Gracias por contactar con nosostros

';
 
else echo '

Error al enviar el formulario. Por favor, inténtelo de nuevo mas tarde.

'; }
 
echo '
<form method="post" action="?"> 

				</body>
				<table border="0" width="100%" id="table3" style="border-collapse: collapse">
					<tr>
						<td><label for="nombre">Nombre y apellidos : </label></td>
						<td><input name="nombre" maxLength="80" size="50" type="text"><br></td>
					</tr>
					<tr>
						<td><label for="email">Email : </label></td>
						<td><input name="email" maxLength="60" size="50" type="text"><br></td>
					</tr>
					<tr>
						<td><label for="telefono">Teléfono : </label></td>
						<td><input name="telefono" maxLength="60" size="50" type="text"><br></td>
					</tr>
					<tr>
						<td><label for="localidad">Localidad : </label></td>
						<td><input name="localidad" maxLength="60" size="50" type="text"><br></td>
					</tr>					
					<tr>
						<td><label for="asunto">Asunto : </label></td>
						<td><input name="asunto" maxLength="60" size="50" type="text"><br></td>
					</tr>
					<tr>
						<td><label for="mensaje">Mensaje : </label></td>
						<td><textarea cols="50" rows="5" name="mensaje"></textarea> <br></td>
					</tr>
					<tr>
						<td colspan="2">
						<p align="center"><label for="enviar">
                        <input name="enviar" value="Enviar consulta" type="submit"></label></td>
					</tr>
				</table>
				 </form>
';
?>

La línea a la que hace referencia el error es la que he puesto en negrita
$headers .= "From: ".$_POST['email']. "";

Les agradezco de antemano su ayuda.
Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Error formularios PHP en 5.6

Publicado por xve (6935 intervenciones) el 04/06/2015 21:04:08
Hola Antonio, eso no es un error, es una Notificación "Notice"....
Simplemente indica que no se muestren las notificaciones en el PHP.ini, o declara la variable antes... algo como:
1
$headers="";

Entiendo que el funcionamiento de la web debe ser el correcto, no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error formularios PHP en 5.6

Publicado por Antonio (3 intervenciones) el 05/06/2015 00:14:24
Muchas gracias por tu pronta respuesta.
El mensaje de error ya he conseguido quitarlo definiendo bien la variable $headers, por lo que se ve, el punto anterior al signo igual no funciona en esta versión.
Ahora va todo bien, sin notificaciones ni mensajes de error, pero no envía los emails (Error al enviar el formulario. Por favor, inténtelo de nuevo mas tarde.). estoy trabajando con los 4 atributos de la función mail, pero no consigo dar con el error.
A ver si alguien me orienta.
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Error formularios PHP en 5.6

Publicado por xve (6935 intervenciones) el 05/06/2015 08:31:52
Hola Antonio, el envío de correo mediante la instrucción mail(), lo que hace es utilizar la configuración de correo del archivo de configuración php.ini...
Yo te recomiendo siempre utilizar el envio mediante SMTP, de esta manera te ahorraras todos estos problemas.
http://www.lawebdelprogramador.com/codigo/PHP/1884-Envio-de-correo-mediante-servidor-SMTP.html

Espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error formularios PHP en 5.6

Publicado por Antonio (3 intervenciones) el 05/06/2015 17:49:34
Muchas gracias,
Tras muchas pruebas con la función mail, me he puesto manos a la obra con SMTP.
He escogido la versión 2, que parece que es la que se ajusta a mis necesidades, y tras modificar varias veces el archivo sendMail.php, me da el siguiente error:
Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in /mnt/webg/e0/71/52878871/htdocs/class.smtp.php on line 197
Error: Language string failed to load: tls

Esa línea dice lo siguiente:
// Begin encrypted connection
if(!stream_socket_enable_crypto($this->smtp_conn, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) {
return false;
}

return true;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar