同じ php ファイルを使用して処理しようとしているサイトに 2 つの異なる連絡先フォームがあります。コードの 1 つのセクションでこのコードを使用したいと思います。「1」は最初のフォームの隠しフィールドの値で、「2」は 2 番目のフォームの隠しフィールドの値です。
if ($_POST['process']=='1'){}
何をしても、このコードを機能させることはできません。上記のコードを削除してみましたが、お問い合わせフォームは問題なく送信されます。私が試したもう 1 つのことは、非表示の値をテキスト フィールドに変更して、実際に値が表示されていることを確認することでした。また、「プロセス」隠しフィールドの値を変数として含めて、電子メールで送信しました。その変数の値は、電子メールで空白になります。ここで何が間違っていますか?これが私のコードです:
if(!$_POST) exit;
function remove_non_numeric($string) {
return preg_replace("/[^0-9.]/", "", $string);
}
function isEmail($email) {
return preg_match("/^(?!.{255,})(?!.{65,}@)([!#-'*+\/-9=?^-~-]+)(?>\.(?1))*@(?!.*[^.] {64,})(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?\.){1,126}[a-z]{2,6}$/iD", $email);
}
if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");
if ($_POST['process']=='1'){
$name = $_POST['name'];
$email = $_POST['email'];
$phone = remove_non_numeric($_POST['phone']);
$comments = $_POST['comments'];
$verify = $_POST['verify'];
$process = $_POST['process'];
if(trim($name) == '') {
echo '<div class="error_message">You must enter your name.</div>';
exit();
} else if(trim($email) == '') {
echo '<div class="error_message">Please enter a valid email address.</div>';
exit();
} else if(trim($phone) == '') {
echo '<div class="error_message">Please enter a valid phone number.</div>';
exit();
} else if(!isEmail($email)) {
echo '<div class="error_message">You have entered an invalid e-mail address, please try again.</div>';
exit();
} else if(trim($comments) == '') {
echo '<div class="error_message">Please enter your message.</div>';
exit();
} else if(!isset($verify) || trim($verify) == '') {
echo '<div class="error_message">Please enter the verification number.</div>';
exit();
} else if(trim($verify) != '4') {
echo '<div class="error_message">The verification number you entered is incorrect.</div>';
exit();
}
if(get_magic_quotes_gpc()) {
$comments = stripslashes($comments);
}
$address = "myemail@email.com";
$e_subject = 'You\'ve been contacted by ' . $name . '.';
$e_body = "You have been contacted by $name. Their message is below." . PHP_EOL . PHP_EOL;
$e_content = "\"$process\"" . PHP_EOL . PHP_EOL;
$e_reply = "You can contact $name via email, $email or via phone $phone";
$msg = wordwrap( $e_body . $e_content . $e_reply, 70 );
$headers = "From: $email" . PHP_EOL;
$headers .= "Reply-To: $email" . PHP_EOL;
$headers .= "MIME-Version: 1.0" . PHP_EOL;
$headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL;
$headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL;
if(mail($address, $e_subject, $msg, $headers)) {
// Email has sent successfully, echo a success page.
echo "<fieldset>";
echo "<div id='success_page'>";
echo "<h1>Email Sent Successfully.</h1>";
echo "<p>Thank you <strong>$name</strong>, your message has been sent.</p>";
echo "</div>";
echo "</fieldset>";
} else {
echo 'ERROR!';
}
}
簡単にするために、他のフォームを処理するコードの 2 番目のビットを削除しましたが、何をしようとしているのかを理解していただければ幸いです。「プロセス」という隠しフィールドの値が「1」の場合、このコードを処理します。値が 2 の場合は、代わりに他のコードを処理する必要があります。
コードの html 部分は次のとおりです。
<div id="contact">
<div id="message"></div>
<form method="post" action="http://s423839726.onlinehome.us/franklinvineyard/contact.php" name="contactform" id="contactform">
<fieldset>
<input type="text" name="process" id="process" size="4" value="1" />
<label for="name">Your Name<span class="required">*</span></label>
<input name="name" type="text" id="name" size="30" value="" />
<br />
<label for="email">Email<span class="required">*</span></label>
<input name="email" type="text" id="email" size="30" value="" />
<br />
<label for="phone">Phone<span class="required">*</span></label>
<input name="phone" type="tel" id="phone" size="30" value="" />
<br />
<label for="comments">Comments<span class="required">*</span></label>
<textarea name="comments" cols="40" rows="15" id="comments" style="width: 350px;"></textarea>
<label>Are you human?<span class="required">*</span></label>
<label class="accesskey" for="verify"> 3 + 1 =</label>
<input class="accesskey" name="verify" type="text" id="verify" size="4" value="" style="width: 30px;" /><br /><br />
<input type="submit" class="submit" id="submit" value="submit" />
</fieldset>
</form>
</div><!--end contact-->
フォームを処理するjqueryもあります...これが問題でしょうか?
jQuery(document).ready(function(){
$('#contactform').submit(function(){
var action = $(this).attr('action');
$("#message").slideUp(750,function() {
$('#message').hide();
$('#submit')
.attr('disabled','disabled');
if($('#process').val()=='1'){
$.post(action, {
name: $('#name').val(),
email: $('#email').val(),
phone: $('#phone').val(),
comments: $('#comments').val(),
verify: $('#verify').val()
},
function(data){
document.getElementById('message').innerHTML = data;
$('#message').slideDown('slow');
$('#contactform img.loader').fadeOut('slow',function(){$(this).remove();
});
$('#submit').removeAttr('disabled');
if(data.match('success') !== null) $('#contactform').slideUp('slow');
}
);
else{
$.post(action, {
name: $('#name').val(),
email: $('#email').val(),
phone: $('#phone').val(),
friend: $('#friend').val(),
search: $('#search').val(),
signage: $('#signage').val(),
vineyard: $('#vineyard').val(),
newspaper: $('#newspaper').val(),
other: $('#other').val(),
comments1: $('#comments-survey1').val(),
comments2: $('#comments-survey2').val(),
comments3: $('#comments-survey3').val(),
verify: $('#verify').val()
},
function(data){
document.getElementById('message').innerHTML = data;
$('#message').slideDown('slow');
$('#contactform img.loader').fadeOut('slow',function(){$(this).remove();
});
$('#submit').removeAttr('disabled');
if(data.match('success') !== null) $('#contactform').slideUp('slow');
}
);
});
return false;
});
});
});