【问题标题】:multiple form in one page in phpphp中的一页中的多个表单
【发布时间】:2017-01-06 19:00:27
【问题描述】:
  1. 我在同一页面中有两个 php 代码和两个 HTML 代码,但是当我提交第一个表单时,问题就在这里,但在第二个表单中显示警报消息也与第一个表单警报消息相同。

  2. 第二个订阅表单将不起作用。 我认为 echo $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 = "xyz@domain.com";
    $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 = "abc2@domain.com";
    $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>

【问题讨论】:

  • 对每个表单使用不同的操作 url
  • 您可以根据按钮名称提交表单
  • 您应该正确缩进您的 PHP 代码。有点难读。

标签: javascript php html forms


【解决方案1】:

使用if(isset($valuefromtheform){$result= .... } 和特定于表格 1 或 2 的 $ 来设置您的 $result 以适应情况 1 或 2

【讨论】:

    【解决方案2】:

    您可以通过提交按钮名称检查

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

    或者,您可以在表单中放置一个隐藏标签,例如

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

    和

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

    您可以通过以下代码检查:

    <?php
    
        if(isset($_POST['action']) && $_POST['action'] == 'registration')
        {
        //registration code goes here
        }
        else if(isset($_POST['action']) && $_POST['action'] == 'subscribe')
        {
        //subscription code goes here
        }
        ?>
    

    【讨论】:

      【解决方案3】:

      首先做这样的代码:

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

      或者另一种方法只是更改提交按钮的值并这样做:

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

      第二个刚刚把变量$result的名字改成了$result_one和$result_two。因为两种形式在同一页面上使用相同的变量。

      【讨论】:

        猜你喜欢
        • 2021-09-28
        • 1970-01-01
        • 2012-07-05
        • 1970-01-01
        • 1970-01-01
        • 2016-02-03
        • 2016-08-24
        • 2020-06-24
        • 2012-02-10
        相关资源
        最近更新 更多