2016-08-30 10 views
0
  1. 私は同じページに2つのPHPコードと2つのHTMLコードを持っていますが、最初のフォームはokですが、2番目のフォームの警告メッセージも最初のフォームアラートメッセージ。複数のフォームをPHPで1ページにまとめる

  2. 2番目のサブスクライブフォームは機能しません。 私はエコー$resultが倒れていると思いますが、これをどのように分けることができますか?

PHP

<?php 

function validEmail($email) { 
    // First, we check that there's one @ symbol, and that the lengths are right 
    if (!preg_match("/^[^@]{1,64}@[^@]{1,255}$/", $email)) { 
     return false; 
    } 
    // Split it into sections to make life easier 
    $email_array = explode("@", $email); 
    $local_array = explode(".", $email_array[0]); 
    for ($i = 0; $i < sizeof($local_array); $i++) { 
     if (!preg_match("/^(([A-Za-z0-9!#$%&'*+\/=?^_`{|}~-][A-Za-z0-9!#$%&'*+\/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$/", $local_array[$i])) { 
      return false; 
     } 
    } 
    // Check if domain is IP. If not, it should be valid domain name 
    if (!preg_match("/^\[?[0-9\.]+\]?$/", $email_array[1])) { 
     $domain_array = explode(".", $email_array[1]); 
     if (sizeof($domain_array) < 2) { 
      return false; 
     } 
     for ($i = 0; $i < sizeof($domain_array); $i++) { 
      if (!preg_match("/^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$/", $domain_array[$i])) { 
       return false; 
      } 
     } 
    } 
    return true; 
} 

