Полюбите код! И он полюбит Вас!

Последние комментарии:

Марат : А ничего что я у Вас ошибочку нашёл? - Ничего!(пока далее

2017-10-11 10:02:06



Иван : А ничего что я у Вас ошибочку нашёл? (пока что далее

2017-10-11 02:24:33



Марат : Спасибо!У каждой вещи есть свои положительные и отрицательные стороны!Не знаю, далее

2017-10-08 23:49:00



Дмитрий : Отличный скрипт! Автору большой респект! Но скрипт был бы ещё далее

2017-10-08 22:55:59



Марат : Всегда пожалуйста!Приходите ещё! далее

2017-10-02 00:38:38



Это интересно:

Рейтинги страниц.

Вы здесь - Главная - PHP

Свой рейтинг

Нам потребовалось сделать свой рейтинг и рейтинг статьи. Либо голосование, либо просто кнопку оценить, поставить оценку. И чтобы это было просто и понятно! И без базы данных.

И в последний момент решили добавить немного декорирования – сделаем рейтинг звездным, ведь вам бы это понравилось!?

+ сделали проверку на уникальность.

Видео о скрипте оценки статьи...

Архив из видео - всего скачано 6 раз/а.

Начнем с предыстории, как-то я искал себе простую голосовалку и из того, что я нашёл это был непонятный скрипт, который фиг настроишь, к нему нужно подключать непонятное количество файлов, их нужно было создавать руками + нужна отдельная папка, чтобы эти файлы не перепутались, и на той странице, где её нужно было поставить, приходилось её открыть, вставить код, закрыть страницу, кинуть её на сервер – согласитесь, что это даже написанное занимает много времени, а если у вас 1000 страниц!?

И плюс мы писали про рейтинг с базой данных, но вопрос в том, что она слишком громоздка и она вообще мне не подходит, из-за того же, что и первая описанная.

Задача: создать простой код, который нужно поставить в любое место шаблона, и он автоматически всё сделает за тебя.

Давайте в вкратце опишем:

Как будет работать рейтинг!?

Это будет некий код который ставим в то место, где нужно чтобы была кнопка оценить, поставить оценку или рейтинг, в общем всё, что только возможно измерить цифрами.

1.

Самое главное в таком коде –это защита от повторного голосования.

Защита от повторного голосования.

Сразу скажу, что защититься от повторного голосования у вас никак не получится, это нужно создавать громоздкую структуру, вводить в этот алгоритм регистрацию и множество других элементов, и все равно – это никак не поможет. Тот человек, который захочет проголосовать больше чем один раз, все равно найдет возможность — это сделать. Поэтому, мы этим не будем заниматься.

Мы проверим пользователя по ip и создадим для него собственные куки.

Напишите, как вы считаете, для такого простого кода и для этой задачи этого достаточно или нет!? И чтобы вы ещё добавили!?

2.

Будет создаваться автоматически файл txt, в который будем записывать оценку + ip.

3.

Будем получать данные из этого файла в строку, складывать оценки, делить на количество строк.

Ну и далее давайте полностью разберем наш код оценок, рейтинга, голосования, в общем называйте, как хотите.

Описание работы голосования – рейтинга.

Давайте, чтобы было побыстрее, не будем разбивать весь код на куски, а начнем с самого верха и будем опускаться вниз и описывать так весь код

Получим ip пользователя:

$ip = $_SERVER["REMOTE_ADDR"];

Получим урл страницы, из неё будет формироваться название страницы txt.

$chasti = $_SERVER['REQUEST_URI'];

У нас разрешение основных страниц html, заменим в полученном адресе на txt.

$chasti = preg_replace('/html/', 'txt', $chasti);

Теперь разобьем адрес на части, в качестве разделителя быдет выступать слеш «/», получим все данные в массив:

$chasti = explode("/",$chasti);

Далее нам нужно получить последний элемент массива, и это будет название нашей страницы, только с разрешением txt.

$chasti = end($chasti);

Далее получим в переменную адрес нашей страницы. Если вы собираетесь использовать данный код без изменений, то вам нужно создать две папки - a-store, а в ней папку storige.

$page = $_SERVER['DOCUMENT_ROOT']."/a-store/storige/".$chasti;

Получим все, что есть на нашей страницы, поскольку её не существует перед первым голосование, то нужно подавить ошибку знаком собака.

$text = @file_get_contents($page);

Ну и далее проверяем, нажата ли кнопка

if($_POST['buttom'])

{

Проверяем существуют ли куки

if (isset($_COOKIE['_ym_dw']))

{

Если существует, то выводим:

echo "Вы уже проголосовали";

}

Если не существуют

else

{

Создаем метку времени с микросекундами, удалим пробел внутри. Это будет уникальный ид.

$metka = microtime(); $metka = str_replace(' ','',$metka);

Создадим с этим числом наши куки на год - time

setcookie("_ym_dw", $metka ,time()+31556926);

Проверим есть ли аипи в нашем тексте

$res_ip = @mb_stripos($text, $ip , 0,"UTF-8");

Если нет, то ..

if ($res_ip == FALSE)

{

Создаем переменную, в которой будет находится наша оценка и айпи с разделителем «::».

$otsenka = $_POST['otsenka']."::".$ip."\n";

$f_out = fopen($page,"a+"); //Открываем страницу для записи, записываем в конец файла.

fwrite($f_out, $otsenka); // записываем на страницу с добелённым содержанием

Далее понятно надеюсь без пояснений…

fclose($f_out);

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.

Создадим переменную, которая будет плясать от средней оценки и добавим туда пиксели…

$width = ($sredniya_otsenka * 40).'px';

Ну и див будет у нас такой:

<div style="width:'.$width.'; height: 50px; background:url(1.png)" title="Оценка статьи '.$sredniya_otsenka.'"></div>

Пример работы скрипта

Скопировать коды здесь.

Понравилась статья!? Не стесняйся – поделись ссылкой!

И!

Пожалуйста! Если вам не трудно - прокомментируйте то, что вы прочитали! Вам понравилось, или не понравилось! Напишите, какие мысли возникли у вас, и это бесплатно для вас, но очень ценно для нас!!! Всё, что вы здесь видите - это написано для вас! Никаким другим образом мы не можем понять вашу реакцию. Может, что-то стоит добавить или наоборот убрать. Либо, что-то стоило изменить...

P.S.

25 октября 2017

Мы запустили подписку на новости по емайлу, как только выходит новая статья, то будет отправлено сообщение на почту, что вышла новая статья!

Почему стоит подписаться на наши новости!?

Расскажу историю, вчера искал ответ на один из вопросов (конечно, я могу и сам написать, но чаще всего, вначале, ищу в интернете, может есть готовое решение…) и было множество вариантов, которые были описаны, но ни одного, с примерами! И мало того, что они предлагают решения, которые непонятно как реализовывать, особенно новичкам, у которых больше вопросов, чем ответов. Так они еще и не работают!

У нас же, на сайте – только рабочие проверенные скрипты! Полностью с описанием и с примерами! И реализовать может человек с нулевыми знаниями!

Мы есть здесь:

Проголосовать за статью!
  С 24 сентября мы запускаем новый скрипт в тестовом режиме (только свои скрипты)
  Вы можете проголосовать за понравившуюся статью.

  Средняя оценка 4.57 проголосовало 7
    


Просмотров 759

Друзья!

Для того, чтобы вы получили бесплатную информацию, мы потратили и время и деньги!

Мы существуем от кликов по рекламе!

Если вы не нашли подходящего блока объявлений, то вы еще можете помочь проекту!

Не стесняйтесь!

Даже самая маленькая сумма будет употреблена на продвижение и улучшение проекта!

Заранее благодарим Вас!

Оставить комментарий:

Для отображения аватара после отправки сообщения, необходимо быть зарегистрированным в Граватаре.



Комментарии (2)

Вы просматриваете: http://dwweb.ru/Php/About-PHP/29-svoy-reyting.html
Gravatar
Дмитрий
Отличный скрипт! Автору большой респект! Но скрипт был бы ещё круче, если бы не нужно было выбирать цифры в выпадающем меню, а можно было кликать прямо по звездочкам! Smile Желаю успехов вам и вашему сайту!
08/10/2017 22:55
Gravatar
Марат
Спасибо!
У каждой вещи есть свои положительные и отрицательные стороны!
Не знаю, буду ли я его дорабатывать, но то, что у этого скрипта не отнять - это трудно поставить не ту оценку которую вы захотите.
А когда перемещается курсор по картинке, трудно понять, и часто просто случайно нажимаешь... и ставится не та оценка...
И думаю, что в выпадающем списке нет ничего страшного!
08/10/2017 23:49
Страница 1 из 1

* Обязательные поля
(Не публикуется)
 
Жирный Курсив Подчеркнутый Перечеркнутый Степень Индекс Код PHP Код Кавычки Вставить линию Вставить маркированный список Вставить нумерованный список Вставить ссылку Вставить e-mail Вставить изображение Вставить видео
 
Улыбка Печаль Удивление Смех Злость Язык Возмущение Ухмылка Подмигнуть Испуг Круто Скука Смущение Несерьёзно Шокирован
 
5000
Напишите слово топор наоборот.
 
(введите ответ)
 
Уведомлять о новых коментариях по почте.
 

Оставить комментарии через вконтакте

Все дела сделаны!

Теперь можно и поиграть!

Понравилась игра!? Растфнуть на весь экран

Улучши поведенческий фактор на своём сайте.

Забери код здесь

Пишем полную инструкцию о пользовании ruweb.net + DirectAdmin

RuWeb.net - гибкий хостинг
Индекс цитирования