PHP - problema con formulario de contacto html php

   
Vista:

problema con formulario de contacto html php

Publicado por Tomas (1 intervención) el 14/03/2016 16:48:53
Baje una plantilla de una pagina web responsive y no vino el formulario php asíque lo empece a armar yo... la cosa es que siempre me da este error "error del servidor 500" y ya no se que hacer...
Este es el codigo html:
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
<form name="contactform" method="post" action="send_form_email.php">
	<div class="row uniform">
		<div class="6u 12u$(xsmall)">
			<input type="text" name="demo_name" id="demo-name" value="" placeholder="nombre" />
		</div>
		<div class="6u$ 12u$(xsmall)">
			<input type="email" name="demo_email" id="demo-email" value="" placeholder="Email" />
		</div>
 
		<div class="4u 12u$(small)">
			<input type="radio" id="demo-priority-low" name="demo_priority" checked>
			<label for="demo-priority-low">prioridad baja</label>
		</div>
		<div class="4u 12u$(small)">
			<input type="radio" id="demo-priority-normal" name="demo_priority">
			<label for="demo-priority-normal">prioridad normal</label>
		</div>
		<div class="4u$ 12u$(small)">
			<input type="radio" id="demo-priority-high" name="demo_priority">
			<label for="demo-priority-high">prioridad alta</label>
		</div>
		<div class="6u 12u$(small)">
			<input type="checkbox" id="demo-copy" name="demo_copy">
			<label for="demo-copy">enviarme una copia de este mensaje</label>
		</div>
		<div class="6u$ 12u$(small)">
			<input type="checkbox" id="demo-human" name="demo_human" checked>
			<label for="demo-human">No soy un robot</label>
		</div>
		<div class="12u$">
			<textarea name="demo_message" id="demo-message" placeholder="escriba aqui su mensaje" rows="6"></textarea>
		</div>
		<div class="12u$">
			<ul class="actions">
				<li><input type="submit" value="enviar" class="special" />   <a href="http://www.tufelicidadvacacional.com.ve/email_form.php"></a></li>
				<li><input type="reset" value="borrar todo" /></li>
			</ul>
		</div>
	</div>
</form>


y este es el codigo php

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<?php
if(isset($_POST['email'])) {
 
    // 
 
    $email_to = "tomasmedina@outlook.com.ar";
 
    $email_subject = "Contacto desde Web";
 
    function died($error) {
 
        // mensajes de error
 
        echo "Lo sentimos, hubo un error en sus datos y el formulario no puede ser enviado en este momento. ";
 
        echo "Detalle de los errores.<br /><br />";
 
        echo $error."<br /><br />";
 
        echo "Porfavor corrija estos errores e inténtelo de nuevo.<br /><br />";
        die();
    }
 
    // Se valida que los campos del formulairo estén llenos
 
    if(!isset($_POST['demo_name']) ||
 
        !isset($_POST['demo_email']) ||
 
        !isset($_POST['demo_priority']) ||
 
        !isset($_POST['demo_copy']) ||
 
        !isset($_POST['demo_human'])
 
		!isset($_POST['demo_message'])) {
 
        die('Lo sentimos pero parece haber un problema con los datos enviados.');
 
    }
 //En esta parte el valor "name"  sirve para crear las variables que recolectaran la información de cada campo
 
    $demo_name = $_POST['demo_name']; // requerido
 
    $demo_email = $_POST['demo_email']; // requerido
 
    $demo_priority = $_POST['demo_priority']; // requerido
 
    $demo_copy = $_POST['demo_copy']; // no requerido
	 $demo_human = $_POST['demo_human']; // no requerido 
 
    $demo_message = $_POST['demo_message']; // requerido
 
    $error_message = "";//Linea numero 52;
 
//En esta parte se verifica que la dirección de correo sea válida 
 
   $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
 
  if(!preg_match($email_exp,$email_from)) {
 
    $error_message .= 'La dirección de correo proporcionada no es válida.<br />';
 
  }
 
//En esta parte se validan las cadenas de texto
 
    $string_exp = "/^[A-Za-z .'-]+$/";
 
  if(!preg_match($string_exp,$first_name)) {
 
    $error_message .= 'El formato del nombre no es válido<br />';
 
  }
 
  if(!preg_match($string_exp,$last_name)) {
 
    $error_message .= 'el formato del apellido no es válido.<br />';
 
  }
 
  if(strlen($message) < 2) {
 
    $error_message .= 'El formato del texto no es válido.<br />';
 
  }
 
  if(strlen($error_message) > 0) {
 
    die($error_message);
 
  }
 
//Este es el cuerpo del mensaje tal y como llegará al correo
 
    $email_message = "Contenido del Mensaje.\n\n";
 
 
 
    function clean_string($string) {
 
      $bad = array("content-type","bcc:","to:","cc:","href");
 
      return str_replace($bad,"",$string);
 
    }
 
 
 
    $email_message .= "Nombre: ".clean_string($demo_name)."\n";
 
    $email_message .= "mail: ".clean_string($demo_email)."\n";
 
    $email_message .= "prioridad: ".clean_string($demo_priority)."\n";
 
    $email_message .= "copia: ".clean_string($demo_copy)."\n";
 
    $email_message .= "humano: ".clean_string($demo_human)."\n";
	 $email_message .= "mensaje: ".clean_string($demo_message)."\n";
 
 
//Se crean los encabezados del correo
 
$headers = 'From: '.$demo_mail."\r\n".
 
'Reply-To: '.$demo_mail."\r\n" .
 
'X-Mailer: PHP/' . phpversion();
 
@mail($email_to, $email_subject, $email_message, $headers);
 
?>
 
 
 
<!-- Mensaje de que fue enviado-->
 
Gracias! Nos pondremos en contacto contigo a la brevedad
 
<?php
 
}
 
