PHP 发送脚本 -- 复选框验证


PHP Send Script -- Checkbox verify

网址: http://medtransportcenter.com/medical-transportation/los-altos/我最近刚刚更新了我的表单,现在包含一个复选框。我正在尝试获取发送表单.php脚本,以识别在发送确认电子邮件时是否选中了复选框。我做了一些研究,发现以下代码可以检查它是否被选中。但是,我插入了它,并在测试表单时不断给我语法错误。我在下面包含了我为 php 脚本和复选框字段准备的附加代码。请帮忙。

我的整个表单 HTML:

<div class="form-box">
<!-- Form -->
<form id="proForm" action="send-form.php" method="post" >
<h2 style="text-align:center;">REQUEST INFO</h2>
        <h3 style="text-align:center;">FREE EXPERT ADVICE</h3>
<div class="form-content">
<!-- Form -->
<table cellpadding="0" cellspacing="0" border="0">
<!--tr>
<td class="field-full" colspan="2">
    <div class="label"><label for="www"><b>Your website URL</b></label></div>
    <input id="www" class="required defaultInvalidUrl url" maxlength="40" name="www" type="text" tabindex="2" value="http://" />
</td>
</tr-->
<tr>
<th class="label" align="right"><label for="nameis">Your name</label></td>:<td class="field">
  <input id="nameis" class="required defaultInvalidEmail nameis" maxlength="40" name="nameis" type="text" tabindex="2" value="Required" 
        onfocus="if (this.value == 'Required') {this.value = '';}"
        onblur="if (this.value == '') {this.value = 'Required';}" size="40" />
</td>
</tr>                                   
<tr>
<th class="label" align="right"><label for="email">E-mail</label></td>:<td class="field">
  <input id="email" class="required defaultInvalidEmail email" maxlength="40" name="email" type="text" tabindex="3" value="Required" 
        onfocus="if (this.value == 'Required') {this.value = '';}"
        onblur="if (this.value == '') {this.value = 'Required';}" size="40" />
</td>
</tr>   
<tr>
<th class="label" align="right"><label for="phone">Best Phone:</label></td>
<td class="field">
  <input id="phone" class="required defaultInvalidEmail phone" maxlength="40" name="phone" type="text" tabindex="4" value="Required" size="30" 
        onfocus="if (this.value == 'Required') {this.value = '';}"
        onblur="if (this.value == '') {this.value = 'Required';}" size="40" />
</td>
</tr>   
<tr>
<th class="label" align="right"><label for="bestime">
Best time to reach you:</label></td>
<td class="field">
  <input maxlength="40" size="30" name="bestime" type="text" tabindex="5" value="" />
</td>
</tr>
<tr>
<th class="label" align="right"><label for="phone">
Origin:</label></td>
<td class="field">
  <input maxlength="40" size="30" name="origin" type="text" tabindex="5" value="" />
</td>
</tr>
<tr>
<th class="label" align="right"><label for="phone">
Destination:</label></td>
<td class="field">
  <input maxlength="40" size="30" name="destination" type="text" tabindex="5" value="" />
</td>
</tr>

<tr>
<th class="label" align="right"><label for="msg">
Message:</label></td>
<td class="field">
  <textarea rows="3" cols="31" name="msg" tabindex="6"></textarea>
</td>
</tr>
<tr>
<th class="label"><label for="brochure">Request Brochures</label></td>
<td class="field">
  <input type="checkbox" name="brochure[]" value="Yes" />
</td>
</tr>       
<!--tr>
<td class="field-full" colspan="2">
    <div class="label"><label for="msg"><b>Other</b></label></div>
  <textarea rows="3" cols="30" name="msg" tabindex="9"></textarea>
</td>
</tr-->
</table>
<div class="terms">By clicking 'Send',<br/> you accept our <a onclick="showTerms()">Privacy Policy</a>. <br /><span style="font-size:14px;">Phone: 800-282-6878.</span></div>
<div class="btn-box"><input class="button1" type="submit" value="Send" tabindex="10" /></div>

<!-- END Form -->
</form> 
</div>

我的 PHP 脚本

