我为客户构建了一个Facebook应用程序,该应用程序允许用户输入他们的详细信息并猜测要输入比赛的数字。该应用程序通过iframe运行。
是否有任何可能的方法只让用户在24小时内最多提交5次表格(最好是通过脸谱资料或IP地址),如果他们试图进入第6次,则回复错误。我有一个PHP脚本,它收集数据并将其导出到csv文件。
PHP表单代码:
<?php
if($_POST['formSubmit'] == "Submit")
{
$errorMessage = "";
if(empty($_POST['formName']))
{
$errorMessage .= "<li>You forgot to enter your name.</li>";
}
if(empty($_POST['formTown']))
{
$errorMessage .= "<li>You forgot to enter your town.</li>";
}
if(empty($_POST['formEmail']))
{
$errorMessage .= "<li>You forgot to enter your email.</li>";
}
$varName = $_POST['formName'];
$varTown = $_POST['formTown'];
$varAge = $_POST['formAge'];
$varEmail = $_POST['formEmail'];
$varOne = $_POST['hidden-one'];
$varTwo = $_POST['hidden-two'];
$varThree = $_POST['hidden-three'];
$varFour = $_POST['hidden-four'];
$varFive = $_POST['hidden-five'];
if(empty($errorMessage))
{
$fs = fopen("mydata.csv","a");
fwrite($fs,"\n" . $varName . ", " . $varTown . ", " . $varAge . ", " . $varEmail . ", " . $varOne . $varTwo . $varThree . $varFour . $varFive);
fclose($fs);
header("Location: thankyou.php");
exit;
}
}
?>
答案 0 :(得分:1)
显而易见的解决方案是将表单提交记录到数据库。对于每个提交,您记录时间和用户的标识符(IP地址,Facebook帐户等)。此数据可用于检查用户在过去24小时内提交表单的次数。如果超过X次,则不存储数据并通知用户。
但是此解决方案假设您可以访问数据库。