Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何验证用户的facebook ID以防止再次提交_Php_Javascript_Facebook_Validation - Fatal编程技术网

Php 如何验证用户的facebook ID以防止再次提交

Php 如何验证用户的facebook ID以防止再次提交,php,javascript,facebook,validation,Php,Javascript,Facebook,Validation,我有一个使用php的图片比赛,它允许你进入上传或进入投票。它也只允许一个facebook用户最多上传一张图片到活动中 我如何用MySQL数据验证他们的facebook ID,使已经提交过一次(根据fbID)的同一用户无法再次单击“输入竞赛”按钮,单击时,会弹出一个消息框,显示“您已经提交过一次” 希望你们能给我一些建议。感谢并感谢您一直以来对我的帮助。只需将Facebook用户ID与照片提交一起存储在数据库中即可 我假设您将有一个包含照片数据的表;创建一个新字段来存储Facebook用户ID。然

我有一个使用php的图片比赛,它允许你进入上传或进入投票。它也只允许一个facebook用户最多上传一张图片到活动中

我如何用MySQL数据验证他们的facebook ID,使已经提交过一次(根据fbID)的同一用户无法再次单击“输入竞赛”按钮,单击时,会弹出一个消息框,显示“您已经提交过一次”


希望你们能给我一些建议。感谢并感谢您一直以来对我的帮助。

只需将Facebook用户ID与照片提交一起存储在数据库中即可

我假设您将有一个包含照片数据的表;创建一个新字段来存储Facebook用户ID。然后,当用户访问你的应用程序或其他应用程序时,检查他们的ID是否已经在数据库中。如果是这样,不要给他们上传表单,而是给他们一条错误消息;如果没有,允许他们上传

编辑:签出。这里应该有一个示例,用于获取用户查看应用程序页面的详细信息,其中包括Facebook ID。然后,您可以在脚本中使用它

<?php

require 'facebook.php';

$facebook = new Facebook(array(
    'appId'  => 'YOUR_APP_ID',
    'secret' => 'YOUR_APP_SECRET',
));

$user = $facebook->getUser();

if ($user) {
    try {
        $user_profile = $facebook->api('/me');
    }
    catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
    }
}

if ($user) {
    $logoutUrl = $facebook->getLogoutUrl();
}
else {
    $loginUrl = $facebook->getLoginUrl();
    echo "<script>top.location.href='$loginUrl';</script>";
    exit;
}

// if we're here, the user has successfully authenticated
// you now have access to their profile in $user_profile

$userId = intval($user_profile['id']);

// logic goes here to query database and check if $userId
// has already been used to submit a photo or not

您需要对用户进行身份验证并获取FB cookie

请参阅文档


一旦你有了id,你就可以从数据库中提取它,并用它来检查用户是否提交了。

嗨,martin,是的,我在mySQL中有一个字段来存储facebook用户id,称为“facebookID”。我理解如何检查它的流程,但问题是我不是一个好的编码员,我尝试的所有if-else语句都没有很好地工作,所以你能给我一个工作示例,说明我如何可以这样做,以便将来如果我再次遇到这样的任务,我也可以参考它吗?非常感谢您的回复,也很抱歉给您带来麻烦。请注意:隐藏的fbID字段包含值=是我秘密获取他们fbID的方式。再次感谢您,您不需要在页面上删除他们的ID,因为他们可以在提交表单时使用Web Inspector将其更改为模仿其他人。我想我应该先解释一下。您在上面编辑的代码,我已经将其存储在一个名为fbmain.php的php文件中。流程如下:例如,一个新用户进入我的应用程序,点击“进入竞赛”按钮。之后,他填写了表格并成功提交。所以,他的记录已经插入我的数据库。当他被重定向到主页并尝试单击“进入竞赛”按钮时,会出现一个验证,说明他已经提交了一次,因此无法再次提交。因此,我真正需要的是if。。我的php页面上的else语句,以便使用存储在mySQL中的数据验证访问我的应用程序的帐户的facebook ID。然后,如果在mySQL数据库中找不到该用户的facebook ID,请在单击按钮时允许访问,否则,显示错误消息并阻止他输入。顺便说一下,感谢您抽出时间在上面输入脚本。