<?php
//$www = '';    
$email = '';
$nameis = '';
$phone = '';
$bestime = '';
//$address = '';
$origin = '';
$destination = '';
$msg = '';
$brochure = '';
function getIp()
{if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
    $ip_address=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
if (!isset($ip_address)){
        if (isset($_SERVER['REMOTE_ADDR'])) 
        $ip_address=$_SERVER['REMOTE_ADDR'];
}
return $ip_address;
}
if(isset($_POST['brochure'])){
$brochure_checked = $_POST['brochure'];} 
else {
$brochure_not_checked = $_POST['brochure'];
}

//taking info about date, IP and user agent
$timestamp = date("Y-m-d H:i:s");
$ip   = getIp();
$host = gethostbyaddr($ip); 
$user_agent = $_SERVER["HTTP_USER_AGENT"];

//taking the data from form 
//$www = addslashes(trim($_POST['www']));   
$email = addslashes(trim($_POST['email']));
$nameis = addslashes(trim($_POST['nameis']));
$phone = addslashes(trim($_POST['phone']));
$bestime = addslashes(trim($_POST['bestime']));
//$address = addslashes(trim($_POST['address']));
$origin = addslashes(trim($_POST['origin']));
$destination = addslashes(trim($_POST['destination']));
$msg = addslashes(trim($_POST['msg']));
$brochure = addslashes(trim($_POST['brochure']));


//preparing mail
$headers = "MIME-Version: 1.0'n";
$headers .= "Content-type: text/html; charset=utf-8'n";
$headers .= "Content-Transfer-Encoding: quoted-printable'n";
$headers .= "From: $email'n";
$content = 'Name: '.$nameis.'<br>'.
'E-mail: '.$email.'<br>'.
'Phone: '.$phone.'<br>'.
'Message: '.$msg.'<br>'.
'Best Time to Call: '.$bestime.'<br>'.
'Origin: '.$origin.'<br>'.
'Destination: '.$destination.'<br>'.
'Requested Brochure: '.$brochure.'<br>'.
'Time: '.$timestamp.'<br>'.
'IP: '.$host.'<br>'.
'User agent: '.$user_agent;

//sending mail
mail("service@medtransportcenter.com","Los Altos, CA Landing Page Contact", $content, $headers);

?>

好吧,这是我的朋友,最终和工作版本。

经过测试并正常工作,完成:

索取手册:

索取手册:您的电子邮件中没有消息,
另外,我还在最后添加了回声"谢谢,您的信息已发送..."选项。

要使用的表单:

<div class="form-box">
<!-- Form -->
<form id="proForm" action="send-form.php" method="post" >
<h2 style="text-align:center;">REQUEST INFO</h2>
        <h3 style="text-align:center;">FREE EXPERT ADVICE</h3>
<div class="form-content">
<!-- Form -->
<table cellpadding="0" cellspacing="0" border="0">
<!--tr>
<td class="field-full" colspan="2">
    <div class="label"><label for="www"><b>Your website URL</b></label></div>
    <input id="www" class="required defaultInvalidUrl url" maxlength="40" name="www" type="text" tabindex="2" value="http://" />
</td>
</tr-->
<tr>
<th class="label" align="right"><label for="nameis">Your name</label></td>:<td class="field">
  <input id="nameis" class="required defaultInvalidEmail nameis" maxlength="40" name="nameis" type="text" tabindex="2" value="Required" 
        onfocus="if (this.value == 'Required') {this.value = '';}"
        onblur="if (this.value == '') {this.value = 'Required';}" size="40" />
</td>
</tr>                                   
<tr>
<th class="label" align="right"><label for="email">E-mail</label></td>:<td class="field">
  <input id="email" class="required defaultInvalidEmail email" maxlength="40" name="email" type="text" tabindex="3" value="Required" 
        onfocus="if (this.value == 'Required') {this.value = '';}"
        onblur="if (this.value == '') {this.value = 'Required';}" size="40" />
</td>
</tr>   
<tr>
<th class="label" align="right"><label for="phone">Best Phone:</label></td>
<td class="field">
  <input id="phone" class="required defaultInvalidEmail phone" maxlength="40" name="phone" type="text" tabindex="4" value="Required" size="30" 
        onfocus="if (this.value == 'Required') {this.value = '';}"
        onblur="if (this.value == '') {this.value = 'Required';}" size="40" />
