Как сделать свой рейтинг
Звездный рейтинг или как сделать свой рейтинг, это может быть рейтинг статьи, либо голосования, либо просто кнопку оценить, поставить оценку. И чтобы это было просто и понятно! И без базы данных.
И в последний момент решили добавить немного декорирования – сделаем рейтинг звездным, ведь вам бы это понравилось!?
Наша страница стала довольно большой, поэтому нам нужна навигация по странице:
Подробно о "звездном рейтинге"
- Звездный рейтинг 1 + видео.
- Рейтинг - вариант № 2.
- Тестирование и установка звездного рейтинга 2.
- Рейтинг - вариант № 3 - модифицированный.
- Тестирование и установка звездного рейтинга 3
- Пример работы скрипта рейтинга со звездами
- P.S
Скоро - Рейтинг в виде звезд css- Скачать
Звездный рейтинг 1 + видео.
Архив из видео - это будет папка № 1 в архиве.
Начнем с предыстории, как-то я искал себе простую голосовалку и из того, что я нашёл это был непонятный скрипт, который фиг настроишь, к нему нужно подключать непонятное количество файлов, их нужно было создавать руками + нужна отдельная папка, чтобы эти файлы не перепутались, и на той странице, где её нужно было поставить, приходилось её открыть, вставить код, закрыть страницу, кинуть её на сервер – согласитесь, что это даже написанное занимает много времени, а если у вас 1000 страниц!?
И плюс мы писали про рейтинг с базой данных, но вопрос в том, что она слишком громоздка и она вообще мне не подходит, из-за того же, что и первая описанная.
Рейтинг - вариант № 2.
Задача: создать простой код, который нужно поставить в любое место шаблона, и он автоматически всё сделает за тебя.
Давайте вкратце опишем:
Как будет работать рейтинг!?
Это будет некий код который ставим в то место, где нужно чтобы была кнопка оценить, поставить оценку или рейтинг, в общем всё, что только возможно измерить цифрами.
Самое главное в таком коде –это защита от повторного голосования.
Защита от повторного голосования.
Сразу скажу, что защититься от повторного голосования у вас никак не получится, это нужно создавать громоздкую структуру, вводить в этот алгоритм регистрацию и множество других элементов, и все равно – это никак не поможет. Тот человек, который захочет проголосовать больше чем один раз, все равно найдет возможность — это сделать. Поэтому, мы этим не будем заниматься.
Мы проверим пользователя по ip и создадим для него собственные куки.
Напишите, как вы считаете, для такого простого кода и для этой задачи этого достаточно или нет!? И чтобы вы ещё добавили!?
Будет создаваться автоматически файл txt, в который будем записывать оценку + ip.
Будем получать данные из этого файла в строку, складывать оценки, делить на количество строк.
Ну и далее давайте полностью разберем наш код оценок, рейтинга, голосования, в общем называйте, как хотите.
Описание работы голосования – рейтинга.
Давайте, чтобы было побыстрее, не будем разбивать весь код на куски, а начнем с самого верха и будем опускаться вниз и описывать так весь код
Получим ip пользователя:
Отредактировано - 29/06/2018
Путь до файла..
Много проблем возникает с расположением файла:
Строка номер 6 в архиве номер 1(в варианте номер два - мы сделали немного по другому...)
Файл будет создаваться с таким же названием лишь в другой папке…
Вы его можете придумать самостоятельно! Здесь нужно слова «Здесь_путь_до_папки» - заменить на папку, которая будет находиться в корневой папке сайта . Если папки две, то будет путь
Получаем содержимое нашего файла:
Ну и далее проверяем, нажата ли кнопка
Проверяем существуют ли куки
Если существует, то выводим:
Если не существуют
Создаем метку времени с микросекундами, удалим пробел внутри. Это будет уникальный ид.
Создадим с этим числом наши куки на год - time
Проверим есть ли аипи в нашем тексте
Если нет, то ..
Создаем переменную, в которой будет находится наша оценка и айпи с разделителем «::».
$f_out = fopen($page,"a+"); //Открываем страницу для записи, записываем в конец файла.
fwrite($f_out, $otsenka); // записываем на страницу с добелённым содержаниемДалее понятно надеюсь без пояснений…
if(fwrite == FALSE)
{
echo 'Не получилось записать';
}
else
{
echo 'Запись прошла';
}
}
else
{
echo "C данным ip вы не можете проголосовать";
}
}
}Надо уточнить, что данный код должен находиться вверху страницы иначе куки будут выдавать ошибку.
И далее нам осталось вывести наши данные в том месте, где и нужно...
Откроем наш файл, получим оценку в цикле, сложим её и поделим на количество строк.
if(@file($page) == TRUE)
{
$ar = file("$page");
$count ="";
foreach ($ar as $coun)
{
$count = $count + $coun;
}
$result = count($ar);
$sredniya_otsenka = $count/$result;
echo $sredniya_otsenka;
}
О звездном рейтинге.
Цифры и оценка выводом числа – это конечно хорошо, но было бы интереснее вывести эту оценку звездами! Ну, что же, давайте добавим немного декора…
Как это будет работать!?
Берем картинку, например, вот эту, здесь ширина 200px.
Картинку надо поставить на задний фон дива, а вот уже с шириной дива нужно играть…
Сверху мы получили среднюю оценку, при условии, что оценка 5, то, чтобы получить 200px нам нужно 5 умножить на 40.
Создадим переменную, которая будет плясать от средней оценки и добавим туда пиксели…
Ну и див будет у нас такой:
Тестирование и установка звездного рейтинга 2.
20.12.2019.
Добавлено автоматическое создание пути:
Папка 2, файл reyting_2.php, строка 7:
Данный скрипт, готов к работе, можно скрипт с формой добавить на все страницы сайта, если путь остается - __DIR__ - то файл с оценкой(.dat) будет сохраняться в папке где находится сама страница со скриптом иначе можно указать путь до определенной папки на сервере, все файлы с оценками будут складываться в одну папку
Открываем папку №2 ((архив)) со вторым вариантом рейтинга! В этой папке 2 файла,
кидаем в папку, открываем в браузере, вы должны увидеть такую картину:
Нажимаем проголосовать:
Живой пример рейтинг 2Это вообще первый рейтинг, который я написал самостоятельно, использовал функцию fopen очень неудобная, с ней еще чего дофига нужно - намного проще вариант file_get_contents .
Используется всего одна картинка.
Немного подправил код, но основное 99% оставил, как было.
Рейтинг - вариант № 3 - модифицированный.
Тестирование и установка звездного рейтинга 3И пример работы скрипта
Не обязательно делать так – это просто вариант, если такой вариант не нравится возьмите создание пути из варианта номер 1. Либо придумайте самостоятельно!
Как происходит подсчет рейтинга!?
Все остальное практически без изменений, что и вариант номер 2. Только немного скомпоновали код и чуть подправили!
Ip – будет записан в файл и будет существовать до конца существования файла. Вероятность, что второй человек, получит через неострое время, такой- же ip – ничтожна…, но все же есть такая вероятность!
Если вас это беспокоит, то можно сделать так:
Проверка передаваемых данных в рейтинге
Я как-то совсем упустил необходимость проверки вводимых данных, даже и объяснить никак не могу… в общем забыл и забыл! Но, поскольку –это живые скрипты, который я сам использую, то время от времени - происходит какое-то просветление и мозг подсказывает то, что ты забыл проверить!
Итак!
Если вы скачали рейтинг, то увидели три варианта рейтинга! Третьим вариантом я как раз и пользуюсь!
Добавлено:
Смысл данной проверки – что посылаемые данные должны состоять из одного символа ! Если это не так, то выводим сообщение + сразу все запишем сессии, куки, айпи – чтобы он не смог вообще никак проголосовать..
if(!$otsenka[1])
{
//весь исполнительный поместили сюда..
}
else
{
$answer_otsenka = 'Ах ты озорник!';
$_SESSION[md5($_SERVER['REQUEST_URI'])] = md5($_SERVER['REQUEST_URI']);
setcookie (md5($_SERVER['REQUEST_URI']), md5($_SERVER['REQUEST_URI']), time()+365*24*60*60);
}
Тестирование и установка звездного рейтинга 3
24.12.2019/
Проходит некоторое время и мы забываем, как это работает и работает ли вообще!
Проверим работоспособность скрипта в папке под номером 3.
Открываем папку номер 3 или третий вариант звездного рейтинга, и перемещаем все содержимое папки в свою папку, в которой и будем тестировать данный рейтинг.
Слева мы видим, три файла, справа видим 4 файла - этот файл уже результат голосования в нашем рейтинге...
Ну и внешний вид, ничем не отчается от приведенного рабочего примера.
Пример работы скрипта рейтинга со звездами
Проходит какое-то время и начинаешь забывать, что здесь такое происходит!
Итого, после разборок 20.12.2019
Всего три рейтинга, разбросали по пунктам!
Вроде бы только вчера я редактировал эту страницу, а прошло 2 года...
Поскольку мы периодически обновляем контент, и в скором времени обновим очередной раз данную страницу.
Добавим несколько вариантов создания звездного рейтинга с помощью css. Пример смотри ниже.
+ сохранение данных php + javascript
Рейтинг в виде звезд css
Контента еще нет...