【问题标题】:Hey, I'm making a contact form, which has to redirect to the same page after submitted嘿,我正在制作一个联系表单,提交后必须重定向到同一页面
【发布时间】:2012-11-07 06:45:55
【问题描述】:

当 url 是 localhost/school/portfolio/contact.php 时,它可以正常工作,但是当我使用获取参数 index.php?page=contact 时,它会重定向到 index.php

我使用的代码

$url = "http". ((!empty($_SERVER['HTTPS'])) ? "s" : "") . "://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
        header('Location: '.$url."?sent=yes");

我要补充什么?

【问题讨论】:

  • OOP 标签与此有什么关系?

标签: php forms


【解决方案1】:

这似乎是一个旧线程,但为了帮助该页面的未来访问者,值得添加关于$_SERVER['PHP_SELF'] 的安全问题的评论。

如果按照上面 cmets 中的建议将$_SERVER['PHP_SELF'] 添加到表单操作属性中,则您正在为 XSS 攻击设置自己。

一种解决方案是将$_SERVER['PHP_SELF'] 包装成htmlentities(),如下所示:

<form action="<?php echo htmlentities($_SERVER['PHP_SELF']) ?>" method="post">

这是一个很好的主题阅读:

http://www.html-form-guide.com/php-form/php-form-action-self.html

【讨论】:

    【解决方案2】:

    有几种方法可以做到这一点..(选择适合您的..)
    1)使用$_SERVER['PHP_SELF']
    2) 使用parse_url() 获取PHP_URL_PATH 和PHP_URL_QUERY 部分,并重定向到相对路径。
    但最好在会话中存储重定向链接。

    【讨论】:

      【解决方案3】:

      这应该会有所帮助:)

      <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
      

      否则,请参阅我在 "How to get base URL with PHP?" Question 上的回答以获得更多帮助:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 2016-01-15
        • 2017-06-26
        • 1970-01-01
        • 2019-04-02
        • 1970-01-01
        相关资源
        最近更新 更多