字段空白的电子邮件与PHP表单交付



我提前道歉,如果这是一个容易的修复,因为我有点新学习PHP。我找到了相关的问题,并尝试了这些答案,但没有一个适用于我的问题。

我收到一封电子邮件从我的联系形式,其中一些字段显示,有些没有。在Address字段中,我只接收国家,而在Date Available字段中,我只接收年份。这些都是当前的问题。我想可能是输入id,但现在只有这两个给我一个问题。

我真诚地感谢你能提供的任何帮助。

PHP:

    <?php
$myemail  = "myemail@gmail.com";
$subject = "Employment Application Submission from Your Website";
/* Check all form inputs using check_input function */
$position   = check_input($_POST['position']);
$refer    = check_input($_POST['refer']);
$name = check_input($_POST['name'], "Enter your name");
$address    = check_input($_POST['address']);
$phone    = check_input($_POST['phone']);
$email    = check_input($_POST['email']);
$dateavail    = check_input($_POST['dateavail']);
$social    = check_input($_POST['social']);
$dob    = check_input($_POST['dob']);

/* If e-mail is not valid show error message */
if (!preg_match("/([w-]+@[w-]+.[w-]+)/", $email))
{
    show_error("E-mail address not valid");
}

/* Let's prepare the message for the e-mail */
$message = "Hello!
Your contact form has been submitted by:
Position Applied For: $position
Referred by: $refer
Name: $name
Address: $address 
Phone: $phone
E-mail: $email
Date available: $dateavail
SSN: $social
DOB: $dob
End of message
";
/* Send the message using mail() function */
mail($myemail, $subject, $message);
/* Redirect visitor to the thank you page */
header('Location: thanks.html');
exit();
/* Functions we used */
function check_input($data, $problem='')
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    if ($problem && strlen($data) == 0)
    {
        show_error($problem);
    }
    return $data;
}
function show_error($myError)
{
?>
   <html>
    <body>
    <b>Please correct the following error:</b><br />
    <?php echo $myError; ?>
    </body>
    </html>
<?php
exit();
}
?>
HTML:

<form id="form_884913" method="post" action="send_form_email1.php" class="appnitro">

            <ul >
                    <li id="li_1" >
        <label class="description" for="position">Position Applied For </label>
        <div>
            <input id="element_1" name="position" class="element text medium" type="text" maxlength="255" value=""/> 
        </div> 
        </li>       <li id="li_2" >
        <label class="description" for="refer">How were you referred to us? </label>
        <div>
            <input id="element_2" name="refer" class="element text medium" type="text" maxlength="255" value=""/> 
        </div> 
        </li>       <li id="li_3" >
        <label class="description" for="name">Full Name (first, middle, last) </label>
        <div>
            <input id="element_3" name="name" class="element text medium" type="text" maxlength="255" value=""/> 
        </div> 
        </li>       <li id="li_4" >
        <label class="description" for="address">Address </label>
        <div>
            <input id="element_4_1" name="address" class="element text large" value="" type="text">
            <label for="address" style="font-size: 12px;">Street Address</label>
        </div>
        <div>
            <input id="element_4_2" name="address" class="element text large" value="" type="text">
            <label for="address" style="font-size: 12px;">Address Line 2</label>
        </div>
        <div class="left">
            <input id="element_4_3" name="address" class="element text medium" value="" type="text">
            <label for="address" style="font-size: 12px;">City</label>
        </div>
        <div class="right">
            <input id="element_4_4" name="address" class="element text medium" value="" type="text">
            <label for="address" style="font-size: 12px;">State / Province / Region</label>
        </div>
        <div class="left">
            <input id="element_4_5" name="address" class="element text medium" maxlength="15" value="" type="text">
            <label for="address" style="font-size: 12px;">Postal / Zip Code</label>
        </div>
        <div class="right">
            <select class="element select medium" id="element_4_6" name="address"> 
            <option value="" selected="selected"></option>
