正如我在評論中所述,檢查任何空白字段。
即使添加了required
,漫遊器可能正在直接訪問php文件,或其他人。
<?php
if(!empty($_REQUEST['name'])
&& !empty($_REQUEST['email'])
&& !empty($_REQUEST['skype'])
&& !empty($_REQUEST['message'])){
$to = "[email protected]";
$subject = "FluxDesigns Contact Form";
$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$skype = $_REQUEST['skype'];
$message = $_REQUEST['message'];
$ip = $_SERVER['REMOTE_ADDR'];
$body = " Name: $name \n Email: $email \n Skype: $skype \n Message: $message \n\n IP Address: $ip";
if (mail($to, $subject, $body)) {
header('Location: /thanks');
exit; // added that to prevent further execution
}
}
else{
echo "Fill in all fields";
}
你可以另加一個複選框,並檢查它是否被設定爲isset()
,並相應地處理它。
但是,您應該使用完整標題,如mail()
手冊中所述。否則,您可能無法收到,也可能被視爲垃圾郵件。
完整標題是指具有有效From
的電子郵件地址。從手動
例子:
<?php
$to = '[email protected]';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
您還應該創建一個SPF紀錄,但已經超出了問題的範圍。
把你的代碼在這裏,複選框不是空的(你似乎知道你應該這樣做),添加CAPCHA – nogad
這其實是比你想象的簡單。檢查空值並使用完整標題 –
我已將我的HTML代碼添加到線程。我很新的PHP,所以我不知道如何檢查空值,並使用完整的標題等。 – TrifleTower