PHP - Problema al añadir nuevos campos a formulario PHP

   
Vista:

Problema al añadir nuevos campos a formulario PHP

Publicado por Marcos Nieto (7 intervenciones) el 22/06/2011 21:57:07
Hola buenas;

Tengo una web en Wordpress en la cual tengo un formulario de contacto.

Tengo que añadir unos campos a un formulario, el cual hasta el momento solo tenía 3, nombre, email y mensaje (ahora tendrá además empresa y teléfono)

En el formulario ya he añadido los input pero en el archivo post.php que es el que procesa el formulario no logro que lleguen al correo esos nuevos campos. No soy ningún experto en PHP así que me imagino que será algo evidente pero llevo un tiempo mirándolo y la verdad es que no soy capaz.

Os pongo el código del archivo post.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
<?php
 
// CONFIGURATION --------------------------------------------------------------
 
// This is the email where the contact mails will be sent to. 
// In WordPress Edition, it will be done via the theme admin. You don't need to modify this file under WP Edition.
$config['recipient'] = isset($_POST['c_email']) ? trim($_POST['c_email']) : '';
 
// This is the subject line for contact emails.
// The variable %name% will be replaced with the name of the sender.
$config['subject'] = 'Nuevo mensaje desde la web de: %name%';
 
// These are the messages displayed in case of form errors.
$config['errors'] = array
(
	'no_name'       => 'El nombre est&aacute; vac&iacute;o',
	'no_email'      => 'El e-mail est&aacute; vaci&iacute;o',
	'invalid_email' => 'Direcci&oacute;n de e-mail no v&aacute;lida',
	'no_message'    => 'El mensaje est&aacute; vac&iacute;o',
);
 
// END OF CONFIGURATION -------------------------------------------------------
 
 
// Ignore non-POST requests
if ( ! $_POST)
	exit('Por favor, vuelve a la ra&iacute;z del sitio web.');
 