<option value="Afghanistan" >Afghanistan</option>
            </select>
        <label for="address" style="font-size: 12px;">Country</label>
    </div> 
        </li>       <li id="li_5" >
        <label class="description" for="phone">Phone </label>
        <span>
            <input id="element_5_1" name="phone" class="element text" size="3" maxlength="3" value="" type="text"> -
            <label for="element_5_1">(###)</label>
        </span>
        <span>
            <input id="element_5_2" name="phone" class="element text" size="3" maxlength="3" value="" type="text"> -
            <label for="element_5_2">###</label>
        </span>
        <span>
            <input id="element_5_3" name="phone" class="element text" size="4" maxlength="4" value="" type="text">
            <label for="element_5_3">####</label>
        </span>
        </li>       <li id="li_6" >
        <label class="description" for="email">E-Mail Address </label>
        <div>
            <input id="element_6" name="email" class="element text medium" type="text" maxlength="255" value=""/> 
        </div> 
        </li>       <li id="li_7" >
        <label class="description" for="dateavail">Date Available to Start </label>
        <span>
            <input id="element_7_1" name="dateavail" class="element text" size="2" maxlength="2" value="" type="text"> /
            <label for="dateavail">MM</label>
        </span>
        <span>
            <input id="element_7_2" name="dateavail" class="element text" size="2" maxlength="2" value="" type="text"> /
            <label for="dateavail">DD</label>
        </span>
        <span>
            <input id="element_7_3" name="dateavail" class="element text" size="4" maxlength="4" value="" type="text">
            <label for="dateavail">YYYY</label>
        </span>
        <span id="calendar_7">
            <img id="cal_img_7" class="datepicker" src="calendar.gif" alt="Pick a date.">   
        </span>
        <script type="text/javascript">
            Calendar.setup({
            inputField   : "element_7_3",
            baseField    : "element_7",
            displayArea  : "calendar_7",
            button       : "cal_img_7",
            ifFormat     : "%B %e, %Y",
            onSelect     : selectDate
            });
        </script>
        </li>       <li id="li_8" >
        <label class="description" for="social">Social Security Number </label>
        <div>
            <input id="element_8" name="social" class="element text small" type="text" maxlength="255" value=""/> 
        </div> 

(出于长度考虑,我没有显示整个表单)

您有多个具有相同name的输入。您需要为每个输入元素指定一个惟一的名称。如果您有多个具有相同名称的元素,只有最后一个元素将被发送到服务器。

一个简单的解决方案:

修改你的PHP:

$address = check_input($_POST['address']." ".$_POST['address2']." ".$_POST['address3']." ".$_POST['address4']." ".$_POST['address5']);

修改HTML:

<div>
    <input id="element_4_1" name="address" class="element text large" value="" type="text">
    <label for="address" style="font-size: 12px;">Street Address</label>
</div>
<div>
    <input id="element_4_2" name="address2" class="element text large" value="" type="text">
    <label for="address2" style="font-size: 12px;">Address Line 2</label>
</div>
<div class="left">
    <input id="element_4_3" name="address3" class="element text medium" value="" type="text">
    <label for="address3" style="font-size: 12px;">City</label>
</div>
<div class="right">
    <input id="element_4_4" name="address4" class="element text medium" value="" type="text">
    <label for="address4" style="font-size: 12px;">State / Province / Region</label>
</div>
<div class="left">
    <input id="element_4_5" name="address5" class="element text medium" maxlength="15" value="" type="text">
    <label for="address5" style="font-size: 12px;">Postal / Zip Code</label>
</div>

您有多个具有相同名称的<input>:

<input id="element_4_1" name="address" class="element text large" value="" type="text">
<input id="element_4_2" name="address" class="element text large" value="" type="text">

由于name$_POST中出现的键,因此您实际上是用最后出现在表单中的name="address"覆盖所有输入。

每个输入必须有一个唯一的名称。你已经在你的$foo = $_POST[...]中有了,所以为什么你的表单中没有匹配的名字是一个谜。

您使用相同的名称输入字段。为输入字段中的名称属性指定不同的名称。

 <input id="element_4_1" name="streetaddress" class="element text medium" value="" type="text">
  <input id="element_4_2" name="addressline2" class="element text medium" value="" type="text">

在php中接收。一个接一个。示例

$doorNo = $_POST['streetaddress'];
$streetName= $_POST['addressline2'];

同样适用于所有字段..

最新更新