【问题标题】:PHP form redirects before checking inputPHP表单在检查输入之前重定向
【发布时间】:2012-07-26 08:49:08
【问题描述】:

我在这个例子中使用的表单是我使用了一段时间的回收表单,因为我没有知识或时间来学习 PHP。它有效,但并不完全像我想要的那样。例如,当有人在表单中输入姓名和电子邮件并提交时,它应该将用户重定向到 freepage.html。但是,它会使用已输入的信息“闪烁”实际的“freepage.php”。通常会持续 1-2 秒,然后重定向开始。

我遇到的另一个问题是,如果用户没有输入信息,“所有字段都是强制性的”警告会显示在 freepage.php 上,只是这一次该页面在屏幕上没有“闪烁”一秒钟,它会停留在那里显示警告并且修复它的唯一方法是单击浏览器中的“返回”按钮。

谁能指出我怎样才能使这个表格更好一点......

这就是 php 文件的样子

            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <script type="text/javascript" src="jquery-1.3.2.min.js"></script>
            <script src="http://www.google.com/jsapi"></script>
            <script type="text/javascript">google.load("jqueryui", "1.5.2");</script>
            <? 
        if($_POST['name']!="" and $_POST['email']!=""){


    $headers    = "From: Sender";
    $message    = 
            strtoupper($_POST['name'])."
            ".strtoupper($_POST['email'])."
            ";
    echo str_replace("\n","<br />", $message);
    $headers2   = "From: Sender <info@gmail.com>\nContent-Type: text/plain;                               charset=UTF-8; format=flowed\nMIME-Version: 1.0\nContent-Transfer-Encoding: 8bit\nX-Mailer: PHP\n";
    $message2   = "
    Hello ".($_POST['name'])."  

            ";

    mail("$_POST[email]", "Thanks for entering", $message2, $headers2);


    $myFile = "info-file.txt";
    $fh = fopen($myFile, 'a') or die("can't open file");
    $stringData =            "$_POST[name]*$_POST[email]*".$_SERVER['REMOTE_ADDR']."*".date("d-m-Y H:i")."
             ";
    fwrite($fh, $stringData);
    fclose($fh);


    ?>

    echo '<script>document.location="freepage.html"; </script>';

    <?
} else {
    echo "All fields are mandatory";
    ?>
    <script language="javascript">
    alert("All fields are mandatory");
    </script>
    <?
}
    ?>

表格是这样的

        <form method="post" action="freepage.php" name="popups" id="popups">
        <fieldset>
        <label for=name accesskey=U ><span class="required">*</span> Name</label>
        <br />
        <input name="name" type="text" id="name" size="30" value="" /> 
        <br />
        <label for=email accesskey=E ><span class="required">*</span> Email</label>
        <br />
        <input name="email" type="text" id="email" size="30" value="" />
        <br />
        <input type="submit" value="Submit" id="submit" name="submit" class="button" />
        </fieldset>  
        <br />
        </form>

【问题讨论】:

  • “因为我没有知识或时间来学习 PHP”所以请人。
  • 感谢@Dagon 感谢您的帮助,非常聪明的回答。

标签: php forms redirect


【解决方案1】:

之所以“闪烁”是因为你必须等待服务器发送邮件才能重定向。

对于警告:“所有字段都是必填的”。

  • 如果表单在同一页面 (freepage.php) 上,该表单将起作用 事件(如果显示)。
  • 如果表单不在同一页面上,只需添加重定向(html 链接 或 javascript 位置)或在 php 代码后插入表单。

【讨论】:

  • 感谢您的回复。抱歉名​​称令人困惑,但页面用户也将被重定向为“freepage.html”,freepage.php 只是表单工作的代码。我了解“闪烁”部分,但有没有办法在重定向开始之前显示必填字段警告?
  • 通常 php 代码与表单在同一页面上,因此带有“echo”的警告位于屏幕顶部,无需重定向。在您的代码中有一个 javascript 警报,因此只需在警报之后添加一个重定向,当用户单击“确定”时,他将被重定向。 else { echo "所有字段均为必填项"; ?>
【解决方案2】:

在 for 循环中使用空函数检查字段是否为空,然后在表单操作中使用 php
self 然后如果检查部分在内部完成,如果使用标题重定向到其他页面

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-17
    • 2016-08-06
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 2019-07-26
    • 2011-01-19
    • 2015-02-24
    相关资源
    最近更新 更多