【问题标题】:Why does my form redirect to itself rather than redirect to the designated target?为什么我的表单会重定向到自身而不是重定向到指定的目标?
【发布时间】:2014-09-26 04:34:31
【问题描述】:

由于某种原因,单击提交后,我的页面只是重定向回一个空的表单。我似乎无法弄清楚原因。我唯一的猜测是它没有认识到“提交”是真的,只是通过 else 子句返回到自己。但是,我已将表单的操作切换到定义的 URL(例如http://google.com)并让它将我发送到目标。非常感谢任何帮助。

编辑:我已经能够可靠地表明这是我的表单标签的行为值不正确。

我执行了以下测试:我可以输入我的 if/else 语句的任一条件,并让该值在条件句下方回显。但是,如果我尝试在表单上方回显它,它不会返回任何内容,但我输入到表单中的值将在表单上方回显(例如,会议名称作为 $_POST['conferenceName'] 将在表单上方回显)。

<!DOCTYPE html>
<html>
    <head>
        <title>Conference Registration [This Page Not Yet Active]</title>
        <link rel="stylesheet" type="text/css" href="cmxform.css">
    </head>
    <body>
        <form method="post" action="<?php echo $action; ?>" class="cmxform">
        <fieldset>
            <legend>Example Conference Registration</legend>
            <ol style="list-style-type: none;">
                <li>
                    <label for="conferenceName">Applicant's Name<em>*</em></label> <input name="conferenceName" type="text">
                </li>
                <li>
                    <label for="conferenceAgencySchool">Agency School<em>*</em></label> <input name="conferenceAgencySchool" type="text">
                </li>
                <li>
                    <label for="conferenceAgencyAddress">Agency Address<em>*</em></label> <input name="conferencePhysicalAddress" type="text">
                </li>
                <li>
                    <label for="conferenceCity">City<em>*</em></label> <input name="conferenceCity" type="text">
                </li>
                <li>
                    <label for="conferenceState">State<em>*</em></label> <input name="conferenceState" type="text">
                </li>
                <li>
                    <label for="conferenceZip">Zip<em>*</em></label> <input name="conferenceZip" type="text">
                </li>
                <li>
                    <label for="conferencePhone">Phone<em>*</em></label> <input name="conferencePhone" type="text">
                </li>
                <li>
                    <label for="conferenceExtension">Extension</label> <input name="conferenceExtension" type="text">
                </li>
                <li>
                    <label for="conferenceNumberOfAttendees">Number of Attendees<em>*</em></label> <input name="conferenceNumberOfAttendees" type="text">
                </li>
                <li>
                    <label for="conferencePointOfContactName">P.o.C. Name<em>*</em></label> <input name="conferencePointOfContactName" type="text">
                </li>
                <li>
                    <label for="conferencePointOfContactPhone">P.o.C. Cell Phone<em>*</em></label> <input name="conferencePointOfContactPhone" type="text">
                </li>
                <li>
                    <label for="conferencePointOfContactEmail">P.o.C. Email<em>*</em></label> <input name="conferencePointOfContactEmail" type="text">
                </li>
                <li>
                    <label for="conferenceAdditionalAttendeeInfo">Additional Attendee(s) Info</label> 
                    <textarea name="conferenceAdditionalAttendeeInfo" style="height: 100px; width: 90%; max-width: 90%; min-width: 90%;" wrap="soft"></textarea>
                </li>
            </ol>
            <hr>
            <legend>Method of Payment<em>*</em></legend>
            <ol style="list-style-type: none;">
                <li>
                    <label><input name="payment" type="radio" value="Online">Online</label>
                </li>
                <li>
                    <label><input name="payment" type="radio" value="At The Door"> At the Door</label>
                </li>
                <li>
                    <label>Invoice # (If Using Invoice)</label><input name="invoiceNumber" type="text">
                </li>
            </ol>
            <hr>
        </fieldset><input name="submit" type="submit" value="Submit Application">
        </form>
        <?php
        if (isset($_POST["submit"]) &&
            (!empty($_POST["conferenceName"])) &&
            (!empty($_POST["conferenceAgencySchool"])) &&
            (!empty($_POST["conferencePhysicalAddress"])) &&
            (!empty($_POST["conferenceCity"])) &&
            (!empty($_POST["conferenceState"])) &&
            (!empty($_POST["conferenceZip"])) &&
            (!empty($_POST["conferencePhone"])) &&
            (!empty($_POST["conferenceNumberOfAttendees"])) &&
            (!empty($_POST["conferencePointOfContactName"])) &&
            (!empty($_POST["conferencePointOfContactPhone"])) &&
            (!empty($_POST["conferencePointOfContactEmail"]))
        )
        {
        $action="http://example.net/form-submit.php";
        }
        else
        {
        $action = '"<?php echo $_SERVER["PHP_SELF"]; ?>"';
        }
        ?>
    </body>
</html>

按照各位好心人提供的建议后的输出。

<!DOCTYPE html>
<!-- saved from url=(0044)http://example.net/conference-registration.php -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Conference Registration [This Page Not Yet Active]</title>
        <link rel="stylesheet" type="text/css" href="./Conference Registration [This Page Not Yet Active]_files/cmxform.css">
    </head>
    <body>
        <form method="post" action="" class="cmxform">
        <fieldset>
            <legend>Example Conference Registration</legend>
            <ol style="list-style-type: none;">
                <li>
                    <label for="conferenceName">Applicant's Name<em>*</em></label> <input name="conferenceName" type="text">
                </li>
                <li>
                    <label for="conferenceAgencySchool">Agency School<em>*</em></label> <input name="conferenceAgencySchool" type="text">
                </li>
                <li>
                    <label for="conferenceAgencyAddress">Agency Address<em>*</em></label> <input name="conferencePhysicalAddress" type="text">
                </li>
                <li>
                    <label for="conferenceCity">City<em>*</em></label> <input name="conferenceCity" type="text">
                </li>
                <li>
                    <label for="conferenceState">State<em>*</em></label> <input name="conferenceState" type="text">
                </li>
                <li>
                    <label for="conferenceZip">Zip<em>*</em></label> <input name="conferenceZip" type="text">
                </li>
                <li>
                    <label for="conferencePhone">Phone<em>*</em></label> <input name="conferencePhone" type="text">
                </li>
                <li>
                    <label for="conferenceExtension">Extension</label> <input name="conferenceExtension" type="text">
                </li>
                <li>
                    <label for="conferenceNumberOfAttendees">Number of Attendees<em>*</em></label> <input name="conferenceNumberOfAttendees" type="text">
                </li>
                <li>
                    <label for="conferencePointOfContactName">P.o.C. Name<em>*</em></label> <input name="conferencePointOfContactName" type="text">
                </li>
                <li>
                    <label for="conferencePointOfContactPhone">P.o.C. Cell Phone<em>*</em></label> <input name="conferencePointOfContactPhone" type="text">
                </li>
                <li>
                    <label for="conferencePointOfContactEmail">P.o.C. Email<em>*</em></label> <input name="conferencePointOfContactEmail" type="text">
                </li>
                <li>
                    <label for="conferenceAdditionalAttendeeInfo">Additional Attendee(s) Info</label> 
                    <textarea name="conferenceAdditionalAttendeeInfo" style="height: 100px; width: 90%; max-width: 90%; min-width: 90%;" wrap="soft"></textarea>
                </li>
            </ol>
            <hr>
            <legend>Method of Payment<em>*</em></legend>
            <ol style="list-style-type: none;">
                <li>
                    <label><input name="payment" type="radio" value="Online">Online</label>
                </li>
                <li>
                    <label><input name="payment" type="radio" value="At The Door"> At the Door</label>
                </li>
                <li>
                    <label>Invoice # (If Using Invoice)</label><input name="invoiceNumber" type="text">
                </li>
            </ol>
            <hr>
        </fieldset><input name="submit" type="submit" value="Submit Application">
        </form>

<script type="text/javascript" async="" src="./Conference Registration [This Page Not Yet Active]_files/si.js"></script></body></html>

【问题讨论】:

  • 靠近底部的那一行,不应该是$action = $_SERVER['PHP_SELF'];吗?
  • 粘贴渲染的html代码。
  • 在建议实施后添加了 HTML 输出。

标签: php html redirect forms http-post


【解决方案1】:

您将 PHP 回显用引号括起来,这在以下行中是错误的做法:

$action = '"<?php echo $_SERVER["PHP_SELF"]; ?>"';

此代码将仅返回 ""

改成

$action = $_SERVER["PHP_SELF"]; 

【讨论】:

    【解决方案2】:

    您可以在操作变量中使用“#”或分配 $_SERVER["PHP_SELF"]。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      • 2018-02-12
      • 1970-01-01
      • 2020-08-28
      • 2016-06-03
      • 2015-04-11
      相关资源
      最近更新 更多