if ($_POST["registerform"]) { 
    $ip = $_SERVER['REMOTE_ADDR']; 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $mobile = $_POST['mobile']; 
    $sub = $_POST['sub']; 
    $message = $_POST['message']; 
    $formcontent = "Sender IP: $ip \n\n Name: $name \n E-mail: $email \n Mobile: $mobile \n Subject: $sub \n\n Message: $message"; 
    $recipient = "[email protected]"; 
    $subject = "Contact Us Form"; 
    $mailheader = "From: $email \r\n"; 

    if (!$_POST['name']) { 
     $errName = 'Please enter your name'; 
    } 
    if (!$_POST['email'] || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { 
     $errEmail = 'Please enter a valid email address'; 
    } 
    if (!$_POST['mobile']) { 
     $errMobile = 'Please enter your mobile number'; 
    } 
    if (!$_POST['sub']) { 
     $errSub = 'Please enter your subject'; 
    } 
    if (!$_POST['message']) { 
     $errMessage = 'Please enter your message'; 
    } 
    if (!$errName && !$errEmail && !$errMobile && !$errSub && !$errMessage) { 
     if (mail($recipient, $subject, $formcontent, $mailheader) or die("Error!")) { 
      $result = '<div class="alert alert-success"><button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>Thank You! Your message has been sent. We will revert back to you shortly</div>'; 
     } else { 
      $result = '<div class="alert alert-danger"><button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>Warning! There was a problem with your network connection. Please try again</div>'; 
     } 
    } 
} elseif ($_POST['subscribe']) { 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $message = $_POST['message']; 
    $formcontent = " Name: $name \n\n Email: $email"; 
    $recipient = "[email protected]"; 
    $subject = "subscribe Newsletter"; 
    $mailheader = "From: $email \r\n"; 

    if (!$_POST['name']) { 
     $errName1 = 'Please enter your name'; 
    } 
    if (!$_POST['email'] || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { 
     $errEmail1 = 'Please enter a valid email address'; 
    } 
    if (!$errName && !$errEmail && $errMessage) { 
     if (mail($recipient, $subject, $formcontent, $mailheader) or die("Error!")) { 
      $result = '<div class="alert alert-success"><button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>Thank for subscribing newsletters</div>'; 
     } else { 
      $result = '<div class="alert alert-danger"><button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>Please try again</div>'; 
     } 
    } 
} 
?> 

まずメールフォームのHTMLコードは次のとおりです。

<form action="" name="registerform" method="post"> 
    <div class="row"> 
     <div class="form-group"> 
      <div class="col-lg-6 "> 
       <input type="text" name="name" class="form-control" placeholder="Your Full Name *"> 
       <?php echo "<p class='text-danger'>$errName</p>";?> 
      </div> 
      <div class="col-lg-6 "> 
       <input type="email" name="email" class="form-control" placeholder="Your E-mail *"> 
       <?php echo "<p class='text-danger'>$errEmail</p>";?> 
      </div> 
     </div> 
    </div> 
    <div class="row"> 
     <div class="form-group"> 
      <div class="col-lg-6"> 
       <input type="number" name="mobile" class="form-control" placeholder="Contact Number *"> 
       <?php echo "<p class='text-danger'>$errMobile</p>";?> 
      </div> 
      <div class="col-lg-6 "> 
       <input type="text" name="sub" class="form-control" placeholder="Subject *"> 
       <?php echo "<p class='text-danger'>$errSub</p>";?> 
      </div> 
     </div> 
    </div> 
    <div class="row"> 
     <div class="form-group"> 
      <div class="col-md-12"> 
       <textarea id="message" class="form-control" name="message" rows="10" cols="50" 
          placeholder="Message *"></textarea> 
       <?php echo "<p class='text-danger'>$errMessage</p>";?> 
      </div> 
     </div> 
    </div> 
    <div class="row"> 
     <div class="col-md-3"> 
      <input type="submit" name="registerform" value="Submit" class="btn btn-default btn-lg button"> 
     </div> 
    </div> 
</form> 

セカンド購読フォームのHTMLコードは次のとおりです。

<div class="row"> 
    <div class="form-group"> 
     <div class="col-lg-12 col-md-12 col-sm-12"> 
      <?php echo $result; ?> 
     </div> 
    </div> 
</div> 

<div class="form-group"> 
    <?php echo $result; ?> 
</div> 

<form name="subscribe" method="post"> 
    <input type="text" name="name" id="name" class="form-control" placeholder="Name"> 
    <?php echo "<p class='text-danger'>$errName</p>";?> 
    <input type="text" name="email1" id="email" class="form-control" placeholder="Email"> 
    <?php echo "<p class='text-danger'>$errEmail</p>";?> 
    <div class="pull-right"> 
     <input type="submit" value="Subscribe" name="subscribe" class="btn btn-default btn-lg button"> 
    </div> 
</form> 
+0

フォームごとに異なるアクションURLを使用する – rokas

+0

フォームを送信できるボタン名に基づいて – Karthi

+0

PHPコードを正しくインデントする必要があります。読むのは難しいです。 –

答えて

0

フォーム1または2に固有の$で使用if(isset($valuefromtheform){$result= .... }、ケース1であなたの$結果を設定したり、すべての2

0

ファーストは、ちょうどこのようなコードを実行する:

if ($_GET['action'] == 'FORM ONE') { 
    //Code Here 
} else if($_GET['action'] == 'FORM TWO' { 
    //Code Here 
} 

または1つを

if (isset($_POST['submit'])) { 
    if ($_POST['submit'] == 'FORM ONE') { 
    //Code Here 
    } else if($_POST['submit'] == 'FORM TWO') { 
    //Code Here 
    } 
} 

第二には、ちょうど$result_oneに変数$resultの名前を変更:より多くの方法は、ちょうどこのようにボタンを提出して行うの値を変更しますnd $result_two。どちらのフォームも同じページ上で同じ変数を使用するためです。

0

あなたは以下で確認することができるよりもまた、あなたが

<input type="hidden" name="action" value="registration"> 

<input type="hidden" name="action" value="subscribe"> 

のようなフォーム内の非表示のタグを入れることができます

<?php 
    if(isset($_POST['registerform'])) 
{ 
//registration form code processing here 
} 
else if(isset($_POST['subscribe'])) 
{ 
//subscription form code goes here 
} 
?> 

ボタン名を提出することにより確認することができますコード:

<?php 

    if(isset($_POST['action']) && $_POST['action'] == 'registration') 
    { 
    //registration code goes here 
    } 
    else if(isset($_POST['action']) && $_POST['action'] == 'subscribe') 
    { 
    //subscription code goes here 
    } 
    ?> 
関連する問題