Пишем движок галлереи изображений. Часть 2.
Продолжение… Начало тут >>
В этой части мы напишем систему оценки картинок галереи. На первом шаге мы просто напишем систему рейтинга. На втором – “прикрутим” ее к нашей галлерее.
Шаг 1.
Проверяем на существование файлов:
if(file_exists(‘rates/’.$_GET[rate].’.rat’)){
}else{
$fp=fopen(‘rates/’.$_GET['rate'].’.rat’,'w’);
fwrite($fp, “0::0″);
fclose($fp);
}
Это файл, где хранятся все данные о голосовании за данную картинку.
Далее разбиваем этот файл на две части:
$arr = file(‘rates/’.$_GET['rate'].’.rat’);
foreach ($arr as $item)
{
$parts = explode(‘::’, $item);
$sum=$parts[1]+1;
$bal=$parts[0]+$_POST['rat'];
$rel=”$bal::$sum”;
}
Первая часть содержит сумму всех оценок, вторая – кол-во людей, оценивающих эту картинку.
Проверяем на существование файла с ip, если нет, то создается:
if(file_exists(‘rates/’.$_GET[rate].’.ip’)){}
else{
fopen(‘rates/’.$_GET[rate].’.ip’,'w’);
}
Теперь проверяем, не голосовал ли за эту картинку пользователь с этого ip:
$string=file_get_contents(‘rates/’.$_GET[rate].’.ip’);
if(eregi($_SERVER['REMOTE_ADDR'],$string))
{
$cou=$parts[0]/$parts[1];
$cou=round($cou);
print(‘<img src=”rates/img/’.$cou.’.gif” mce_src=”rates/img/’.$cou.’.gif”>’);
}
Если голосовал, то выводим файл-картинку со звездочками(1.gif – 5.gif, зависит от среднего бала)
Далее обрабатываем параметр POST, если он передан:
else
{if($_POST['rat']){
$fp=fopen(‘rates/’.$_GET[rate].’.rat’,'w’);
fwrite($fp, $rel);
fclose($fp);
$fp=fopen(‘rates/’.$_GET[rate].’.ip’,'w’);
fwrite($fp, $_SERVER['REMOTE_ADDR']);
fclose($fp);
}?>
И выводим на экран форму для голосования:
<form method=POST>
<label for=’rat’>
1-<input type=’radio’ name=’rat’ value=’1′>| 2-<input type=’radio’ name=’rat’ value=’2′>| 3-<input type=’radio’ name=’rat’ value=’3′>| 4-<input type=’radio’ name=’rat’ value=’4′>| 5-<input type=’radio’ name=’rat’ value=’5′><input type=”submit” value=”Голосовать”></label>
</form><?
}
?>
Шаг 2.
Начнем интеграцию этого сценария к картинкам галлереи. Все $_GET[rate] будем заменять.
Приступим. Создаем файл big.php. Дизайн- любой, я взял основной дизайн галереи. И в месте для контента помещаем тот код, который мы написали. ‘.$_GET[rate].’ Заменяем на ‘.$_GET['dir'].’-’.$_GET['photo'].’.
Теперь редактируем главную страницу галлереи. Находим:
if ($file != “.” && $file != “..”) {
echo “
И содержимое echo заменяем на новое:
<a href=’big.php?photo=big-$file&dir=$filename’><img src=’$filename/$file’ width=150></a>
Теперь при открытии картинки на экран выведется полная картинка с возможностью проголосовать за нее.
Вот мой файл big.php:
<HTML>
<HEAD>
<META HTTP-EQUIV=”Content-Type” CONTENT=”text/html; charset=windows-1251″>
<TITLE></TITLE>
</HEAD>
<BODY TEXT=”#000000″ BGCOLOR=”#FFFFFF”>
<table border=1 CellSpacing=0 CellPadding=0 Width=”100%” align=”center”>
<tr>
<td>
<a href=”index.php” mce_href=”index.php”>Главная</a>
</td>
</tr>
</table>
<table border=1 CellSpacing=0 CellPadding=0 Width=”90%” align=”center”>
<tr>
<td>
<?
print(‘|’);
foreach (glob(“photos_*”) as $filename) {
$name=file_get_contents(“name-cat/$filename.name”);
print “<a href=index.php?cat=$filename>$name</a> | “;
}
?>
</td>
</tr>
</table>
<table border=1 CellSpacing=0 CellPadding=0 Width=”90%” align=”center”>
<tr>
<td>
<center>
<?phpif($_GET['photo']){
print(“<img src=”.$_GET['dir'].” mce_src=”.$_GET['dir'].”/”.$_GET['photo'].”>”);if(file_exists(‘rates/’.$_GET['dir'].’-’.$_GET['photo'].’.rat’)){
}else{
$fp=fopen(‘rates/’.$_GET['dir'].’-’.$_GET['photo'].’.rat’,'w’);
fwrite($fp, “0::0″);
fclose($fp);
}
$arr = file(‘rates/’.$_GET['dir'].’-’.$_GET['photo'].’.rat’);
foreach ($arr as $item)
{
$parts = explode(‘::’, $item);
$sum=$parts[1]+1;
$bal=$parts[0]+$_POST['rat'];
$rel=”$bal::$sum”;
}
if(file_exists(‘rates/’.$_GET['dir'].’-’.$_GET['photo'].’.ip’)){}
else{
fopen(‘rates/’.$_GET['dir'].’-’.$_GET['photo'].’.ip’,'w’);
}
$string=file_get_contents(‘rates/’.$_GET['dir'].’-’.$_GET['photo'].’.ip’);
if(eregi($_SERVER['REMOTE_ADDR'],$string))
{
$cou=$parts[0]/$parts[1];
$cou=round($cou);
print(‘<br><img src=”rates/img/’.$cou.’.gif” mce_src=”rates/img/’.$cou.’.gif”>’);
}else
{if($_POST['rat']){
$fp=fopen(‘rates/’.$_GET['dir'].’-’.$_GET['photo'].’.rat’,'w’);
fwrite($fp, $rel);
fclose($fp);
$fp=fopen(‘rates/’.$_GET['dir'].’-’.$_GET['photo'].’.ip’,'w’);
fwrite($fp, $_SERVER['REMOTE_ADDR']);
fclose($fp);
}?>
<form method=POST>
<label for=’rat’>
1-<input type=’radio’ name=’rat’ value=’1′>| 2-<input type=’radio’ name=’rat’ value=’2′>| 3-<input type=’radio’ name=’rat’ value=’3′>| 4-<input type=’radio’ name=’rat’ value=’4′>| 5-<input type=’radio’ name=’rat’ value=’5′><input type=”submit” value=”Голосовать”></label>
</form><?
}}else{
}
?>
</center>
</td>
</tr>
</table>
</BODY>
</HTML>
Всё, система голосования закончена. Не забудте создать в папке rates/img/ картинки баллов. Я для этого использовал стандартные звездочки. Картинки должны иметь имена:
1.gif – для одного балла
2.gif – для двух баллов
3.gif – для трех баллов
4.gif – для четырех баллов
5.gif – для пяти баллов
Использованные функции:
file_exists - Проверить наличие указанного файла или каталога
fopen - Открывает файл или URL
file – Читает содержимое файла и помещает его в массив
explode – Разбивает строку на подстроки





мая 23, 2008 at 12:12
[...] Продолжение следует >> [...]
Добавить комментарий
Вы должны войти