Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2012, 01:26   #1
Tapakan
 
Регистрация: 18.06.2012
Сообщений: 8
По умолчанию Рейтинг на javascript

Доброго времени суток. Прошу помощи, но хочу предупредить, javascript еще не знаю вообще. Вот мой сайт - http://aboutonline-casino.com/igraya...hoteli-by.html . На этой странице два тестовых рейтинга. Вот источник скрипта - http://biznesguide.ru/coding/156.html . Хочу спросить, как сделать ограничение по ип? Чтобы человек мог 1 раз проголосовать с 1 адреса и результат естественно сохранялся в виде звездочек закрашенных. Там я так понял система замороченная, надо заходить в базу, смотреть результаты и самому проставлять. Регистрации на сайте нет. Заранее спасибо.

Последний раз редактировалось Tapakan; 18.06.2012 в 01:37.
Tapakan вне форума Ответить с цитированием
Старый 18.06.2012, 08:09   #2
rlib
Форумчанин
 
Аватар для rlib
 
Регистрация: 22.05.2012
Сообщений: 352
По умолчанию

Запоминание ай-пи делается сервером, а не джава-скриптом. Джава-скрипт всего лишь отправляет запрос на ваш сервер, который должен запомнить ай-пи голосующего в своей датабазе. При повторном голосовании сервер отправляет ответ яваскрипту (который на самом деле Ajax), что юзер уже голосовал с этого ай-пи, и JS отвечает юзеру "А вы уже голосовали, батенька: один человек - один голос!"
rlib вне форума Ответить с цитированием
Старый 18.06.2012, 08:14   #3
Tapakan
 
Регистрация: 18.06.2012
Сообщений: 8
По умолчанию

Цитата:
Сообщение от rlib Посмотреть сообщение
Запоминание ай-пи делается сервером, а не джава-скриптом. Джава-скрипт всего лишь отправляет запрос на ваш сервер, который должен запомнить ай-пи голосующего в своей датабазе. При повторном голосовании сервер отправляет ответ яваскрипту (который на самом деле Ajax), что юзер уже голосовал с этого ай-пи, и JS отвечает юзеру "А вы уже голосовали, батенька: один человек - один голос!"
Вот vote.php, который взаимодействует с голосованием. Надо было просто посмотреть. На 3-ьем форуме спрашиваю ответа пока что нет, отвечают только люди как Вы и не по теме.
Код:
<?php 
/* Конфигурация базы данных. Добавьте свои данные */
$dbOptions = array(
    'db_host' => 'localhost',
    'db_user' => '*********',
    'db_pass' => '**********',
    'db_name' => '*********'
);

//Имя таблицы, в которой хранятся заметки
$table_name = 'articles';

//Подключаем класс для работы с базой данных
require "db.class.php";

// Соединение с базой данных
DB::init($dbOptions);

$use_cookie = true; //защита от накруток
$expires = 3600*24*31; //время жизни кук в секундах (сейчас установлено 31 день) 

if(isset($_POST['score']) && isset($_POST['vote-id'])){
    $page_id = intval($_POST['vote-id']);   
    $cookie_name = 'page_'.$page_id;
    
    if($use_cookie && isset($_COOKIE[$cookie_name])){
        
        $data['status'] = 'ERR';
        $data['msg'] = 'Вы уже голосовали за эту заметку';
    }
    else{
       
        DB::query('UPDATE '.$table_name.' SET vote = (vote*voters + '.floatval($_POST['score']).')/(voters + 1), voters = voters + 1 WHERE id = '.$page_id);
        if(DB::affected_rows() == 1){

            $data['status'] = 'OK';
            $data['msg'] = 'Спасибо. Ваш голос учтен.';
            if($use_cookie) setcookie($cookie_name,$page_id,time() + $expires);
        }
        else{        
            $data['status'] = 'ERR';
            $data['msg'] = 'Произошла ошибка';
        }
    }
}
else{   
    $data['status'] = 'ERR';
    $data['msg'] = 'Вы не передали нужные данные!';
}

