表单未在Facebook中正确传递隐藏字段值,但在其他地方可以
我有一个脚本,它首先检查表单页面是否从GET参数引用表单未在Facebook中正确传递隐藏字段值,但在其他地方可以,facebook,forms,symfony-forms,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[
$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();
然后
当url中有?rfr
时,主站点上的隐藏字段可以读取,但当在Facebook中设置iframed并且出现?rfr
时,会显示$msg_noreferer消息。你知道为什么会这样吗
编辑:我还应该提到,当我检查源代码时,Facebook中的字段值设置正确,但它似乎没有正确发布数据
我还应该提到,当我检查源代码时,Facebook中的字段值设置正确,但它似乎没有正确地发布数据
我想说的是,值已经发布了,但是表单验证不接受它,因为在验证时隐藏字段不会添加到表单中
如果在处理从浏览器收到的POST请求时,向表单中添加隐藏字段的代码实际上正在执行,您是否检查过这一点?大量密集搜索表明Facebook不允许发布隐藏的表单字段。但是,无法验证它。这绝对是错误的。iframe内部发生的事情与Facebook无关。
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;
}
//..
}
}