прикрутить проверку по ip к кнопке

У меня все в одном файле=)

Кстати, тестила куку, оказалось, что цветок могу положить только один раз на один аккаунт. На другие аккаунты уже тоже не дает о_О
Кука видит страничку page.php?id=2 как целиковую page.php , не разбираясь в конкретных аккаунтах =(
 
Куки сохраняется в браузере независимо от аккаунта под которым зашли на сайт... Куки привязывается к адресу сайта, а не к аккаунту! Зайдите на сайт другим браузером или в имя куки внесите логин, под которым заходит пользователь (например $cookie_name=$user['name']."flover"), тогда можно будет зайти под разными аккаунтами с одного браузера.
Проверку проводить соответственно:

PHP:
$cookie_name=$user['name']."flover";
if (!isset($_COOKIE[$cookie_name]))
{
 echo "<input type="submit" name="flover" value="Цветок">";
}
 
В общем, чета не то, не пойму чего: нажимаю на кнопку, она исчезает. Однако если просто жать в браузере обновление страницы - будет накручиваться счетчик, как будто я опять нажала на страницу, хотя кнопки там уже нет =/ Даже куки чистить не надо...
Вроде как данные формы заново отправляются при обновлении странички =(
Что за ерунда?
 
Так и есть при обновлении страницы после отправки формы, форма будет отправляться повторно и браузер как правило просит подтвердить выполнение такой операции... Поэтому после обработки данных формы желательно переадресовывать пользователя на какую то левую страничку, ну например на страницу с благодарностью за голосование...
Хотя и здесь есть возможность помухлевать используя кнопку "вернуться" в браузере...
 
Переадресовывать крайне нежелательно - человек должен всетки остаться на той странице, где был, и увидеть результат своего нажатия =/
Хочу мухлевать, если как-то можно =)
 
А что мешает дважды переадресовать человека? Один раз на страницу с благодарностью за то, что он проголосовал, а второй раз уже со страницы с благодарностью на страницу с результатом голосования... Будут и овцы целы и волки сыты :)
 
Просто у меня на страничку с голосовалкой должны, по замыслу, заходить как зарегистрированные пользователи, так и нет. Туплю с двойным редиректом, чтобы зарегистрированные свои логины не утеряли =/ или делать двойную страничку редиректа для зарегенных/незарегенных... видимо, от жары туго соображаю =/
Попробую, в общем, двойной редирект.
Либо остается один вариант - как-то завязать кнопку на аякс. Или при аяксе тоже будет такая ерунда с отправкой? Хотя реализованы же как-то на тех же форумах кнопки а-ля "спасибо"...
 
В общем, остановилась на защите с помощью сессии. Но что-то не работает - данные вообще ни разу не отправляются, видимо, что-то не так написала. Проверьте пожалуйста =(

PHP:
<?php
session_start(); //запускаем сессию. Обязательно в начале страницы
include ("bd.php"); // соединяемся с базой, укажите свой путь, если у вас уже есть соединение
//запускаем куки
SetCookie("cookie",'1',time()+86400);
$_SESSION["uid"] = md5(uniqid(rand(), true));

PHP:
if (!isset($_COOKIE['cookie']))
{
echo "<center> <form method=\"post\" action=\"\"> <input type=\"hidden\" name=\"uid_post\" value=".$_SESSION['uid']."> <input type=\"submit\" name=\"flover\" value=\"Положить цветы\"> </form></center>";
}

PHP:
    if($_POST['flover']){
   //вычисляем ip
if (!empty($_SERVER['HTTP_CLIENT_IP']))
 {
   $sip=$_SERVER['HTTP_CLIENT_IP'];
 }
 elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
 {
  $sip=$_SERVER['HTTP_X_FORWARDED_FOR'];
 }
 else
 {
   $sip=$_SERVER['REMOTE_ADDR'];
 }  
//пишем лог кликов в БД
if($_SESSION['uid'] == $_POST['uid_post'])
{
$date = date('Y-m-d H:i:s');
     $query = "INSERT INTO logs (qid, ip, date) VALUES ('$pps', '$sip', '$date')";
    $result = mysql_query($query) or die(mysql_error());;
//+ блок подсчета количества кликов
     $sql = "UPDATE `characters` SET `flover`=`flover` + 1 WHERE id = $pps";
   mysql_query($sql,$db);
   //генерим новый $_SESSION["uid"]
        $_SESSION["uid"] = md5(uniqid(rand(), true));
}
}
 
Ну почему же? Все отсылается... в качестве проверки поставь после
if($_POST['flover']){
echo $_POST['flover'];
это будет индикатором того, что постпеременная дошла до обработчика...
вот только куки нужно не в начале файла ставить а внутри блока
if($_POST['flover']){.....}
иначе кнопка не будет отображаться даже если пользователь на неё не кликнет, а просто обновит страницу...
и откуда у тебя берётся переменная $pps?
 
т.е. с куками вот так:

PHP:
if($_POST['flover']){
SetCookie("cookie",'1',time()+86400);
   //вычисляем ip
if (!empty($_SERVER['HTTP_CLIENT_IP']))...итдитп?

$pps = $_GET['idchar'];

у меня страничка полностью называется tomb.php?idchar=айди.

А если все отсылается, то почему не пишет в БД? Даже с чистого компа зашла, чтобы уж точно проверить, зарегистрировалась заново, нажала на кнопку - кнопка исчезла, но значение так и осталось на нуле.
Если убрать сессии - значение плюсуется, айпишник записывается. Как только сессию добавляю - фиг мне =/

апд - переместила куки - они перестали работать. кнопка не убирается.

апд2 - методом эхо проверила полученные числа из $_POST['uid_post'] и $_SESSION['uid']. Они изначально уже разные о_О

апд3 - в общем, происходит все так: сессия генерирует число1. подставляет его в форму. в момент нажатия сабмита формы происходит перезагрузка страницы и сессия генерирует число2. и в обработке уже сравнивает пришедшее из формы число1 со своим числом2. и понятное дело они не совпадают =/ что делать-то? =((((
 
Назад
Сверху