尝试在Facebook应用程序中提交表单时出现HTTP 404错误

时间:2011-02-28 20:29:42

标签: php html facebook http post

我正在建立一个Facebook调查,其中每个随机选择的朋友有多个问题。

我这样做的方法是显示一个有一个朋友和他/她的问题的php页面

并且当用户提交时,它应该发布到相同的php页面但是包含左边的数组以显示朋友ID。

这是我有这样的架构和相关代码:

home.php - 登录facebook

framing.php - 管理调查

$idArray = friends id array...
$pageToReturnTo = $_SERVER['PHP_SELF'];
$q_html = questionnaire($idArray,$pageToReturnTo);

q.php - 包含从db获取当前调查并将其操作为html的函数

function questionnaire($idArray,$pageToReturnTo){
...
$idArray_imploded = implode(",",$idArray)
$html .= "<form method='POST' action='".$pageToReturnTo."}?idArray=".$idArray_imploded."'>
....
return $html;
}

问题是facebook会返回如下错误:

Received HTTP error code 404 while loading http://www.mydomain.com/%7D?idArray=757010120%...
  1. 虽然我在framing.php中询问php_self,但我没有在生成的url中看到它,有人可以解释一下原因吗?
  2. 我该如何解决这个问题?如果没有,请你建议一个替代方案吗?
  3. 感谢百万!

1 个答案:

答案 0 :(得分:2)

您似乎在 } 之前的$ html中有一个额外的 ?idArray= 。那是你在Facebook返回的错误中看到的%7D

$html .= "<form method='POST' action='".$pageToReturnTo."?idArray=".$idArray_imploded."'>

此外,您应该检查以确保$_SERVER['PHP_SELF']实际包含值。看起来它可能在您的服务器上是空的。还有一些其他方法可以获取当前运行脚本的名称。对于测试,您只需将$_SERVER['PHP_SELF']替换为php脚本的硬编码名称,只是为了确保您的脚本实际正常工作。

// $pageToReturnTo = $_SERVER['PHP_SELF'];
$pageToReturnTo = 'myscript.php';