【问题标题】:Form in Facebook iFrame Tab: $_SERVER["REQUEST_METHOD"] == "POST" returns TRUEFacebook iFrame 选项卡中的表单:$_SERVER["REQUEST_METHOD"] == "POST" 返回 TRUE
【发布时间】:2013-08-04 23:08:44
【问题描述】:

所以我一直在创建一个将一些信息写入数据库的表单。它应该集成在 facebook 标签中。到目前为止它工作得很好,但我在检查表单提交时遇到了一些问题。我就是这样做的:

protected function isFormSubmission() {
   return ($_SERVER["REQUEST_METHOD"] == "POST");
}

我的整个表单检查是这样工作的:

public function normForm() {
    if ($this->isFormSubmission()) {
        if ($this->isValidForm()) {
            $this->processForm();
        }
        else {
            $this->printForm();
        }
    }
    else {
        $this->printForm();
    }
}

我的问题是 Facebook 以某种方式在加载选项卡时立即为 ($_SERVER["REQUEST_METHOD"] == "POST") 返回 TRUE。这意味着函数 isValidForm() 返回 FALSE 并显示所有用户输入错误... 当我从 FB 独立加载页面时,它工作正常...

这里是页面的链接:https://ssl-account.com/sparfuchs.cash-back-info.com/sparfuchs_werden/index.php

为什么 FB 为 ($_SERVER["REQUEST_METHOD"] == "POST") 返回 TRUE,我该如何避免这种情况?

非常感谢,

朱利安

【问题讨论】:

    标签: php facebook forms tabs request


    【解决方案1】:

    嘿...我真的不知道为什么(可能是缓存、结构、外部应用程序策略等)。为避免这种情况,请使用带有令牌的隐藏输入。此外,最好使用一些“反”CSRF((不是完全安全的 CSRF,但它是一种针对的解决方案)

    【讨论】:

    • 感谢我的解决方案是:protected function isFormSubmission($token) { return ($_SERVER["REQUEST_METHOD"] == "POST") && isset($_SESSION[$token]) && !$this->isEmpty($token); }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多