echo json_encode($data);
?>
Я так понимаю, тут данные о ид голосования, куках... Как мне внести блок с 1 ип - 1 раз возможность проголосовать. Даже так, после обновления страницы все равно можно голосовать. Как было написано в инструкции, базу я создал с названием "articles", но данные не передаются.

Последний раз редактировалось Tapakan; 18.06.2012 в 08:17.
Tapakan вне форума Ответить с цитированием
Старый 18.06.2012, 08:41   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

это в раздел php нужно .. а не js
ADSoft вне форума Ответить с цитированием
Старый 18.06.2012, 09:02   #5
Tapakan
 
Регистрация: 18.06.2012
Сообщений: 8
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
это в раздел php нужно .. а не js
Закрашивание автоматически тоже не происходит, только в ручную, когда смотришь результаты в таблице articles в phpmyadmin и добавляешь:
<input type="hidden" name="val" value="" />
<input type="hidden" name="votes" value="" />
Но у меня данные не передаются
Tapakan вне форума Ответить с цитированием
Старый 18.06.2012, 15:42   #6
rlib
Форумчанин
 
Аватар для rlib
 
Регистрация: 22.05.2012
Сообщений: 352
По умолчанию

Цитата:
Сообщение от Tapakan Посмотреть сообщение
отвечают только люди как Вы и не по теме.
Может вы не по теме спрашиваете, если вам на 3-ем форуме ответить не могут? "Я - Дартаньян, а все - пи*расы"-принцип?

Цитата:
Я так понимаю, тут данные о ид голосования, куках... Как мне внести блок с 1 ип - 1 раз возможность проголосовать. Даже так, после обновления страницы все равно можно голосовать. Как было написано в инструкции, базу я создал с названием "articles", но данные не передаются.
Добавляете к таблице Articles поле voter_ip, в PHP скрипте берете переммную $_SERVER[REMOTE_IP], прописываете ее в таблице. В следующий раз сверяете $_SERVER['REMOTE_IP'] с имеющимися в таблице и не делаете обновление голосов, если этот IP найден в таблице. JS тут вообще ни при чем.

Последний раз редактировалось rlib; 18.06.2012 в 15:50.
rlib вне форума Ответить с цитированием
Старый 18.06.2012, 15:53   #7
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Цитата:
Сообщение от rlib Посмотреть сообщение
Запоминание ай-пи делается сервером, а не джава-скриптом. Джава-скрипт всего лишь отправляет запрос на ваш сервер, который должен запомнить ай-пи голосующего в своей датабазе.
node.js? )
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 18.06.2012, 16:10   #8
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от nerv Посмотреть сообщение
node.js? )
тссс... сейчас опять холивор начнется=)
Для этого форума серверная часть веб-приложений пишется на PHP, а инакомыслящих казнят на гильотине.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 18.06.2012, 18:45   #9
rlib
Форумчанин
 
Аватар для rlib
 
Регистрация: 22.05.2012
Сообщений: 352
По умолчанию

Цитата:
Сообщение от Naive Посмотреть сообщение
тссс... сейчас опять холивор начнется=)
Для этого форума серверная часть веб-приложений пишется на PHP, а инакомыслящих казнят на гильотине.
Не, лично я за то, чтобы все JS-ом заскриптить! Но стигмы заставляют думат о php, когда говорят о сервере.
rlib вне форума Ответить с цитированием
Старый 19.06.2012, 12:07   #10
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Naive,

В связи с чем само название данного раздела уже не является правильным. На Node.js уже реализована часть функционала таких проектов, как вконтакте, яндекс.почта. Это не я говорю, а википедия
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Javascript - классы, они есть или их нету в Javascript? Kasper1 JavaScript, Ajax 3 05.03.2011 09:42
рейтинг alex118 HTML и CSS 1 10.01.2011 21:38
Рейтинг zumm Свободное общение 15 20.06.2010 10:42