Я действительно страдаю, пытаясь заставить этот вызов ajax работать, извините за масштабность этого вопроса.
Пользователь нажимает кнопку, это инициировало вызов ajax, чтобы добавить голосование в базу данных. Вот файл с именем "addvote.php":
<?php
session_start();
/* COOKIECHECK START */
setcookie('test', 1, time()+3600);
if(!isset($_GET['cookies'])){
header("Location:/thought/addvote.php?cookies=true&id=".$_GET['id']."&ans=".$_GET['ans']);
}
if(count($_COOKIE) > 0){
$cookies=1;
} else {
$cookies=0;
}
/* COOKIECHECK END */
if($cookies==1) {
$id=$_GET["id"];
$vId="v".$id;
if (((isset($_SESSION[$vId]) && ((time() - $_SESSION[$vId]) > 180))) || (!isset($_SESSION[$vId]))) {
// last vote was more than 3 minutes ago
$_SESSION[$vId] = time(); // update/create vote time stamp
//ADD VOTE TO DATABASE
}
else {
echo "You've voted on this already";
}
}
else {
echo "Please enable cookies to make your vote count";
}
?>
Что должно произойти: Пользователь проверяется, не включены ли ему файлы cookie. Если это так, им разрешается добавлять голоса, если не сказать им, чтобы включить куки. Если у них включены файлы cookie, и они еще не проголосовали - добавьте голос, если они уже проголосовали, сообщите им.
Что на самом деле происходит: Пользователь, который еще не проголосовал, нажимает кнопку, это инициирует вызов ajax, и голос успешно добавляется, пользователю не отправляется сообщение. Затем они переходят к другому вопросу и нажимают кнопку голосования, инициируется «addvote.php», но на этот раз возвращается «Вы уже проголосовали» И добавляет голос! Это заставляет меня думать, что вызов страницы выполняется дважды, сначала он добавляет голос, затем он пытается снова (и возвращает ошибку).
Может быть, это как-то связано с заголовком () ??
Затем каждый вопрос возвращает это же сообщение и добавляет голос - если я не подожду некоторое время, а затем он сработает над первым вопросом, и то же самое произойдет снова.
Примечание:
Переменные GET передаются вместе с заголовком, чтобы я знал, о каком вопросе они говорят, и нажали ли они «нет» или «да».
Опять же, извинения, этот вопрос ужасен.