2013-03-04 58 views
0

使用本网站很多作为参考点,但真的与一些代码挣扎。我建立了一个回调形式,我最初建立客户端验证(JavaScript),但很快意识到我需要服务器端PHP验证,所以试图将其添加到我的脚本。它在其功能上起作用,除了收到电子邮件时没有信息显示。我真的不明白为什么当我没有使用验证时,$ name不像以前那样拉动信息。代码如下:电子邮件到PHP服务器端验证在脚本

PHP:

<?php 

if (isset($_POST['Form'])) { 
    import_request_variables("p", "z"); 
    $missingfields = array(); 
    $required = array("Name"=>"Name", "Company"=>"Company"); 

    while (list($var, $val) = each($required)) { 
     if (isset($zForm[$var]) && $zForm[$var] != '') { 
      // check this value further here 
     } else { 
      $missingfields[$var] = $val; 
     } 
    } 

    if (count($missingfields)) { 
     print "You missed out one or more fields:<br />"; 

     while(list($var, $val) = each($missingfields)) { 
      print $val . "<br />"; 
     print "Please click back on your browser and enter the required fields.<br />"; 
     } 
    } else { 
     /* Subject and E-mail Variables */ 

$emailSubject = 'Call-back Request'; 
$webMaster = '[email protected]'; 

/* Gathering Data Variables */ 

$name = $_POST['Form[Name]']; 
$email = $_POST['email']; 
$telephone = $_POST['telephone']; 
$company = $_POST['company']; 
$message = $_POST['message']; 

$body = <<<EOD 
<br><hr><br> 
Name: $name <br> 
Email: $email <br> 
Telephone: $telephone <br> 
Company: $company <br> 
Message: $message <br> 
EOD; 

$headers = "From: $email\r\n"; 
$headers .= "Content-type: text/html\r\n"; 
$success = mail($webMaster, $emailSubject, $body, $headers); 

/* Results rendered as HTML */ 

$theResults = <<<EOD 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <title>Thankyou</title> 
    <link href="style.css" rel="stylesheet" type="text/css" media="screen" /> 
</head> 
<body> 
    <div id="content"> 
     <div id="contactthankyouheader"> 
      <h2>Thankyou for Contacting Us</h2></br> 
     </div> 
     <div id="contactthankyou"> 
      <p>Someone will be in contact with you shortly.</p> 
     </div> 
     <div id="contactthankyou2"> 
      <p>Please click the link below to return to the homepage.  
</p> 
     </div> 
     <div id="contactthankyoulink"> 
      <a href="index.htm"><h4>Homepage</h4></a> 
     </div> 
    </div> 
</body> 
</html> 
EOD; 
echo "$theResults"; 
    } 
} 

?> 

HTML: 

<html> 
<form method="post" action="callback-function.php"> 
Name: <input type="text" name="Form[Name]" /> (required)<br /> 
Company: <input type="text" name="Form[Company]" /> (required) <br /> 
Age: <input type="text" name="Form[Age]" /><br /><br /> 
Languages known:<br /> 
<input type="checkbox" name="Form[Languages][]" value="PHP" checked="checked">  
PHP</input> 
para><input type="checkbox" name="Form[Languages][]" value="CPP"> C++</input> 
<input type="checkbox" name="Form[Languages][]" value="Delphi"> Delphi</input> 
<input type="checkbox" name="Form[Languages][]" value="Java"> Java</input> 
<input type="submit" /> 
</form> 
</html> 

回答

0

Form从您的形式发送数组。所以,你应该把它当作一个数组:

$name = $_POST['Form']['Name']; 
$company = $_POST['Form']['Company']; 

,你缺乏EmailMessage ..等你的表格上。

Languages也是一个数组,你可以使用内爆的列表:

$Languages = implode(',', $_POST['Languages']); 
+0

辉煌,我觉得这是一件简单的这样。谢谢你的帮助 – user2132963 2013-03-04 19:12:55