我创建了一个Facebook应用程序,一旦用户喜欢一个页面,他们就会被发送到一个显示页面,其中包含一个竞赛的参赛表格,
是否有方法可以使用户只能提交一次表单?
答案 0 :(得分:1)
是否有方法可以使用户只能提交表单 一次?
我认为您首先需要对用户进行身份验证(Facebook会为您执行此操作吗?)。我假设你正在使用like下面的内容:
<?php
$app_id = "YOUR_APP_ID";
$canvas_page = "YOUR_CANVAS_PAGE_URL";
$auth_url = "https://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($canvas_page);
$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
if (empty($data["user_id"])) {
echo("<script> top.location.href='" . $auth_url . "'</script>");
} else {
echo ("Welcome User: " . $data["user_id"]);
}
?>
然后可以授权用户($data["user_id"]
)是否是新用户继续。如果没有则停止。您可以通过在数据库中存储$data["user_id"]
来跟踪用户。
答案 1 :(得分:0)
这是一个非常含糊的问题。
如果您真的只是想阻止他们多次提交表单(通过在提交按钮上单击多次),您可以使用一个简单的Javascript来禁用单击按钮时(或表单是提交了另一种方式,例如按下回车键/返回键。)
但是,我认为不是阻止他们多次提交表单,而是真的只想忽略除第一次提交之外的所有内容。您需要一种方法来唯一地识别该用户/机器 - 您如何做到这一点实际上取决于您可以自己提供哪些信息。
一种可能的解决方案是使用具有独特价值的cookie,持续一段时间(一天,一周,一个月或一年) - 选择您认为适合您使用的任何内容;如果竞争仅适用于一周,你不需要一个持续一年的cookie,例如)。
当他们第一次提交表单时,跟踪一个条目来自机器并且cookie包含该值,并忽略具有相同cookie值的任何后续条目。
显然这不是完全安全的 - 他们可以删除他们的cookie,或修改这个特定cookie的价值,再次进入,但很多用户不会这样做。如果他们使用多个Web浏览器,他们也可以多次输入。如果你还有别的东西