表单提交后重定向用户


Redirect User after Form Submit

我有一个带有表单的PHP页面,在用户完成表单后,我想将他们重定向到一个新页面,在那里他们可以决定下一步行动。

我看到的建议涉及更改Form Action,但是我的代码已经有了<?php $_PHP_SELF ?>的Action。我是PHP的新手,所以也许我可以用PHP_Self以外的其他方法提交表单数据?

下面的代码,提前感谢您的帮助和任何关于简化我的代码的建议也欢迎

    <div class="Form_container">
        <form method="post" action="<?php $_PHP_SELF ?>" name="interactionForm">
        <hr>
        <span class="SectionHeader">Business Information</span><br>
        <hr>
        <br>
            DBA<br>
            <input class="largeInput" type="text" name="DBA" ID="DBA"><br>
            Use<br>
            <input class="largeInput" type="text" name="BusinessUse" ID="BusinessUse"><br>
            Street Address<br>
            <input class="largeInput" type="text" name="StreetAddress" ID="StreetAddress"><br>
            City<br>
            <input class="largeInput" type="text" name="City" ID="City"><br>
            State<br>
            <input class="largeInput" type="text" name="State" ID="State"><br>
            Zip<br>
            <input class="largeInput" type="number" min="1" max="99999" name="Zip" ID="Zip"><br>
            Number of Locations<br>
            <input class="largeInput" type="number" min="1" max="99999" name="NumberOfLocations" ID="NumberOfLocations"><br>
            Size (sq ft)<br>
            <input class="largeInput" type="number" min="1" max="9999999" name="LocationSize" ID="LocationSize"><br>
        <hr>
        <span class="SectionHeader">Contact Information</span><br>
        <hr>
        <br>
            Contact First Name<br>
            <input class="largeInput" type="text" name="contactFirstName" ID="contactFirstName"><br>
            Contact Last Name<br>
            <input class="largeInput" type="text" name="contactLastName" ID="contactLastName"><br>
            Contact Title<br>
            <input class="largeInput" type="text" name="ContactTitle" ID="ContactTitle"><br>
            Contact Phone Number<br>
            <input class="largeInput" type="text" name="contactPhoneNumber" placeholder="### - ### - ####" ID="contactPhoneNumber"><br>
            Contact Email<br>
            <input class="largeInput" type="text" name="contactEmail"><br>
            Initial Method of Contact<br>
            <select style='text-align:center;' class='largeInput' name='InitialContactMethod'>
                <option value="Phone">Phone</option>
                <option value="Door">Door</option>
                <option value="Referral">Referral</option>
            </select><br>
            <!-- Small Date picker --><!--Last Contact Date<br> 
            <input class="largeInput" type="date" name="lastContactDate"><br>-->
        <hr>
        <span class="SectionHeader">Showing Information</span><br>
        <hr>
        <br>
            Property<br>
            <select style='text-align:center;' class='largeInput' name='PropertyID'>
                <?php
                    $servername = "localhost";
                    $username = "usernameTest";
                    $password = "passwordTest";
                    $dbname = "databaseTest";
                    // Create connection
                    $conn = new mysqli($servername, $username, $password, $dbname);
                    // Check connection
                    if ($conn->connect_error) {
                        die("Connection failed: " . $conn->connect_error);
                    }   
                    //Option Field
                    $PropertySelect = "SELECT DISTINCT PropertyName, PropertyID FROM Property ORDER BY PropertyName DESC";
                    $PropertyOptions = $conn->query($PropertySelect);
                    if ($PropertyOptions->num_rows > 0) {
                        // output data of each row
                        while($row = $PropertyOptions->fetch_assoc()) {
                            echo "<option value='". $row["PropertyID"]. "'>" . $row["PropertyName"]. "</option><br><br>";   
                        }
                    } else {
                        echo "0 results";
                    }
                    mysqli_close($conn);
                ?>
            </select><br>
            Quality of Lead<br>
            <select style='text-align:center;' class='largeInput' name='QualityOfLead'>
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
                <option value="5">5</option>
                <option value="6">6</option>
                <option value="7">7</option>
                <option value="8">8</option>
                <option value="9">9</option>
                <option value="10">10</option>
                <option value="LOI">LOI</option>
                <option value="AtLease">At Lease</option>
                <option value="Executed">Executed</option>
            </select><br>
            Notes<br>
            <textarea name="Notes" cols="60" rows="10" maxLength="4000;"></textarea><br/>
            <!--<input type=hidden name="redirect" value="http://www.leasinglog.com/entrycomplete.php">-->

        <?php
     if(isset($_POST['add']))
    {
            $con=mysqli_connect("localhost","usernameTest","passwordTest","databaseTest");
            // Check connection
            if (mysqli_connect_errno())
              {
              echo "Failed to connect to MySQL: " . mysqli_connect_error();
              }
            if(! get_magic_quotes_gpc() )
        {
            //CONTACT FIELDS
            $contactFirstName = addslashes ($_POST['contactFirstName']);
            $contactLastName = addslashes ($_POST['contactLastName']);
            $ContactTitle = addslashes ($_POST['ContactTitle']);
            $contactPhoneNumber = addslashes ($_POST['contactPhoneNumber']);
            $contactEmail = addslashes ($_POST['contactEmail']);
            $InitialContactMethod = addslashes ($_POST['InitialContactMethod']);
            //RETAILER FIELDS
            $DBA = addslashes ($_POST['DBA']);
            $BusinessUse = addslashes ($_POST['BusinessUse']);
            $StreetAddress = addslashes ($_POST['StreetAddress']);
            $City = addslashes ($_POST['City']);
            $State = addslashes ($_POST['State']);
            $Zip = addslashes ($_POST['Zip']);
            $NumberOfLocations = addslashes ($_POST['NumberOfLocations']);
            $LocationSize = addslashes ($_POST['LocationSize']);
            //INTERACTION FIELDS
            $QualityOfLead = addslashes ($_POST['QualityOfLead']);
            $Notes = addslashes ($_POST['Notes']);
            $PropertyID = addslashes ($_POST['PropertyID']);
        }
        else
        {
            //CONTACT FIELDS
            $contactFirstName = $_POST['contactFirstName'];
            $contactLastName = $_POST['contactLastName'];
            $ContactTitle = $_POST['ContactTitle'];
            $contactPhoneNumber = $_POST['contactPhoneNumber'];
            $contactEmail = $_POST['contactEmail'];
            $InitialContactMethod = $_POST['InitialContactMethod'];
            //RETAILER FIELDS
            $DBA = $_POST['DBA'];
            $BusinessUse = $_POST['BusinessUse'];
            $StreetAddress = $_POST['StreetAddress'];
            $City = $_POST['City'];
            $State = $_POST['State'];
            $Zip = $_POST['Zip'];
            $NumberOfLocations = $_POST['NumberOfLocations'];
            //INTERACTION FIELDS
            $QualityOfLead = $_POST['QualityOfLead'];
            $Notes = $_POST['Notes'];
            $PropertyID = $_POST['PropertyID'];
        }
        //Begin Contact Insert
            mysqli_query(
                $con,"INSERT INTO Contact (ContactFirstName, ContactLastName, ContactTitle, ContactPhoneNumber, contactEmail, InitialMethodOfContact, CreatedDate) 
                VALUES ('" . $contactFirstName . "','$contactLastName', '$ContactTitle', '$contactPhoneNumber', '$contactEmail', '$InitialContactMethod', NOW())");
            $LastID = mysqli_insert_id($con);
        //Begin Retailer Insert
            $ContactIDValue = mysqli_insert_id($con);//Get the PrimaryKey which was generated in the above ContactInsert Statement
            mysqli_query(
                $con,"INSERT INTO Retailer (RetailerName, BusinessUse,  StreetAddress, City, State, ZipCode, NumberOfLocations, CreatedDate, ContactID) 
                VALUES ('$DBA', '$BusinessUse', '$StreetAddress', '$City', '$State', '$Zip', '$NumberOfLocations', NOW()," . $ContactIDValue . ")");
        //Begin Interaction Insert
            $RetailerIDValue = mysqli_insert_id($con);//Get the PrimaryKey which was generated in the above ContactInsert Statement
            mysqli_query(
                $con,"INSERT INTO Interaction (QualityOfLead, PropertyID, CreatedDate, Notes, ContactID, RetailerID) 
                VALUES ('$QualityOfLead', '$PropertyID', NOW(), '$Notes'," . $ContactIDValue . ", " . $RetailerIDValue . ")");
            mysqli_close($con);
    }
        ?>
                <a href = "http://leasinglog.com/" target="_blank"><input name="add" type="submit" id="add" value="Finish" class="button"></a>
                <h4 style="text-align:center; font-size: 12px; font-weight:200;"><a href="dashboard.php" action="_toBlank"><u><i>Cancel</i></u></a></h4>
            </form>
            <br>
            <hr style="width:400px; height:10px;">
        </div>   

<?php $_PHP_SELF ?>的意思是当前文件,即包含表单的文件,在表单提交时被调用。因此,您可以保持不变,然后在页面顶部添加重定向代码,并在表单提交时触发它。请注意,必须在任何其他输出之前调用标头重定向,例如html。

if ($_SERVER['REQUEST_METHOD'] == 'POST'){
 //add any other checks such as form input values
 header('Location: http://myhost.com/mypage.php');
 exit;
}

或者将表单操作更改为要在其中加载和处理表单输入的任何其他.php。

<form method="post" action="some_other.php" name="interactionForm">

更新:

header()需要先于任何输出,因此:

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
     //add any other checks such as form input values
     header('Location: http://myhost.com/mypage.php');
     exit;
    }
    ?>
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
<head>
<meta charset="utf-8" />
<title>New Interaction</title> <!--Declare CSS and JavaScript-->
<link rel="stylesheet" type="text/css" href="RealtyCRM_Style.css">
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="jquery.resmenu.min.js"></script>
</head>

您还可以更新php设置以查看错误。这将特别告诉你是否在重定向之前输出数据——除其他外,这将是你的第一个警告。只需确保在完成时移除ini_set()

<?php
    ini_set('display_errors', '1');
    if ($_SERVER['REQUEST_METHOD'] == 'POST'){
         //add any other checks such as form input values
         header('Location: http://myhost.com/mypage.php');
     exit;
   }
  ?>