</td>
</tr>   
<tr>
<th class="label" align="right"><label for="bestime">
Best time to reach you:</label></td>
<td class="field">
  <input maxlength="40" size="30" name="bestime" type="text" tabindex="5" value="" />
</td>
</tr>
<tr>
<th class="label" align="right"><label for="phone">
Origin:</label></td>
<td class="field">
  <input maxlength="40" size="30" name="origin" type="text" tabindex="5" value="" />
</td>
</tr>
<tr>
<th class="label" align="right"><label for="phone">
Destination:</label></td>
<td class="field">
  <input maxlength="40" size="30" name="destination" type="text" tabindex="5" value="" />
</td>
</tr>

<tr>
<th class="label" align="right"><label for="msg">
Message:</label></td>
<td class="field">
  <textarea rows="3" cols="31" name="msg" tabindex="6"></textarea>
</td>
</tr>
<tr>
<th class="label"><label for="brochure">Request Brochures</label></td>
<td class="field">
  <input type="checkbox" name="brochure"/>
</td>
</tr>       
<!--tr>
<td class="field-full" colspan="2">
    <div class="label"><label for="msg"><b>Other</b></label></div>
  <textarea rows="3" cols="30" name="msg" tabindex="9"></textarea>
</td>
</tr-->
</table>
<div class="terms">By clicking 'Send',<br/> you accept our <a onclick="showTerms()">Privacy Policy</a>. <br /><span style="font-size:14px;">Phone: 800-282-6878.</span></div>
<div class="btn-box"><input class="button1" type="submit" value="Send" tabindex="10" /></div>

<!-- END Form -->
</form> 
</div>

要使用的 PHP:

<?php
//$www = '';    
$email = '';
$nameis = '';
$phone = '';
$bestime = '';
//$address = '';
$origin = '';
$destination = '';
$msg = '';
$brochure = '';
function getIp()
{
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
    $ip_address=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
if (!isset($ip_address)){
        if (isset($_SERVER['REMOTE_ADDR'])) 
        $ip_address=$_SERVER['REMOTE_ADDR'];
}
return $ip_address;
}
if(isset($_POST['brochure'])){
$brochure = "YES";
} 
else {
$brochure = "NO";
}

//taking info about date, IP and user agent
$timestamp = date("Y-m-d H:i:s");
$ip   = getIp();
$host = gethostbyaddr($ip); 
$user_agent = $_SERVER["HTTP_USER_AGENT"];

//taking the data from form 
//$www = addslashes(trim($_POST['www']));   
$email = addslashes(trim($_POST['email']));
$nameis = addslashes(trim($_POST['nameis']));
$phone = addslashes(trim($_POST['phone']));
$bestime = addslashes(trim($_POST['bestime']));
//$address = addslashes(trim($_POST['address']));
$origin = addslashes(trim($_POST['origin']));
$destination = addslashes(trim($_POST['destination']));
$msg = addslashes(trim($_POST['msg']));

//preparing mail
$headers = "MIME-Version: 1.0'n";
$headers .= "Content-type: text/html; charset=utf-8'n";
$headers .= "Content-Transfer-Encoding: quoted-printable'n";
$headers .= "From: $email'n";
$content = 'Name: '.$nameis.'<br>'.
'E-mail: '.$email.'<br>'.
'Phone: '.$phone.'<br>'.
'Message: '.$msg.'<br>'.
'Best Time to Call: '.$bestime.'<br>'.
'Origin: '.$origin.'<br>'.
'Destination: '.$destination.'<br>'.
'Requested Brochure: '.$brochure.'<br>'.
'Time: '.$timestamp.'<br>'.
'IP: '.$host.'<br>'.
'User agent: '.$user_agent;

//sending mail
mail("your_email@example.com","Los Altos, CA Landing Page Contact", $content, $headers);
echo "Thank you, your message has been sent. We will contact you as soon as possible.";
?>

我设置它的方式是我使用POSTed值中的isset$brochure赋值为变量,如果设置,则变量等于"YES",如果未设置,则同一变量等于"NO"。

