За последние 24 часа нас посетили 18446 программистов и 1704 робота. Сейчас ищут 890 программистов ...

Запрет вызова скрипта многократно

Тема в разделе "PHP для новичков", создана пользователем Brothersssddsss, 1 июн 2010.

  1. Brothersssddsss

    Brothersssddsss Активный пользователь

    С нами с:
    17 мар 2010
    Сообщения:
    9
    Симпатии:
    0
    Здравствуйте!
    У меня такая проблема сделал рейтинг с помощью AJAX и PHP но есть одна проблема…

    Вызов делается так:

    Нажатием на +5 например делается вызов функции JavaScript`ом при нажатии на ссылку:

    <a href=”javascript: plus_reiting(5);”>+5</a>

    Этот скрипт посылает запрос PHP скрипту, который записывает в базу +5 и записывает, что этот человек голосовать уже не может.

    Так вот проблема в том, что если эту строчку вставить в адресную строку javascript: plus_reiting(5) и вызвать 10 раз, то он вызовется 10 раз и приплюсует 50 а то что перед плюсованием идёт проверка голосовал он уже или нет не срабатывает так как то что он уже голосовал записывается когда он приплюсует 50 баллов (наверное скрипт успевает приплюсовать прежде чем запишется в базу информация о том что он уже голосовал).

    Подскажите, как можно сделать, чтобы в базу записывалось только 1 нажатие, если он нажмёт даже 4 раза?

    Надеюсь понятно, кто с этим сталкивался точно поймёт… )))
     
  2. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    в скрипте проверку перед записью сделать.
     
  3. Brothersssddsss

    Brothersssddsss Активный пользователь

    С нами с:
    17 мар 2010
    Сообщения:
    9
    Симпатии:
    0
    Какую проверку? на то голосовал ли он или нет? она там есть...
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    может лочить таблицу? =) на крайняк
     
  5. Superk

    Superk Активный пользователь

    С нами с:
    5 фев 2010
    Сообщения:
    32
    Симпатии:
    0
    в сессию пиши дату голосования
     
  6. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    не там она где надо.
    исходний давай сюда
     
  7. Brothersssddsss

    Brothersssddsss Активный пользователь

    С нами с:
    17 мар 2010
    Сообщения:
    9
    Симпатии:
    0
    он Вам не поможет...

    Код файла reiting.php который вызывает AJAX:

    Код (Text):
    1. $stroka_reiting_golos = mysql_query("SELECT * FROM `$table_reiting` WHERE `user_nom`='$id' && `photo_nom`='$p'");
    2.  
    3. $kol_reiting_golos = mysql_num_rows($stroka_reiting_golos);
    4.  
    5. if ($kol_reiting_golos == 0)
    6. {
    7. mysql_query("UPDATE `$table_photo` SET `reiting`=reiting+5 WHERE `photo_nom`='$p'");
    8. }
    [/code]
     
  8. Spirtt0

    Spirtt0 Активный пользователь

    С нами с:
    29 ноя 2009
    Сообщения:
    15
    Симпатии:
    0
    Может просто попробовать сделать "в лоб" проверку что рейтинг не может быть больше какого то максимального значения + выделить переменную которая будет также увеличиваться с каждым кликом и если она больше 1 выдавать ошибку, или просто поделить рейтинг на число кликов и получить искомую оценку ?
     
  9. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Где апдейтится таблица $table_reiting?
     
  10. Brothersssddsss

    Brothersssddsss Активный пользователь

    С нами с:
    17 мар 2010
    Сообщения:
    9
    Симпатии:
    0
    $stroka_reiting_golos = mysql_query("SELECT * FROM `$table_reiting` WHERE `user_nom`='$id' && `photo_nom`='$p'");

    $kol_reiting_golos = mysql_num_rows($stroka_reiting_golos);

    if ($kol_reiting_golos == 0)
    {
    mysql_query("UPDATE `$table_photo` SET `reiting`=reiting+5 WHERE `photo_nom`='$p'");
    }

    mysql_query("INSERT INTO `$table_reiting` VALUES
    ('', '$id', '$p')")
    or exit ("ошибка");