// Was this an AJAX request or not?
$ajax = (isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
 
// Set the correct HTTP headers
header('Content-Type: text/'.($ajax ? 'plain' : 'html').'; charset=utf-8');
 
// Extract and trim contactform values
$name    = isset($_POST['name']) ? trim($_POST['name']) : '';
$email   = isset($_POST['email']) ? trim($_POST['email']) : '';
$empresa   = isset($_POST['empresa']) ? trim($_POST['empresa']) : '';
$telefono   = isset($_POST['telefono']) ? trim($_POST['telefono']) : '';
$message = isset($_POST['message']) ? trim($_POST['message']) : '';
 
// Take care of magic quotes if needed (you really should have them disabled)
if (get_magic_quotes_gpc())
{
	$name    = stripslashes($name);
	$email   = stripslashes($email);
	$empresa   = stripslashes($empresa);
	$telefono   = stripslashes($telefono);
	$message = stripslashes($message);
}
 
// Initialize the errors array which will also be sent back as a JSON object
$errors = NULL;
 
// Validate name
if ($name == '' || strpos($name, "\r") || strpos($name, "\n"))
{
	$errors['name'] = $config['errors']['no_name'];
}
 
// Validate email
if ($email == '')
{
	$errors['email'] = $config['errors']['no_email'];
}
elseif ( ! preg_match('/^[-_a-z0-9\'+*$^&%=~!?{}]++(?:\.[-_a-z0-9\'+*$^&%=~!?{}]+)*+@(?:(?![-.])[-a-z0-9.]+(?<![-.])\.[a-z]{2,6}|\d{1,3}(?:\.\d{1,3}){3})(?::\d++)?$/iD', $email))
{
	$errors['email'] = $config['errors']['invalid_email'];
}
 
// Validate message
if ($message == '')
{
	$errors['message'] = $config['errors']['no_message'];
}
 
// Validation succeeded
if (empty($errors))
{
	// Prepare subject line
	$subject = str_replace('%name%', $name, $config['subject']);
 
	// Additional mail headers
	$headers  = 'Content-Type: text/plain; charset=utf-8'."\r\n";
	$headers .= 'From: '.$email;
 
	// Send the mail
	if ( ! mail($config['recipient'], $subject, $message, $headers))
	{
		$errors['server'] = 'Parece que existen problemas t&eacute;cnicos con nuestro servidor. Por favor, vuelve a probar pasados unos minutos. '.
		                    'Si lo prefieres, puedes enviarnos un mail a '.$config['recipient'].'.Muchas gracias.';
	}
}
 
if ($ajax)
{
	// Output the possible errors as a JSON object
	echo json_encode($errors);
}
else
{
	// Show a simple HTML feedback message in case of non-javascript support
	if (empty($errors))
	{
		echo '<h4>Muchas gracias!</h4>';
		echo '<p>Tu mensaje ha sido enviado con &eacute;xito. Nos pondremos en contacto tan pronto nos sea posible.</p>';
	}
	else
	{
		echo '<h4>Oops!</h4>';
		echo '<p>Por favor, vuelve atr&aacute;s y comprueba los siguientes errores:</p>';
		echo '<ul><li>';
		echo implode('</li><li>', $errors);
		echo '</li></ul>';
	}
}
 
?>



El problema es que únicamente me llega al correo el nombre, el mail, y en el cuerpo del mail únicamente el mensaje, cuando lo que quiero que me llegue además de éste es la empresa y el teléfono.

Espero haberme explicado bien.

Muchas gracias y un saludo!

mnieto
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 al añadir nuevos campos a formulario PHP

Publicado por Andres (149 intervenciones) el 22/06/2011 23:17:56
Depronto agregando la siguiente linea antes de la funcion mail:

1
2
3
4
5
$message="Telefono:".$telefono."<br>Empresa:".$empresa."<br>".$message;
 
// Send the mail
if ( ! mail($config['recipient'], $subject, $message, $headers))
.....


Un Saludo.
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

Problema al añadir nuevos campos a formulario PHP

Publicado por Marcos Nieto (7 intervenciones) el 22/06/2011 23:39:09
Gracias Andrés;

Lo acabo de probar pero en el mail no me coge los valores de las variables, es decir me llega lo siguiente:

Telefono:<br>Empresa:<br>Mensaje de prueba

Los campos en el formulario se llaman igual, por si acaso pego el código aquí:

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
<?php
 
	///////////////////////////////////
	///////////////////////////////////
	//// THIS WILL HANDLE THE SHORTCODES
	//// FOR PORTFOLIO
	///////////////////////////////////
	///////////////////////////////////
 
	//Our hook
	add_shortcode('contact_form', 'ddshort_contact_form');
 
	//Our Funciton
	function ddshort_contact_form($atts, $content = null) {
 
		//extracts our attrs . if not set set default
		extract(shortcode_atts(array(
 
			'email' => get_option('admin_email')
 
		), $atts));
 
		$output = '
		<form id="contactform" action="'.get_bloginfo('template_url').'/includes/mail/post.php" method="post" enctype="multipart/form-data">
			<fieldset>
				<div class="input-div">
					<label for="name">Nombre <span class="naranja_fuerte_negrita">*</span>
						<input type="text" id="name" name="name" maxlength="75" value="" tabindex="1" />
	     			</label>
	     			<label for="email">Email <span class="naranja_fuerte_negrita">*</span>
	       				<input type="text" id="email" name="email" maxlength="75" value="" tabindex="2" />
	     			</label>
					<label for="empresa">Empresa
						<input type="text" id="empresa" name="empresa" maxlength="75" value="" tabindex="3" />
	     			</label>
					<label for="telefono">Tel&eacute;fono
						<input type="text" id="telefono" name="telefono" maxlength="9" value="" tabindex="4" />
	     			</label>
				</div>
			  	<div class="message-div">
					<label for="message">Mensaje <span class="naranja_fuerte_negrita">*</span>
						<textarea id="message" name="message" cols="20" rows="5" tabindex="5"></textarea>
					</label>
					<input type="submit" class="submit" value="enviar" />
					<input type="hidden" name="c_email" id="c_email" value="'.$email.'" />
			  	</div>
			</fieldset>          
		</form>';
		return $output;
	}
 
	include('tinyMCE.php');
 
?>
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

Problema al añadir nuevos campos a formulario PHP

Publicado por Andres (149 intervenciones) el 23/06/2011 20:52:02
Q' curioso, revise el codigo y no encunetro donde puede estar cambiando el valor de las variables. Lo q' podemos hacer es saber si estan llegando los datos desde el formulario, para eso agreguemos un valor para las variables cuando no estan definidas, se lo agregamos asi:

1
2
$empresa = isset($_POST['empresa']) ? trim($_POST['empresa']) : 'Empresa no llega';
$telefono = isset($_POST['telefono']) ? trim($_POST['telefono']) : 'Telefono no llega';


Si sigue el valor vacio, se esta alterando el contenido de las variables en algun proceso.
Si se muestra el valor q' agregamos, es por q' se esta obviando en algun lado del proceso de submit del formualrio el agregar estas nuevas variables.
La verdad no se q' tanto influya las fucnionalidades del wordpress..
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