我创建了Err代码,因此必须检查名称和广播,否则它无法转到确认页面并在字段旁边发送错误消息。如果我遗漏任何代码,请提供帮助!
<?php
$nameErr = $charityErr = "";
$name = $charity = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is missing";
}
else {
$name = $_POST["name"];
}
if (!isset($_POST["charity"])) {
$charityErr = "You must select 1 option";
}
else {
$charity = $_POST["charity"];
}
}
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link type="text/css" href="testStyle.css" rel="stylesheet"/>
<title>Survey</title>
</head>
<body>
<div><!--start form-->
<form method="post" action="submit.php">
<input type="radio" name="charity" <?php if (isset($charity) && $charity == "1") echo "checked"; ?> value="1">1
<input type="radio" name="charity" <?php if (isset($charity) && $charity == "2") echo "checked"; ?> value="2">2
<input type="radio" name="charity" <?php if (isset($charity) && $charity == "3") echo "checked"; ?> value="3">3
<span class="error"><?php echo $charityErr;?></span>
<input type="text" name="name" placeholder="ENTER YOUR COMPANY NAME">
<span class="error"><?php echo $nameErr;?></span>
<input type="submit" name="submit" value="Submit"/>
</form>
</div><!--end form-->
</body>
</html>
我的submit.php说:
/* Subject and Email Variables */
$emailSubject = 'Survey!';
$webMaster = 'myname@email.com';
/* Gathering Data Variables */
$name = $_POST ['name'];
$charity = $_POST ['charity'];
//create a new variable called $body line break, say email and variable, don't leave any space next to EOD - new variable $body 3 arrows less than greater than, beyond EOD no spaces
$body = <<<EOD
<br><hr><br>
Company Name: $name <br>
Charity: $charity <br>
EOD;
//be able to tell who it's from
$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>
blah blah
</html>
这会重定向到submit.php页面,但我的验证不起作用并发送空白数据。
表单代码如上:
<form method="post" action="submit.php">
<input type="radio" name="charity"
<?php if (isset($charity) && $charity == "1") echo "checked"; ?>
value="1">1
<input type="radio" name="charity"
<?php if (isset($charity) && $charity == "2") echo "checked"; ?>
value="2">2
<input type="radio" name="charity"
<?php if (isset($charity) && $charity == "3") echo "checked"; ?>
value="3">3
<span class="error"><?php echo $charityErr;?></span>
<input type="text" name="name" placeholder="ENTER YOUR COMPANY NAME">
<span class="error"><?php echo $nameErr;?></span>
<input type="submit" name="submit" value="Submit"/>
</form>
答案 0 :(得分:1)
这里有语法错误:
<?php if (isset($charity) && charity == "3") echo "checked"; ?>
你错过了慈善机构中的$:
<?php if (isset($charity) && $charity == "3") echo "checked"; ?>
关于你的第二个问题,我认为你的表格有点乱。 您可以使用相同的页面进行表单,验证,错误管理和proccesing,使用此结构:
捕获变量
验证
proccesing
显示错误(如果有)或成功消息
如果错误或未发送,则呈现表单
尝试这样的事情:
<?php
//Capture POST/GET vars
$charity = $_REQUEST['charity'];
$name = $_REQUEST['name'];
$step = $_REQUEST['step'];
//You can add some sanitizing to the vars here
//Form sent if step == 1
if ($step == 1){
/*
* Validate form
*/
//Initialize error's array
$error = array();
//No charity value error
if (!$charity){
$error[] = 'You must select 1 option';
}
//Missing name error
if (!$name){
$error[] = 'Name is missing';
}
//Add any other validation here
/*
* Process form if not error
*/
if (!$error){
//Send eMail
$subject = "Your subject here";
$toemail = "<yourname@example.com>";
$bounce = "<bounce@example.com>";
$message = "
Company Name: $name<br>
Charity: $charity <br>";
$subject = '=?UTF-8?B?'.base64_encode(utf8_encode($subject)).'?=';
$headers = "From: <webform@example.com>" . "\r\n" .
"Reply-To: <info@example.com>" . "\r\n" .
"X-Mailer: PHP/" . phpversion();
mail($toemail, $subject, $message, $headers, "-f $bounce" );
//Add any other proccesing here, like database writting
}
/*
* Show errors || succsess msg on the top of the form
*/
if ($error){
unset($step); //if error, show the form
echo '<div style="color:yellow;background-color:red;">ERROR:<br>';
foreach ($error as $e){
echo '- '.$e.'<br>';
}
echo '</div><br>';
}else{
echo '<div>Form succesfully sent</div><br>';
}
}
/*
* Form rendering
*/
if (!$step){
?>
<form method="post" action="">
<input type="radio" name="charity" value="1" <?php echo ($charity == "1") ? ' checked':''; ?>>1
<input type="radio" name="charity" value="2" <?php echo ($charity == "3") ? ' checked':''; ?>>2
<input type="radio" name="charity" value="3" <?php echo ($charity == "3") ? ' checked':''; ?>>3
<input type="text" name="name" placeholder="ENTER YOUR COMPANY NAME">
<input type="hidden" name="step" value="1">
<input type="submit" name="submit" value="Submit"/>
</form>
<?php
}