Problema al añadir nuevos campos a formulario PHP
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:
<?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
Osefooo
Hola Marcos,
me parece que una solución puede ser añadir en la variable $message los campos "empresa" y "teléfono".
Prueba a hacer lo siguiente. Añade la siguiente linea de código:
$message = $message." ".$empresa." ".$telefono;
delante de la línea en la que es script manda el mail, de tal forma que quede así
$message = $message." ".$empresa." ".$telefono;
// Send the mail
if ( ! mail($config['recipient'], $subject, $message, $headers))
{
...
Ya me contarás.
Un saludo.
Joseba.