誰かがこれを解決するのを手伝ってもらえますか?PHPコンタクトフォームにスパムコントロールを追加する
私は迷惑メールを防ぐために私の連絡先フォームにこのコードを追加しようとしていますが、機能しません。
HTML:
Access code: <input type="text" name="code" /><br />
MYCODE上記を入力してください。
PHPの:
if (strtolower($_POST['code']) != 'mycode') {die('Wrong access code');}
ので、問題は、コードが正しければ、あなたのページに感謝するために戻ってリダイレクトされていない何らかの理由です。ここで
は、私はそれを動作させることを試みた方法である:ここでは
if (strtolower($_POST['code']) == 'mycode')
header('Location: ../thank-you.php');
exit('Redirecting you to ../thank-you.php');
if (strtolower($_POST['code']) != 'mycode')
{
die('Wrong access code! Please go back and try again.');
exit;
}
は、PHPのための完全なコードです:
<?php
require_once('class.phpmailer.php');
include("class.smtp.php");
$myaddress = "[email protected]";
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$lastname = $_POST['lastname'];
$bizphone = $_POST['bizphone'];
$state = $_POST['state'];
$phone = $_POST['phone'];
$comments = $_POST['comments'];
$code = $_POST['code'];
//This line is checking the input named code to verify humans
if (strtolower($_POST['code']) == 'mycode') {
header('Location: ../thank-you.php');
exit('Redirecting you to ../thank-you.php');
}
if (strtolower($_POST['code']) != 'mycode')
{
die('Wrong access code! Please go back and try again.');
exit;
}
// This code checks the hidden fields only bots can fill to verify humans
if(strlen($lastname) !== 0)
{
header('Location: ../thank-you.php');
exit;
}
if(strlen($bizphone) !== 0)
{
header('Location: ../thank-you.php');
exit;
}
$ip = $_POST['ip'];
$httpref = $_POST['httpref'];
$httpagent = $_POST['httpagent'];
$mailst = $_POST['mailst'];
$emailbody = "
<p>You have received a Quote !</p><br />
<p><strong>First - Last Name:</strong> {$name} </p>
<p><strong>Email Address:</strong> {$email} </p>
<p><strong>Telephone:</strong> {$phone} </p>
<p><strong>Additional Comments:</strong> {$comments}</p>
<p><strong>Ip Address:</strong> {$ip}</p>
<p><strong>Refererer:</strong> {$httpref}</p>
<p><strong>User Agent:</strong> {$httpagent}</p>
";
class myphpmailer extends PHPMailer
{
// Set default variables for all new objects
public $From = "";
public $FromName = "";
public $Sender = "";
//public $Subject = $quoterequest;
public $Host = '';
public $Port = ;
public $SMTPSecure = 'ssl';
public $SMTPAuth = true;
public $Username = '';
public $Password = '';
}
$mail = new myphpmailer;
#!!!!!CHANGE SMTPDebug level for debugging!!!
$mail->SMTPDebug = 0;
$mail->Subject = "Contact Form";
$mail->IsSMTP();
$mail->AddAddress($myaddress);
$mail->MsgHTML($emailbody);
$mail->SMTPAuth = true;
$mail->Send();
exit(header("Location: ../thankyou.php"));
?>
両方の場合、私は人間だけまたはブロックボットを検証する一つの方法を必要とするが、それは素晴らしいです:)
ありがとうございます。
の元のコメントを削除しますのでご注意ください。 plzはこの新しいコードをチェックします。 –
これは問題です。 {} –
を変更してthis {header( 'Location:../thank-you.php');を追加する必要があります。 exit( 'あなたを../thank-you.phpにリダイレクトします); } –