表格不能在Facebook中正确传递隐藏字段值,但在其他地方可以

时间:2012-07-13 11:55:46

标签: facebook forms symfony-forms

我有一个脚本,首先检查表单页是否是从GET参数引用的

$page['is_referred'] = isset($_GET['rfr']) ? 1 : 0;

然后将该设置值用作Symfony2表单中隐藏字段的值

$form = $app['form.factory']->createBuilder('form', $data)
    //....
    ->add('referred', 'hidden', array(
        'data' => $page['is_referred'],
    ))
    ->getForm();

然后

if ('POST' === $request->getMethod()) {

    $form->bindRequest($request);

    if ($form->isValid()) {

        //...
        $referred  = $form->get('referred')->getData();

        $msg_referer   = "Thanks from Referrer";
        $msg_noreferer = "Thanks";

        if( 1 == $referred ){
            $page['thanks'] = $msg_referer;
        }else{
            $page['thanks'] = $msg_noreferer;
        }
        //..
    }
}

?rfr在网址中时,主网站上的隐藏字段可以正常读取,但是当在Facebook中存在iframed并且存在?rfr时,会显示$ msg_noreferer消息。关于为什么会发生这种情况的任何想法?

编辑:我还应该提一下,当我查看源代码时,在Facebook中正确设置了字段值,但它似乎没有通过正确的方式发布数据

1 个答案:

答案 0 :(得分:0)

  

我还应该提一下,当我查看来源时,在Facebook中正确设置了字段值,但它似乎没有正确发布数据

我会说,该值已发布正常,但表单验证不接受它,因为隐藏字段会在验证时添加到表单中。

如果在处理从浏览器收到的POST请求时实际执行了向表单添加隐藏字段的代码,那么检查了吗?