これらの入力検証が機能しないのはなぜですか? (PHP & HTML & SMTP サーバー & PHPmailer 経由でお問い合わせください)
P粉613735289
P粉613735289 2023-09-06 21:34:49
0
1
481

私は PHP、HTML、SMTP サーバー、および PHPmailer を使用して、ユーザー入力検証を備えたお問い合わせフォームを作成しています。しかし、「送信」ボタンを押すと、エラーが表示されます:

無効なアドレス: (送信者): 致命的なエラー: キャッチされない PHPMailer\PHPMailer\Exception: 無効なアドレス: (from): C:\xampp\htdocs\RESPONSIVE SITE3_2\Supplier\phpmailer\phpmailer\src\PHPMailer.php:1324 スタックトレース: #0 C:\xampp\htdocs\RESPONSIVE SITE3_2\send-email.php(74): PHPMailer\PHPMailer\PHPMailer->setFrom('', '') #1 {main} は C:\xampp\htdocs\RESPONSIVE SITE3_2\vendor\phpmailer\phpmailer\src\PHPMailer.php 行 1324

をスローします

PHP コード:

リーリー

HTMLコード

リーリー

さまざまなチュートリアルを試しましたが、成功しませんでした。 このフォームが必要です

  • ユーザー入力を検証し、数字と文字のみの挿入を許可します (メールフィールド)
  • データが無効な場合は、入力フィールドの下にエラー メッセージが表示される必要があります

私はこれについて非常に初心者なので、非常に簡単な言葉で説明してください:)

P粉613735289
P粉613735289

全員に返信(1)
P粉924915787

######診断######

いずれかの検証 if ステートメントが true の場合、文字列変数

$emailErr

が設定されます。 その後、コードは再び if ブロックを終了し、スクリプトは順調に続行して電子メールの送信を試みます。コードにはこれを防ぐロジックがありません。

最後に、$emailErr は、コードがその変数を関与できない別の HTML ページにユーザーをリダイレクトするため、決して使用されません。

######解決######

いずれかの検証が失敗した場合は、電子メール送信部分をスキップするようにコードに指示する追加のロジックが必要です。これを賢く行う非常に簡単な方法は、「フラグ」変数を使用することです。 ###例えば:### リーリー PS ところで、正規表現は制限が厳しすぎます -

「電子メール アドレスに使用できる文字は何ですか?」を参照してください。

FILTER_VALIDATE_EMAIL はすでに使用しているため、いかなる状況でも必要ありません。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート