この電子メール検証コードに大きく基づいています(これは動作します - 私はそれをテストしました)
<?php
require_once("include/connectionpdo.php");
echo("<h2>parsed1</h2> ");
function died($error) {
// your error code can go here
echo "We are very sorry, but there were error(s) found with the form you submitted. ";
echo "These errors appear below.<br /><br />";
echo $error."<br /><br />";
echo "Please go back and fix these errors.<br /><br />";
echo "If you have fixed any possible errors, and you believe that there is a problem with our submission system, please ";
die();
}
echo("<h2>parsed2</h2> ");
// first checks to see if any information is supplied at all in the required fields
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['email']) ||
!isset($_POST['phone']) ||
!isset($_POST['addressl1']) ||
!isset($_POST['addressl2']) ||
!isset($_POST['town']) ||
!isset($_POST['county']) ||
!isset($_POST['type']))
{
died('We are sorry, but there appears to be a problem with the form you submitted.');
}
echo("<h3>parsed3</h3> ");
$first_name = $_POST['fname']; // required
$last_name = $_POST['sname']; // required
$email_from = $_POST['email']; // required
$telephone = $_POST['phone']; // not required
$dateofbirth = $_POST['dob']; // required
$addresslone = $_POST['addressl1']; // required
$addressltwo = $_POST['addressl2']; // required
$townnm = $_POST['town']; // required
$countynm = $_POST['county']; // required
$typeapp = $_POST['type']; // required
$issubscribed = $_POST['subscribed']; // required
// checks to see if information supplied is correct
echo("<h4>parsed4</h4> ");
$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
$number_exp = '/^[0-9]/';
if(!preg_match($email_exp,$email_from)) {
echo("errortest1 ");
$error_message .= 'The Email Address you entered does not appear to be valid.<br />';
}
$string_exp = "/^[A-Za-z .'-]+$/";
if(!preg_match($string_exp,$first_name)) {
echo("errortest2 ");
$error_message .= 'The First Name you entered does not appear to be valid.<br />';
}
if(!preg_match($string_exp,$last_name)) {
echo("errortest3 ");
$error_message .= 'The Last Name you entered does not appear to be valid.<br />';
}
$number_exp = '/^[0-9]/';
if(!preg_match($string_exp,$last_name)) {
echo("errortest4 ");
$error_message .= 'Please just enter numerical values for your phone number.<br />';
}
if(strlen($addresslone) < 2) {
echo("errortest5 ");
$error_message .= 'The address (line one) you entered do not appear to be valid.<br />';
}
if(strlen($addressltwo) < 2) {
echo("errortest6 ");
$error_message .= 'The address (line two) you entered do not appear to be valid.<br />';
}
if((!preg_match($string_exp,$townnm)) || (strlen($townnm) < 2)) {
echo("errortest7 ");
$error_message .= 'The town you entered does not appear to be valid.<br />';
}
if((!preg_match($string_exp,$countynm)) || (strlen($countynm) < 2)) {
echo("errortest8 ");
$error_message .= 'The county you entered does not appear to be valid.<br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
# the data we want to insert
$data = array($first_name, $second_name, $email_from, $telephone, $dateofbirth, $addresslone, $addressltwo, $townnm, $countynm, $typeapp, $issubscribed);
$STH = $DBH->prepare("INSERT INTO members (fname, sname, email, phone, dob, addressl1, addressl2, town, county, type, subscribed) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$STH->execute($data);
?>
<!--<!DOCTYPE html>
<head><title></title></head><body> -->
Thank you for contacting us We will be in touch with you very soon.
<!-- </body></html> -->
コードは「parsed 2」を出力しますが、それ以上は進みません。
function die は実行されますが、「申し訳ありませんが、送信したフォームに問題があるようです」という追加の一般的なメッセージのみが出力されます。
奇妙なことに、!isset は常に true を返すようです (フォーム内のフォーム情報に関係なく)。if !isset ブロックをすべて削除したため、「parsed 3」、「parsed 4」、「errortest1」、および「入力した電子メール アドレスは有効ではないようです」という出力が発生しました。繰り返しますが、これは、フォームの電子メール アドレスが指定された条件を満たしているかどうかに関係ありません。if!preg_match ステートメントを削除すると、エラー メッセージが生成される
「致命的なエラー: 88 行目の public_html/application4.php の非オブジェクトに対するメンバ関数 prepare() の呼び出し」
.
構文エラーはありません。少なくとも構文エラーがあったとしても、単に論理エラーを生成しているだけです。