我已经构建了一个PHP联系表单,用户必须填写所有字段,在php中验证表单并发送给之前选择的收件人。不幸的是它没有用,消息永远不会到达它的目的地。我做错了什么?
我留下了代码:
<form method="post" action="index.php#kontakt">
<p>
<label>Namn</label>
<input name="name" type="text" placeholder="Skriv här">
<label>Din e-post adress</label>
<input name="dinepost" type="email" placeholder="Skriv här">
<label for="sendTo">Välj mottagare:</label>
<select name="sendTo" required id="sendTo">
<option id="joao" value="joao">joao</option>
<option id="company 2" value="lfsolutions">lfsolutions</option>
</select>
<label>Meddelande</label>
<textarea name="message" placeholder="Skriv här"></textarea>
<label>Hur mycket är 2+2? (Anti-spam)</label>
<input name="human" type="number" placeholder="Svara här">
</p>
<p>
<input id="submit" name="submit" type="submit" value="Skicka meddelandet!" class="botao"><br>
*Alla fält är obligatoriska
</p>
<?php
$name = $_POST['name'];
$email = $_POST['dinepost'];
$message = $_POST['message'];
$from = 'webbsida';
$to = $_POST['sendTo'];
$subject = 'Ny meddelande';
$human = $_POST['human'];
switch ($sendTo) {
case "joao":
$sendTo = "email1@gmail.com";
break;
case "lfsolutions":
$sendTo = "email2@gmail.com";
break;
default:
$sendTo = "email3@gmail.com";
}
$headers = "MIME-Version: 1.0" . PHP_EOL;
$headers .= "From: $from <$email> ". PHP_EOL;
$headers .= "Content-type: text/html;charset=UTF-8 ". PHP_EOL;
$name = str_replace( '[at]','@', $name);
$message = str_replace( '[at]','@', $message);
$body = "<strong>Från:</strong> $name\n <br><strong>E-post:</strong> $dinepost\n <br><strong>Meddelandet:</strong>\n <br>$message";
if ($_POST['submit']) {
if ($name != '' && filter_var($email, FILTER_VALIDATE_EMAIL)) {
if ($human == '4') {
if (mail ($to, $subject, $body, $headers)) {
echo '<div data-alert class="alert-box success">
<p>Ditt meddelande har skickats! Tack så mycket!</p>
<a href="#" class="close">×</a>
</div>';
} else {
echo '<div data-alert class="alert-box alert">
<p>Någonting gick fel. Var vänlig och försök igen!</p>
<a href="#" class="close">×</a>
</div>';
}
} else if ($_POST['submit'] && $human != '4') {
echo '<div data-alert class="alert-box alert">
<p>Du har gett fel svar på Anti-Spam frågan!</p>
<a href="#" class="close">×</a>
</div>';
}
} else {
echo '<div data-alert class="alert-box alert">
<p>Du behöver att fylla alla fält i formuläret!</p>
<a href="#" class="close">×</a>
</div>';
}
}
?>
</form>
答案 0 :(得分:0)
您的switch语句是问题所在。 如果我正确理解你的代码,它应该是
switch ($to) { // not $sendTo
// (...)
}
您的版本不尊重用户的选择。
这对你有帮助吗?
答案 1 :(得分:0)
所以你实际上有两个问题。首先是Burki指出的转换问题。
第二个是当您拨打电子邮件时,您没有使用$sendTo
的值。您对mail
的来电需要使用$sendTo
作为收件人:字段:
mail ($sendTo, $subject, $body, $headers)