1

我有一个脚本,它首先检查表单页面是否是从 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;
        }
        //..
    }
}

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

编辑:我还应该提到,当我检查源时,在 Facebook 中正确设置了字段值,但它似乎并没有正确发布数据

4

1 回答 1

0

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

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

您是否检查过这一点,如果在处理从浏览器收到的 POST 请求时实际上正在执行将隐藏字段添加到表单的代码......?

于 2012-07-13T17:30:38.917 回答