【问题标题】:Convert $_GET variables to $_POST and redirect page将 $_GET 变量转换为 $_POST 并重定向页面
【发布时间】:2011-10-19 22:54:40
【问题描述】:

我通过 $_GET 在电子邮件中读取的链接发送信息(即电子邮件中的链接形式为 http://website.com?dogs=cats")。但我希望网站 URL 不显示附件。所以我试过了:

  • 链接到将 $_GET 保存在隐藏表单字段中的页面,然后自动提交表单;问题是后退按钮会返回到这个中间页面
  • 同上,在新选项卡中打开中间页面,然后让表单加载另一个新选项卡 (_blank),然后自行关闭;工作正常,除了在 IE 中这些是窗口,这很烦人

我正在考虑将 $_GET 结果保存在 cookie 中,然后使用 header() 重定向页面,然后提取数据并使 cookie 过期。

有没有更简单的方法可以忽略?

【问题讨论】:

    标签: php post header get


    【解决方案1】:

    如何开始一个会话并将它们存储到 $_SESSION 变量中?

    【讨论】:

    • 不敢相信我忘记了使用会话。谢谢。
    【解决方案2】:

    以下是如何在链接上创建隐藏参数的示例实现。这会在链接上设置一个自定义处理程序,它将隐藏的参数复制到表单中并通过发布请求发送。它不是会话的替代品,但它可以有自己的用途。

    <form id="form" method="post" action="">
       <input id="dogs" type=hidden name="dogs">
    </form>
    
    <a href="otherpage.php" data-dogs="cats">Sample link</a>
    
    <script>
        $(function(){
            $('a').click(function(ev){
                ev.preventDefault();
                $('#dogs').val($(this).attr('data-dogs'));
                $('#form').attr('action',$(this).attr('href')).submit();
            }
        });
    </script>
    

    【讨论】:

    • 谢谢 romaninsh。使用任何 JavaScript 的问题在于下一页的后退按钮会导致此中间页面而不是返回电子邮件。
    • 是的。它还有一个讨厌的习惯,要求重新提交 POST 数据。但我想我会添加这个技巧。
    猜你喜欢
    • 2013-07-24
    • 2014-08-26
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多