Лекции     Книги     Рефераты    
Диплом, курсовая на заказ

Пишем движок галлереи изображений. Часть 2.

news date мая.22.2008    categories Web-программирование > PHP    comments (1)

Продолжение… Начало тут >>

В этой части мы напишем систему оценки картинок галереи. На первом шаге мы просто напишем систему рейтинга. На втором – “прикрутим” ее к нашей галлерее.
Шаг 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>
<?php

if($_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
– Разбивает строку на подстроки

Обсуждения

1 комментарий к “Пишем движок галлереи изображений. Часть 2.”
  1.   Пишем движок галлереи изображений. Часть 1. by Онлайн - школа вебмастеров пишет:

    [...] Продолжение следует >>  [...]

Добавить комментарий

Вы должны войти



© 2009 - 2010 | Webteach.ru | Образовательный портал