?>
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

problema con formulario de contacto html php

Publicado por DAVID (129 intervenciones) el 15/03/2016 07:57:55
Entiendo que el codigo php se llama "send_form_email.php", no? Deberias, para poder simplificar y encontrar el error antes, quitar todas las validaciones, y segun entras en el php, casi hacer ya el mail(..). Asi podrás detectarlo. Yo para el header uso este codigo:
1
2
3
4
5
$headers = "MIME-Version: 1.0\r\n";
	   $headers .= "Content-type:text/html; charset=iso-8859-1\r\n";
	//   $headers .= "From: $email_from\r\n";
	   $headers .= "From: FORMULARIO <xxxxxxx@xxxxx.com> \r\n";
	   $headers .= "Reply-to: $email_to \r\n";

usa asi el codigo:
1
2
3
4
5
6
7
8
9
10
11
12
$email_to = "david@xxxxxxxxxxxx.com";
 $email_subject = "FORMULARIO WEB ".
$mensaje="esto es una prueba";
 
 if (mail($email_to, $email_subject, $mensaje, $headers)) {
 ?>
        <div class="alert alert-success text-center" role="alert">mensaje enviado correctamente</div>
 
        <?php        } else {
 ?>
        <div class="alert alert-danger text-center" role="alert">ha habido algún problema y no se ha podido enviar el mensaje correctamente.<br>Inténtelo de nuevo</div>
        <?php        }

Un saludo,
David
estudio de diseño grafico
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 Diego

problema con formulario de contacto html php

Publicado por Diego (39 intervenciones) el 16/03/2016 17:38:42
Hola Tomas!
Tienes mucho codigo para enviar un simple email te recomiendo recibir los valores y guardarlos en variables, es mas facil validarlos asi.
Ahora, estas tratando de enviar mails desde la web de forma nativa y eso te traera problemas en cuanto a recibir las notificaciones y tambien si deseas que tus usuarios reciban una copia una vez enviado.
Te recomiendo usar la libreria PHPMailer que envia correos desde la web utilizando una cuenta de correo existente, como por ejemplo: noreply@dominio.com, tambien los envia en formato HMTL y por medio del servidor SMTP.

Saludos!!!
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