php / javascript邮件表单的未定义索引错误

时间:2011-12-06 22:09:47

标签: php javascript html

不确定我做错了什么。我使用javascript验证设置了一个简单的php邮件表单。没有这么做太久,会感激一些帮助。我收到这样的错误“通知:未定义的索引:cr / first / content / 17/8543117 /”

This is the form processing script: 
$to = "alexmoverguz@gmail.com";
$subject = "You have a new lead!";
$first_name = $_POST['cr[first_name]'];
$last_name = $_POST['cr[last_name]'];
$phone = $_POST['cr[phonecr]'];
$phoneprefix = $_POST['cr[phonecr2]'];
$phonesuffix = $_POST['cr[phonecr3]'];
$email = $_POST['cr[email]'];
$zip = $_POST['cr[zip]'];
$message = '';
$headers = "From: $first_name \n\n $last_name \n\n $phone \n\n $phoneprefix \n\n      
$phonesuffix \n\n $email \n\n $zip";
$sent = mail($to,$subject,$headers);
if($sent)
{
$_SESSION['success'] = '<p class="error">Your inquiry has been sent!</p>';
header('Location: index.php?e=inquiry_sent'); 
exit();
}
?>

这是表格:

<?php
if (isset($_REQUEST['e']))
if ( $_REQUEST['e']=="inquiry_sent"){
echo "<p class=\"error\">Thanks! We will contact you shortly!</p>";
}else{

echo "<p class=\"error2\">Your inquiry failed, please try again</p>";
}
?>
<form name="cr" action="thankyou.php" method="post" onSubmit="return form_check();">
    <input type="hidden" name="creditoptin" value="yes" />
    <div id="cform">
        <div class="crp">
            <label for="first_name">First Name</label>
            <input id="first_name" type="text" name="cr[first_name]" 
value="" style="width:160px;" />   
        </div>
        <div class="crp">
            <label for="last_name">Last Name</label>
            <input id="last_name" type="text" name="cr[last_name]"   
value="" style="width:160px;" />
        </div>
        <div class="crp">
            <label for="phonecr">Phone</label>
            <input name="cr[phonecr]" style="width:34px;" id="phonecr"       
  maxlength="3" onkeyup="force_numeric(this);autotab(this,'phonecr2');" value="" /> -
            <input name="cr[phonecr2]" style="width:34px;"  
id="phonecr2" maxlength="3" onkeyup="force_numeric(this);autotab(this,'phonecr3');"   
value="" /> -
            <input name="cr[phonecr3]" style="width:44px;"   
id="phonecr3" maxlength="4" onkeyup="force_numeric(this);" value="" />
        </div>
        <div class="crp">
            <label for="email">Email Address</label>
            <input id="email" type="text" name="cr[email]" maxlength="60" value="" style="width:160px;" />
        </div>
        <div class="crp">
            <label for="zip">Zip Code</label>
            <input id="zip" name="cr[zip]" maxlength="5"  
onkeyup="force_numeric(this)" value="" />
        </div>
        <div id="submt">
            <input type="image" src="images/submit.png" value="Submit"  
onclick="if(typeof sub_pop == 'function')sub_pop();" />
</form>

谢谢你们!

2 个答案:

答案 0 :(得分:1)

我不明白,错误告诉你到底出了什么问题。将您的输入名称更改为first_name,并检索显然不喜欢的POST cr[first_name]

答案 1 :(得分:1)

而不是$first_name = $_POST['cr[first_name]'];,您应该使用$first_name = $_POST['first_name'];。只有输入元素的名称被转换为$_POST变量,而没有表单的名称。

此外,您没有在代码中进行任何输入清理,而只是邮寄用户在表单中输入的内容;这可能是一种安全风险。您应该查看有关XSS和SQL注入等主题的Web,并在进一步处理之前清理用户输入。