【问题标题】:HTML Redirect To Original PageHTML 重定向到原始页面
【发布时间】:2009-11-13 12:18:14
【问题描述】:

我有一个包含 PHP 代码的单页网站。一旦用户按下“发送”,这会将信息发送到我的电子邮件,然后显示一个消息框,说明该操作对用户来说是成功的 - 太好了。

消息框关闭后,网站停留在 website.com/report.php。有没有办法将其重定向回原始页面。

另外,有什么方法可以改变弹出的消息框中的图标吗?这是我拥有的代码: <script language="JavaScript">alert("Your request has been sent. I will contact you soon!");</script>

谢谢。

【问题讨论】:

    标签: php html


    【解决方案1】:

    查看window.openwindow.location

    把它放在你的 alert() 之后

    http://www.tizag.com/javascriptT/javascriptredirect.php

    另外,回答您的消息框图标问题:,它取决于浏览器且不可修改。

    如果你想这样做,你需要用 html/css 和 javascript 来伪造它。

    【讨论】:

    • 确保为那些没有 javascript 的用户优雅地降级。您不希望未启用 JS 的用户卡在空白页面上 :)
    • 虽然我会完全避免使用 javascript,但在发送页面内容后询问如何重定向时,您唯一(到目前为止)不建议使用标头位置。
    • 并在不使用 javascript 的情况下使用定时延迟导致自动重定向,请查看 http-equiv="refresh" 的元标记 tipsntutorials.com/tips/HTML/42>
    【解决方案2】:
        <script language="JavaScript">
    alert("Your request has been sent. I will contact you soon!");
    window.location.assign("http://website.com");
    </script>
    

    如果你想改变提示框中的图标或者让它看起来有点花哨,你可以试试YUI dialog

    【讨论】:

      【解决方案3】:

      使用此代码显示警报:

      function displayAlert(message, redirect) {
          alert(message);
          window.location.href = redirect;
      }
      

      然后,您可以使用如下代码:

      displayAlert("This is the message", "http://redirect.the/user/here");
      

      【讨论】:

        【解决方案4】:

        使用 php header 命令

        <?php
        header("Location: http://www.example.com/"); 
        exit;
        ?>
        

        【讨论】:

        • 很好,你比我早了 15 秒。
        • 此方法不会显示警报。
        【解决方案5】:

        要在 PHP 中进行重定向,请为此使用 header("Location: page.php");。在此之前和之后,您的代码不应向响应发送任何其他输出。最终使用exit(); 来终止脚本。

        如果您需要在此页面之前请求的页面,那么您最好将其 URL 作为链接的请求参数包含到 report.php 并将其用作重定向目标。例如

        <a href="report.php?referrer=<?php echo $_SERVER['REQUEST_URI']; ?>">report</a>
        

        并在 report.php 中将其作为隐藏输入字段传递:

        <input type="hidden" name="referrer" value="<?php echo getParam("referrer"); ?>">
        

        提交报告后:

        header("Location: " . getParam("referrer") . ")"; // getParam() returns sanitized GET parameter.
        

        另一种方法是为此使用 $_SERVER['HTTP_REFERER'] 标头(是的,包括错字),但这并不可靠,因为它可能被客户端禁用或欺骗。

        【讨论】:

          【解决方案6】:

          我相信一个更优雅的解决方案是简单地向用户显示一个确认页面(而不是一个警告框),并在那里放置一个指向上一页的链接。

          这至少适用于所有用户。

          对于那些使用 javascript 的用户,一个小小的 Ajax (jQuery) 可以为您提交表单,并显示确认信息。所有这些都无需离开用户所在的页面(无需任何花哨的重定向)。

          【讨论】:

            【解决方案7】:

            在你的 php 结束时,使用这个:

            header('location: home.php');
            

            这将导致浏览器加载原始页面。

            我不相信标准的警告框可以更改,除了消息。您也无法更改标题或按钮。

            弗兰克

            【讨论】:

            • 此方法要么不显示警报,要么不实际重定向。要么在页面内容(和警报 JS)之前发送标头,导致页面在没有警报的情况下被重定向,或者如果在设置标头之前已发送页面内容,则标头将没有任何效果。
            • 啊,我假设第一页触发了警报,而不是处理脚本。我想他可以缓冲输出……但这听起来比在alert() 之后使用window.location() 要麻烦得多。
            • header 的 PHP 手册页中所述,它必须在任何其他输出之前使用。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-02-21
            • 1970-01-01
            • 2011-01-14
            • 2016-05-07
            • 2013-12-05
            • 2012-03-16
            相关资源
            最近更新 更多