带有php脚本的Jquery移动电子邮件表单

时间:2012-07-04 16:07:44

标签: php jquery forms email

我在移动网站上工作,我的电子邮件表单出现问题 问题是,当我收到通过表单发送的邮件时,它不包含任何数据。 用户输入的所有数据都缺失。

这是表单代码

<form action="correo.php" method="post" data-ajax="false">
<div>
<p><strong>You can contact us by filling the following form</strong></p>
</div>
<div data-role="fieldcontain">
<fieldset data-role="controlgroup" data-mini="true">
<label for="first_name">First Name</label>
<input id="first_name" placeholder="" type="text" />
</fieldset>
</div>
<div data-role="fieldcontain">
<fieldset data-role="controlgroup" data-mini="true">
<label for="last_name">Last name</label>
<input id="last_name" placeholder="" type="text" />
</fieldset>
</div>
<div data-role="fieldcontain">
<fieldset data-role="controlgroup" data-mini="true">
<label for="email">Email</label>
<input id="email" placeholder="" type="email" />
</fieldset>
</div>
<div data-role="fieldcontain">
<fieldset data-role="controlgroup" data-mini="true">
<label for="telephone">Phone</label>
<input id="telephone" placeholder="" type="tel" />
</fieldset>
</div>
<div data-role="fieldcontain">
<fieldset data-role="controlgroup" data-mini="true">
<label for="age">Age</label>
<input id="age" placeholder="" type="number" />
</fieldset>
</div>
<div data-role="fieldcontain">
<fieldset data-role="controlgroup" data-mini="true">
<label for="country">Country</label>
<input id="country" placeholder="" type="text" />
</fieldset>
</div>
<div data-role="fieldcontain">
<fieldset data-role="controlgroup">
<label for="message">Your message</label>
<textarea id="message" placeholder="" data-mini="true"></textarea>
</fieldset>
</div>
<input data-inline="true" data-theme="e" value="Submit" data-mini="true" type="submit" />
</form>

这是PHP代码

<?
/* aqui se incializan variables de PHP */
if (phpversion() >= "4.2.0") {
        if ( ini_get('register_globals') != 1 ) {
                $supers = array('_REQUEST',
                                '_ENV',
                                '_SERVER',
                                '_POST',
                                '_GET',
                                '_COOKIE',
                                '_SESSION',
                                '_FILES',
                                '_GLOBALS' );

                foreach( $supers as $__s) {
                        if ( (isset($$__s) == true) && (is_array( $$__s
) == true) ) extract( $$__s, EXTR_OVERWRITE );
                }
                unset($supers);
        }
} else {
        if ( ini_get('register_globals') != 1 ) {

                $supers = array('HTTP_POST_VARS',
                                'HTTP_GET_VARS',
                                'HTTP_COOKIE_VARS',
                                'GLOBALS',
                                'HTTP_SESSION_VARS',
                                'HTTP_SERVER_VARS',
                                'HTTP_ENV_VARS'
                                 );

                foreach( $supers as $__s) {
                        if ( (isset($$__s) == true) && (is_array( $$__s
) == true) ) extract( $$__s, EXTR_OVERWRITE );
                }
                unset($supers);
        }
}

/*  DE AQUI EN ADELANTE PUEDES EDITAR EL ARCHIVO */
    /* reclama si no se ha rellenado el campo email en el formulario */

/* aquí se especifica la pagina de respuesta en caso de envío exitoso */
$respuesta="index.html#respuesta";
// la respuesta puede ser otro archivo, en incluso estar en otro servidor

/* AQUÍ ESPECIFICAS EL CORREO AL CUAL QUEIRES QUE SE ENVÍEN LOS DATOS
DEL FORMULARIO, SI QUIERES ENVIAR LOS DATOS A MÁS DE UN CORREO,
LOS PUEDES SEPARAR POR COMAS */
$para ="some@mail.com;" /* this is not my real email, of course */

/* AQUI ESPECIFICAS EL SUJETO (Asunto) DEL EMAIL */
$sujeto = "Mail de la página - Movil";

/* aquí se construye el encabezado del correo, en futuras
versiones del script explicaré mejor esta parte */ 
$encabezado = "From: $first_name $last_name <$email>";
$encabezado .= "\nReply-To: $email";
$encabezado .= "\nX-Mailer: PHP/" . phpversion();

/* con esto se captura la IP del que envío el mensaje */
$ip=$REMOTE_ADDR;

/* las siguientes líneas arman el mensaje */
$mensaje .= "NOMBRE: $first_name\n";
$mensaje .= "APELLIDO: $last_name\n";
$mensaje .= "EMAIL: $email\n";
$mensaje .= "TELEFONO: $telephone\n";
$mensaje .= "EDAD: $age\n";
$mensaje .= "PAIS: $country\n";
$mensaje .= "MENSAJE: $message\n";

/* aqui se intenta enviar el correo, si no se
tiene éxito se da un mensaje de error */
if(!mail($para, $sujeto, $mensaje, $encabezado))
{
    echo "<h1>No se pudo enviar el Mensaje</h1>";
    exit();
}
else
{
    /* aqui redireccionamos a la pagina de respuesta */
    echo "<meta HTTP-EQUIV='refresh' content='1;url=$respuesta'>";
}

?>

请帮忙吗? 提前致谢 巴勃罗

1 个答案:

答案 0 :(得分:1)

您的input元素没有name个属性。 name属性应与您稍后在PHP代码中使用的变量匹配。

编辑:您的PHP代码实际上并未尝试直接访问$_POST,而是强制注册register_globals,除非它已经开启。这是非常严重糟糕的做法我会说。我会删除顶部的所有register_globals-stuff,然后执行:

$mensaje .= "NOMBRE: {$_POST['first_name']}\n";
$mensaje .= "APELLIDO: {$_POST['last_name']}\n";
$mensaje .= "EMAIL: {$_POST['email']}\n";

依此类推。