私もphpと似ていますが、どこに問題があるのか分かりません。
php 関数が
のような空のメッセージを送信することがあります。両親の名前
遅すぎる:###### リン: ###### 電話番号:###### Eメール:###### 生年月日:###### メッセージテキスト:
ただし、次のような値で満たされる必要があります
親の名前のテスト
間違いが多すぎます: テスト
リン: テスト
電話番号: テスト 電子メール: test@test生年月日: 21313
メッセージテキスト: テスト
これは私のphpコードです
リーリー
何が問題だったのでアドバイスをお願いします。
スクリプトが単なるフォーム ハンドラーの場合は、先頭に
if(empty($_POST)) { die('No form data!'); }
を追加して実行されないようにすることができます。 , 回答フォームが提出されていない場合。すべてのフィールドに入力する必要がある場合は、電子メールを処理する前に各フィールドを確認する必要があります。これらすべての
リーリーisset
を 1 つの巨大なif(isset(...)
ステートメントに詰め込むこともできます。ただし、よりシンプルで読みやすい方法があります。まず、設定しましょう。いくつかの変数を上げます:次にフィールドをループし、値が存在する場合はそれを
リーリー$data
に追加します。存在しない場合はエラー コメントを追加します。エラーが発生した場合 (= フィールドが欠落している場合)、電子メールは送信されません。ボーナスとして、$fields 配列を変更するだけで、同様の機能を持つ他のフォームで使用できる
再利用可能なコード
が手に入りました。 (本当に再利用する必要がある場合は、コードをコピーして貼り付けないで、関数にラップすることをお勧めします。function x($post, $fields) { ... }
使用基本的な操作ヘルパー関数用。)ここでは
補足 上記のコードが完成しており、スクリプトがフォーム データを処理してリダイレクトするだけの場合は、HTML ラッパーはまったく必要ありません。決して表示されません。isset
ではなくempty
を使用していることに注意してください。空のフォームが送信された場合、フィールド が設定されます (空の文字列""
)。また、empty
は、false
に等しいものに対してtrue
を返すことにも注意してください (つまり、""
、0)
、false
、null、[]
)。 ( 「0」が期待され許容可能な値である場合は、その「空」に注意してください! ) 一方、# 以外の値にはisset
が設定されます。 ##nullの内容は true を返します。