(下面的代码被添加到PHP中,而其他一些代码被删除(

if(isset($_POST['brochure'])){
$brochure = "YES";
} 
else {
$brochure = "NO";
}

之前发生的语法错误是,您对复选框值使用了addslashestrim,这造成了严重破坏

脚本存在多个问题:

  • 表单没有提交按钮。需要将表单输入发送到服务器。
  • 您不会在脚本中的任何位置验证表单。这就是它产生不必要的错误的原因。
  • 在你的代码中,你有很多这样的 - $email = addslashes(trim($_POST['email']));但你不接受任何地方的输入。由于输入字段不存在,如果您尝试回显它们,PHP 将抛出Undefined index错误。

.HTML:

<form id="proForm" action="send-form.php" method="post" >
<tr>
<th class="label"><label for="brochure">Request Brochures</label></td>
<td class="field">
Email: <input type="text" name="email">
Phone: <input type="text" name="phone">
Bestime: <input type="text" name="bestime">
Origin: <input type="text" name="origin">
Destination: <input type="text" name="destination">
Message: <textarea name="msg">Input message</textarea>
<input type="checkbox" name="brochure" value="Yes" />
<input type="submit" name="submitButton"/>
</form>

.PHP:

if(isset($_POST['submitButton'])){
//the form was submited, process the inputs below!
}

希望这有帮助!

代码的第一行缺少右括号:

您的代码:

if(isset($_POST['brochure']){
// Requested Brochures
}

应该是:

if(isset($_POST['brochure'])){ //Closing bracket for if added
// Requested Brochures
}

干杯!

[编辑]您的表格

<div class="form-box">
    <!-- Form -->
    <form id="proForm" action="send-form.php" method="post" >
        <h2 style="text-align:center;">REQUEST INFO</h2>
        <h3 style="text-align:center;">FREE EXPERT ADVICE</h3>
        <div class="form-content">
            <!-- Form -->
            <table cellpadding="0" cellspacing="0" border="0">
                <!--tr>
                <td class="field-full" colspan="2">
                <div class="label"><label for="www"><b>Your website URL</b></label></div>
                <input id="www" class="required defaultInvalidUrl url" maxlength="40" name="www" type="text" tabindex="2" value="http://" />
                </td>
                </tr-->
                <tr>
                    <th class="label" align="right"><label for="nameis">Your name</label></td>:<td class="field">
                    <input id="nameis" class="required defaultInvalidEmail nameis" maxlength="40" name="nameis" type="text" tabindex="2" value="Required"
                    onfocus="if (this.value == 'Required') {this.value = '';}"
                    onblur="if (this.value == '') {this.value = 'Required';}" size="40" />
                    </td>
                </tr>
                <tr>
                    <th class="label" align="right"><label for="email">E-mail</label></td>:<td class="field">
                    <input id="email" class="required defaultInvalidEmail email" maxlength="40" name="email" type="text" tabindex="3" value="Required"
                    onfocus="if (this.value == 'Required') {this.value = '';}"
                    onblur="if (this.value == '') {this.value = 'Required';}" size="40" />
                    </td>
                </tr>
                <tr>
                    <th class="label" align="right"><label for="phone">Best Phone:</label></td><td class="field">
                    <input id="phone" class="required defaultInvalidEmail phone" maxlength="40" name="phone" type="text" tabindex="4" value="Required" size="30"
                    onfocus="if (this.value == 'Required') {this.value = '';}"
                    onblur="if (this.value == '') {this.value = 'Required';}" size="40" />
                    </td>
                </tr>
                <tr>
                    <th class="label" align="right"><label for="bestime"> Best time to reach you:</label></td><td class="field">
                    <input maxlength="40" size="30" name="bestime" type="text" tabindex="5" value="" />
                    </td>
                </tr>
                <tr>
                    <th class="label" align="right"><label for="phone"> Origin:</label></td><td class="field">
                    <input maxlength="40" size="30" name="origin" type="text" tabindex="5" value="" />
                    </td>
                </tr>
                <tr>
                    <th class="label" align="right"><label for="phone"> Destination:</label></td><td class="field">
                    <input maxlength="40" size="30" name="destination" type="text" tabindex="5" value="" />
                    </td>
                </tr>
                <tr>
                    <th class="label" align="right"><label for="msg"> Message:</label></td><td class="field">                   <textarea rows="3" cols="31" name="msg" tabindex="6"></textarea></td>
                </tr>
                <tr>
                    <th class="label"><label for="brochure">Request Brochures</label></td><td class="field">
                    <input type="checkbox" name="brochure[]" value="Yes" />
                    </td>
                </tr>
                <!--tr>
                <td class="field-full" colspan="2">
                <div class="label"><label for="msg"><b>Other</b></label></div>
                <textarea rows="3" cols="30" name="msg" tabindex="9"></textarea>
                </td>
                </tr-->
            </table>
            <div class="terms">
                By clicking 'Send',
                <br/>
                you accept our <a onclick="showTerms()">Privacy Policy</a>.
                <br />
                <span style="font-size:14px;">Phone: 800-282-6878.</span>
            </div>
            <div class="btn-box">
                <input class="button1" type="submit" value="Send" tabindex="10" />
            </div>
            <!-- END Form -->
    </form>
</div>

发送表单.php

<?php
//$www = '';
$email = '';
$nameis = '';
$phone = '';
$bestime = '';
//$address = '';
$origin = '';
$destination = '';
$msg = '';
$brochure = '';
echo "<pre>";
print_r($_POST);
echo "</pre>";
function getIp() {
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    if (!isset($ip_address)) {
        if (isset($_SERVER['REMOTE_ADDR']))
            $ip_address = $_SERVER['REMOTE_ADDR'];
    }
    return $ip_address;
}
if (isset($_POST['brochure'])) {
    $brochure_checked = $_POST['brochure'];
} else {
    //$brochure_checked = "no"; //no could be any value you want because the check box is not checked
    // or 
    //if you want to use it in post super global you can set it as  
    $_POST['brochure'] = array('no'); // the value is returned in array if the brochure is set so i am using array here
}
//taking info about date, IP and user agent
$timestamp = date("Y-m-d H:i:s");
$ip = getIp();
$host = gethostbyaddr($ip);
$user_agent = $_SERVER["HTTP_USER_AGENT"];
//taking the data from form
//$www = addslashes(trim($_POST['www']));
$email = addslashes(trim($_POST['email']));
$nameis = addslashes(trim($_POST['nameis']));
$phone = addslashes(trim($_POST['phone']));
$bestime = addslashes(trim($_POST['bestime']));
//$address = addslashes(trim($_POST['address']));
$origin = addslashes(trim($_POST['origin']));
$destination = addslashes(trim($_POST['destination']));
$msg = addslashes(trim($_POST['msg']));
$brochure = addslashes(trim($_POST['brochure'][0])); //now you can use this value here
var_dump($brochure);
//preparing mail
$headers = "MIME-Version: 1.0'n";
$headers .= "Content-type: text/html; charset=utf-8'n";
$headers .= "Content-Transfer-Encoding: quoted-printable'n";
$headers .= "From: $email'n";
$content = 'Name: ' . $nameis . '<br>' . 'E-mail: ' . $email . '<br>' . 'Phone: ' . $phone . '<br>' . 'Message: ' . $msg . '<br>' . 'Best Time to Call: ' . $bestime . '<br>' . 'Origin: ' . $origin . '<br>' . 'Destination: ' . $destination . '<br>' . 'Requested Brochure: ' . $brochure . '<br>' . 'Time: ' . $timestamp . '<br>' . 'IP: ' . $host . '<br>' . 'User agent: ' . $user_agent;
//sending mail
mail("abc@medtransportcenter.com", "Los Altos, CA Landing Page Contact", $content, $headers);
?>

解释:

发生的情况是,仅当选中该复选框时,才会设置$_POST['brochure']。在您的代码中,您将其用作:

if(isset($_POST['brochure'])){
 $brochure_checked = $_POST['brochure'];} 
else {
 $brochure_not_checked = $_POST['brochure'];
}

如果设置了小册子字段,您将获得该值。但是看看你的 else 条件,你正在分配不存在的值。这个语句$brochure = addslashes(trim($_POST['brochure']));现在正在尝试修剪不存在的值。检查编辑的代码。希望它有效!我在编辑部分使用了注释。