2017-01-02 17 views
0

私はPHPとHTMLコードを持っています。私は電子メール(名前、件名、メッセージ)を送信するための4つの入力があり、例外の検証があります。今すぐ私のコーディング作業:最初の入力が空であれば、2番目の入力が空であればエラーメッセージを表示し(最初は空ではない)、エラーメッセージなどを表示します。 1つはPHPの例外です。どのように私はそれを修正することができますアイデア?PHP例外エラーメッセージ

例外処理とPHPコード:

if (isset($_POST['Send'])) { 
    class emailException extends Exception {} 
    class email_validException extends Exception {} 
    class subjectException extends Exception {} 
    class messageException extends Exception {} 

    $name = $_POST['name']; 
    $to = $_POST['to']; 
    $subject = $_POST['subject']; 
    $message = $_POST['message']; 
    try { 
     if($name == "") { 
      throw new Exception("Töltsd ki a mezőt(1)!"); 
     } 
     if($to == "") { 
      throw new emailException("Töltsd ki a mezőt(2)!"); 
     } 
     // Email cim ellenőrzése 
     if (!filter_var($to, FILTER_VALIDATE_EMAIL)) { 
      throw new email_validException("Hibás email cím!"); 
     } 
     if($subject == "") { 
      throw new subjectException("Töltsd ki a mezőt(3)!"); 
     } 
     if($message == "") { 
      throw new messageException("Töltsd ki a mezőt(4)!"); 
     } 
     if ($name != "" && $to != "" && $subject != "") { 
      echo "Email elküldve"; 
      $name = ""; 
      $to = ""; 
      $subject = ""; 
      $message = ""; 
     } 
    } 
    catch(emailException $e1) { 
     $error_mail = $e1->getMessage(); 
    } 
    catch(email_validException $e1) { 
     $error_mail_valid = $e1->getMessage(); 
    } 
    catch(subjectException $e2) { 
     $error_subj = $e2->getMessage(); 
    } 
    catch(messageException $e3) { 
     $error_message = $e3->getMessage(); 
    } 
    catch(Exception $e) { 
     $error = $e->getMessage(); 
    } 
} 

HTML入力フォームを:

<form name="myForm" onsubmit="//return validateForm();" method="post" action="feladat9.php"> 
    <p><input type="text" name="name" placeholder="Név" value="<?php echo $name; ?>"><label id="error_name"><?php echo $error ?></label></p> 
    <p><input type="text" name="to" placeholder="Címzett" value="<?php echo $to; ?>"><label id="error_email"><?php 
      echo "$error_mail $error_mail_valid";?></label></p> 
    <p><input type="text" name="subject" placeholder="Tárgy" value="<?php echo $subject; ?>"><label id="error_subject"><?php echo $error_subj ?></label></p> 
    <p><input type="text" name="message" placeholder="Üzenet" value="<?php echo $message; ?>"><label id="error_message"></label><?php echo $error_message ?></p> 
    <input type="submit" value="Send" id="send" name="Send"> 
</form> 
+2

すぐに投げるのではなく、例外メッセージを配列に保存し、条件チェックで完了したらすべて例外をスローします。 – funsholaniyi

+0

'$ name = isset($ _ POST ['name'])? $ _POST ['name']: ""; $ to = isset($ _ POST ['to'])? $ _POST ['to']: ""; $件名= isset($ _ POST ['件名'])? $ _POST ['件名']: ""; $ message = isset($ _ POST ['message'])? $ _POST ['message']: ""; – Eugen

+0

@Eugenここで私はこのコードを挿入しますか? –

答えて

1

あなたはすべてのエラーを表示したい場合は、あなたがコンセプトの新しい例外をスロー 'を使用してはならない、なぜなら例外を次の実行を停止してcatchセクションにジャンプします。

あなたはこのように試すことができます:

if(isset($_POST['Send'])) 
{ 

    $name = $_POST['name']; 
    $to = $_POST['to']; 
    $subject = $_POST['subject']; 
    $message = $_POST['message']; 

    $errors = array(); 

    if($name == "") 
    { 
     $errors['error'] = "Töltsd ki a mezőt(1)!"; 
    } 
    if($to == "") 
    { 
     $errors['error_mail'] = "Töltsd ki a mezőt(2)!"; 
    } 
    // Email cim ellenőrzése 
    if (!filter_var($to, FILTER_VALIDATE_EMAIL)) 
    { 
      $errors['error_mail_valid'] = "Hibás email cím!"; 
    } 
    if($subject == "") 
    { 

     $errors['error_subj'] = "Töltsd ki a mezőt(3)!"; 
    } 
    if($message == "") 
    { 
     $errors['error_message'] = "Töltsd ki a mezőt(4)!"; 
    } 
    if ($name != "" && $to != "" && $subject != "") 
    { 
     echo "Email elküldve"; 

     $name = ""; 
     $to = ""; 
     $subject = ""; 
     $message = ""; 
    } 

} 

と$エラー変数がerrosを表示するために使用することができます。

+0

例外を使用する必要があります –

+0

次の実行を中止して、catchセクションにジャンプします。 空の$ nameの例外があると、他のコードの実行が停止し、catchセクションにジャンプします。例外を使用すると、一度にすべてのエラーを表示することはできません。 –

+0

私はすべてのエラーメッセージを同時にドロップできませんか?いくつかの解決策があります。 –