使用这个网站作为参考点,但真的很难用一些代码。
我正在构建一个回调表单,我最初构建了客户端验证(javascript),但很快意识到我需要服务器端php验证,所以试图将它添加到我的脚本中。它的功能是有效的,除了收到电子邮件时,没有显示任何信息。我真的不明白为什么$ name没有像我之前没有使用验证那样提取信息。代码如下:
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 = 'hello@microsoft.com';
/* 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 :(得分:0)
Form
将作为数组发送。所以你应该把它当成一个数组:
$name = $_POST['Form']['Name'];
$company = $_POST['Form']['Company'];
您的表单上缺少Email
,Message
..等等。
Languages
也是一个数组,你可以使用implode for list:
$Languages = implode(',', $_POST['Languages']);