我的“mailhandler.php”的PHP代码似乎显示我的HTML网站上的所有复选框,当它到达我的电子邮件时被检查。我希望用户只选择他们想要的复选框,因此只有他们的选择显示在我的电子邮件中。
用于复选框的HTML代码:
< input type="checkbox" name="event1" value="Summer" />
PHP MAILHANDLER的HTML代码:
$owner_email ='MYEMAIL';
$headers = 'From:' . $_POST["email"];
$subject = 'A message from your site visitor ' . $_POST["name"];
$messageBody = "";
if($_POST['name']!='nope'){
$messageBody .= '<p>Visitor: ' . $_POST["name"] . '</p>' . "\n";
$messageBody .= '<br>' . "\n";
}
if($_POST['email']!='nope'){
$messageBody .= '<p>Email Address: ' . $_POST['email'] . '</p>' . "\n";
$messageBody .= '<br>' . "\n";
}else{
$headers = '';
}
if($_POST['ticketnumber']!='nope'){
$messageBody .= '<p>Ticket Number: ' . $_POST['ticketnumber'] . '</p>' . "\n";
$messageBody .= '<br>' . "\n";
}
if($_POST['phone']!='nope'){
$messageBody .= '<p>Phone Number: ' . $_POST['phone'] . '</p>' . "\n";
$messageBody .= '<br>' . "\n";
}
if($_POST['fax']!='nope'){
$messageBody .= '<p>Email List: ' . $_POST['elist'] . '</p>' . "\n";
$messageBody .= '<br>' . "\n";
}
if($_POST['ticketnumber1']!='nope'){
$messageBody .= '<p>Ticket Number: ' . $_POST['ticketnumber1'] . '</p>' . "\n";
}
if($_POST['event1']!='nope'){
$messageBody .= '<p>Checked Photo 1 ' . $_POST['event1'] . '</p>' . "\n";
}
if($_POST['event2']!='nope'){
$messageBody .= '<p>Checked Photo 2 ' . $_POST['event2'] . '</p>' . "\n";
}
if($_POST['message']!='nope'){
$messageBody .= '<p>Message: ' . $_POST['message'] . '</p>' . "\n";
}
if($_POST["stripHTML"] == 'true'){
$messageBody = strip_tags($messageBody);
}
try{
if(!mail($owner_email, $subject, $messageBody, $headers)){
throw new Exception('mail failed');
}else{
echo 'mail sent';
}
}catch(Exception $e){
echo $e->getMessage() ."\n";
}
答案 0 :(得分:1)
对于此复选框:
<input type="checkbox" name="event1" value="Summer" />
这是检查提交时是否已检查的方法:
if (isset($_POST['event1']) && $_POST['event1'] === 'Summer') {
echo 'Checkbox event1 was checked';
} else {
echo 'Checkbox event1 was not checked';
}
规则是:
如果您希望始终拥有与复选框对应的密钥并且仅检查值,则可以使用技巧:
<input type="hidden" name="event1" value="no" />
<input type="checkbox" name="event1" value="yes" />
在这种情况下,“event1”将始终出现在$ _POST中,您只能检查该值。
当然,您绝不应该假设表单将从您的特定HTML表单提交。如果有人使用自定义HTML表单或curl等工具发布到您的电子邮件处理程序,则密钥可能仍然缺失或具有与您预期不同的值。这就是为什么你不应该直接使用$ _POST超级全局,而是使用一种方法来访问为你执行所有这些检查的请求:
class Request
{
public function post($key, $default = null)
{
if (isset($_POST[$key])) {
return $_POST[$key];
} else {
return $default;
}
}
}
$request = new Request();
if ($request->post('event1') === 'Summer') {
echo 'Checkbox event1 was checked';
} else {
echo 'Checkbox event1 was not checked';
}
答案 1 :(得分:0)
这将检查数据库中是否存在&#39; Y&#39;(是=已检查)的值并将其回显
<?php if ($something['*something*']=='Y') echo 'checked'; ?>