#php #facebook #forms
#php #Facebook #формы
Вопрос:
Я создал приложение Facebook для клиента, это приложение позволяет пользователю вводить свои данные и угадывать фигуру, которую нужно ввести в соревнование. Приложение запускается через iframe.
Есть ли какой-либо возможный способ разрешить пользователю отправлять форму максимум 5 раз в течение 24 часов (желательно по профилю Facebook или 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;
}
}
?>
Ответ №1:
Очевидным решением является регистрация отправки формы в базу данных. Для каждой отправки вы регистрируете время и идентификатор пользователя (IP-адрес, учетная запись Facebook и т. Д.). Эти данные можно использовать для проверки того, сколько раз пользователь отправлял форму за последние 24 часа. Если это более X раз, вы не сохраняете данные и не информируете пользователя.
Но это решение предполагает, что у вас есть доступ к базе данных.
Комментарии:
1. Извините, не сработает, так как мне нужно экспортировать его прямо в csv. У нас здесь есть настройка системы, которая автоматически выберет победителя и т. Д… Мне нужен способ сделать это без использования базы данных…
2. Я понимаю, что вам нужны данные в виде файла CSV, но вы можете отделить ведение журнала отправки формы от сбора данных. Вы проверяете базу данных, действительна ли форма отправки, и если форма отправки действительна, вы записываете данные в файл CSV, как вы делаете сейчас. Если пользователь уже отправлял форму 5 раз за последние 24 часа, вы просто не записываете в файл CSV.