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

Галерея картинок. Часть 5: Админ – панель.

news date июля.29.2008    categories Web-программирование > PHP    comments (2)

Всё! Наконец то мы дошли до самого конца и завершим админ панель. На прошлом уроке мы разметили работу на будущее, теперь начнем…
Напишем “Управление картинками”. Создаем файл image.php в каталоге admin. Разметим что нам нужно… Нам нужно:
1) Добавить картинку
2) Изменить размер картинки (автоматически)
3) Удалить картинку и все прилагающие к ней файлы.

Добавляем картинку следующим образом:

copy($foto, “g:/localhost/photos_user/big-$foto_name”)

g:/localhost/photos_user – путь до скрипта

Теперь редактируем файл big.php. В нем заменяем:

print(“<img src=”.$_GET['dir'].” mce_src=”.$_GET['dir'].”/”.$_GET['photo'].”>”);

на:

print(“<img src=big/”.$_GET['dir'].”/”.$_GET['photo'].”>”);

И в файле all.php:

Big-

на

big/

Это нужно для корректной загрузки и отображения “привьюшек” – картинок.

Теперь мы изменим размер изображения и закачаем его в нужную папку. Осуществим мы это следующей функцией:

function resizeimage($filename, $newwidth, $newheight, $foto_name){
list($width, $height) = getimagesize($filename);
if($width > $height && $newheight < $height){
$newheight = $height / ($width / $newwidth);
} else if ($width < $height && $newwidth < $width) {
$newwidth = $width / ($height / $newheight);
} else {
$newwidth = $width;
$newheight = $height;
}
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($thumb,”photos_user/”.$foto_name);

}

И вызовим ее так:

$myimage = resizeimage(“big/photos_user/big-$foto_name”, ’120′, ’120′, $foto_name);

Добавим проверку на передачу параметра foto и корректную закачку фото – параметрами if.
Напишем HTML форму для отправки изображения:

<form method=”post” enctype=”multipart/form-data”>
<input type=file name=foto>
<input type=submit value=”Отправить”>
</form>

Всё, теперь картинки будут закачиваться в нужные каталоги. Пака – что они закачиваются в один каталог, но мы это потом изменим.
Отобразим все картинки и управление для них:

<?
foreach (glob(“photos_*”) as $filename) {

if ($handle = opendir($filename)) {
while (false !== ($file = readdir($handle))) {
if ($file != “.” && $file != “..”) {
echo “<img src=’$filename/$file’ width=150><br><a href=’admin.php?naw=image&dirdel=$filename&filedel=$file’>Удалить</a><br><br>”;
}
}

closedir($handle);
}

}

?>

Теперь обработка для удаления:
if($dirdel){
unlink(“$dirdel/$filedel”);
unlink(“big/$dirdel/big-$filedel”);
}

Всё.
Теперь приступим к разработке “Управление категориями”.
Создаем файл kategori.php. Отобразим текущие категории и управление к ним:

foreach (glob(“photos_*”) as $filename) {
$name=file_get_contents(“name-cat/$filename.name”);
print “<a href=index.php?cat=$filename>$name</a> > <a href=admin.php?naw=kategori&delcat=$filename>Удалить</a><br>”;
}

Теперь напишем функцию удаление каталога со всеми вложенными в него файлами:

function full_del_dir ($directory)
{
$dir = opendir($directory);
while(($file = readdir($dir)))
{
if ( is_file ($directory.”/”.$file))
{
unlink ($directory.”/”.$file);
}
else if ( is_dir ($directory.”/”.$file) &&
($file != “.”) && ($file != “..”))
{
full_del_dir ($directory.”/”.$file);
}
}
closedir ($dir);
rmdir ($directory);
}

И, если передается пораметр get для delcat, то вызываем эту функцию и удаляем файл с именем категории:

if($delcat){
full_del_dir ($delcat);
unlink(“name-cat/$delcat.name”);
}

Теперь пешем форму для создания категорий:

<form method=”post”>
Имя: <input name=”namecat” type=”text” value=”">
<br>Директория: <input name=”dir” type=”text” value=”">
<br><input type=”submit” value=”Добавить категорию”>
</form>

Указываем директорию под картинки и имя. Теперь создадим такую директорию и файл с именем этой директории:
i

f($_POST['dir'] and $_POST['namecat']){
@mkdir(‘photos_’.$_POST['dir'].”,0777);
$fp=fopen(“name-cat/photos_$dir.name”, “w”);
fwrite($fp, $namecat);
fclose($fp);
if($fp){
echo(“Удачно создал категорию – $dir<br>”);
}else{
echo(“Не создал категорию – $dir<br>”);
}
}

С управлением категориями закончили. Вот листинг файла kategori.php:

<?
if(!defined(“INDEX”)) die(“Доступ к файлу закрыт!”);

if($_POST['dir'] and $_POST['namecat']){
@mkdir(‘photos_’.$_POST['dir'].”,0777);
$fp=fopen(“name-cat/photos_$dir.name”, “w”);
fwrite($fp, $namecat);
fclose($fp);
if($fp){
echo(“Удачно создал категорию – $dir<br>”);
}else{
echo(“Не создал категорию – $dir<br>”);
}
}
function full_del_dir ($directory)
{
$dir = opendir($directory);
while(($file = readdir($dir)))
{
if ( is_file ($directory.”/”.$file))
{
unlink ($directory.”/”.$file);
}
else if ( is_dir ($directory.”/”.$file) &&
($file != “.”) && ($file != “..”))
{
full_del_dir ($directory.”/”.$file);
}
}
closedir ($dir);
rmdir ($directory);
}
if($delcat){
full_del_dir ($delcat);
unlink(“name-cat/$delcat.name”);
}
foreach (glob(“photos_*”) as $filename) {
$name=file_get_contents(“name-cat/$filename.name”);
print “<a href=index.php?cat=$filename>$name</a> > <a href=admin.php?naw=kategori&delcat=$filename>Удалить</a><br>”;
}

?>
<hr>
<form method=”post”>
Имя: <input name=”namecat” type=”text” value=”">
<br>Директория: <input name=”dir” type=”text” value=”">
<br><input type=”submit” value=”Добавить категорию”>
</form>

Вернемся к image.php и добавим возможность выбора категории для закачки фоток…
Создаем форму:

<SELECT name=kat>

<?
foreach (glob(“photos_*”) as $filename) {
$name=file_get_contents(“name-cat/$filename.name”);
print “<OPTION type=’radio’ value=$filename>$name</option>”;
}
?>

</SELECT>

И обработаем php. Добавим в функцию resizeimage – , $kat. Заменим photos_user на $kat.
После
i

f($foto){

Добавим

@mkdir(“big/$kat”,0777);

Всё, управление картинками закончено. Вот листинг файла image.php:

<?
if(!defined(“INDEX”)) die(“Доступ к файлу закрыт!”);

function resizeimage($filename, $newwidth, $newheight, $foto_name, $kat){
list($width, $height) = getimagesize($filename);
if($width > $height && $newheight < $height){
$newheight = $height / ($width / $newwidth);
} else if ($width < $height && $newwidth < $width) {
$newwidth = $width / ($height / $newheight);
} else {
$newwidth = $width;
$newheight = $height;
}
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($thumb,”$kat/”.$foto_name);

}

if($foto){
@mkdir(“big/$kat”,0777);
if(copy($foto, “g:/localhost/stati/galerei/big/$kat/big-$foto_name”)){
echo “Фото – $foto_name удачно закачано!”;
}else{
echo “Ошибка закачки фото – $foto_name!”;
}

$myimage = resizeimage(“big/$kat/big-$foto_name”, ’120′, ’120′, $foto_name, $kat);

}

if($dirdel){
unlink(“$dirdel/$filedel”);
unlink(“big/$dirdel/big-$filedel”);
}

?>

<form method=”post” enctype=”multipart/form-data”>
<input type=file name=foto>

<SELECT name=kat>

<?
foreach (glob(“photos_*”) as $filename) {
$name=file_get_contents(“name-cat/$filename.name”);
print “<OPTION type=’radio’ value=$filename>$name</option>”;
}
?>

</SELECT>
<br>
<input type=submit value=”Загрузить картинку”>
</form>
<?
foreach (glob(“photos_*”) as $filename) {

if ($handle = opendir($filename)) {
while (false !== ($file = readdir($handle))) {
if ($file != “.” && $file != “..”) {
echo “<img src=’$filename/$file’ width=150><br><a href=’admin.php?naw=image&dirdel=$filename&filedel=$file’>Удалить</a><br><br>”;
}
}

closedir($handle);
}

}

?>

И последнее… ”Управление комментариями”. Создаем файл coments.php. Добавляем все картинки у управления к ним:

foreach (glob(“photos_*”) as $filename) {

if ($handle = opendir($filename)) {
while (false !== ($file = readdir($handle))) {
if ($file != “.” && $file != “..”) {
echo “<img src=’$filename/$file’ width=150><br><a href=’admin.php?naw=coments&dir=$filename&filer=$file’>Редактировать коментарии</a><br><br>”;
}
}

closedir($handle);
}

}

Проверяем на параметр GET:
i

f($dir and $filer){

}else{
код…
}
?>

Если параметр передан, приступаем к редактированию:

if($_POST['cou']){
$line=$_POST['cou'];

$file=file(“coments/”.$dir.”_big-$filer.txt”);
$open=fopen(“coments/”.$dir.”_big-$filer.txt”,”w”);

for($i=0;$i<count($file);$i++)
{
if(($i+1)!=$line){fwrite($open,$file[$i]);}
}

fclose($open);
}

if($dir and $filer){

if(file_exists(“coments/”.$dir.”_big-$filer.txt”)){
}else{
fopen(“coments/”.$dir.”_$filer.txt”, “a”);
}
$coment=file_get_contents(“coments/”.$dir.”_big-$filer.txt”);
if($coment==”"){
echo(‘Коментариев нет!’);
}else{
echo “<pre>$coment</pre>”;
echo(“<form method=POST action=admin.php?naw=coments&dir=$dir&filer=$filer>
<br>Коментарий№<input type=text name=cou size=10>
<input type=submit value=Удалить>
</form>
“);
}

Всё, админ панел мы закончили… Вот листинг файла coments.php:

<?
if(!defined(“INDEX”)) die(“Доступ к файлу закрыт!”);
if($_POST['cou']){
$line=$_POST['cou'];

$file=file(“coments/”.$dir.”_big-$filer.txt”);
$open=fopen(“coments/”.$dir.”_big-$filer.txt”,”w”);

for($i=0;$i<count($file);$i++)
{
if(($i+1)!=$line){fwrite($open,$file[$i]);}
}

fclose($open);
}

if($dir and $filer){

if(file_exists(“coments/”.$dir.”_big-$filer.txt”)){
}else{
fopen(“coments/”.$dir.”_$filer.txt”, “a”);
}
$coment=file_get_contents(“coments/”.$dir.”_big-$filer.txt”);
if($coment==”"){
echo(‘Коментариев нет!’);
}else{
echo “<pre>$coment</pre>”;
echo(“<form method=POST action=admin.php?naw=coments&dir=$dir&filer=$filer>
<br>Коментарий№<input type=text name=cou size=10>
<input type=submit value=Удалить>
</form>
“);
}
}else{
foreach (glob(“photos_*”) as $filename) {

if ($handle = opendir($filename)) {
while (false !== ($file = readdir($handle))) {
if ($file != “.” && $file != “..”) {
echo “<img src=’$filename/$file’ width=150><br><a href=’admin.php?naw=coments&dir=$filename&filer=$file’>Редактировать коментарии</a><br><br>”;
}
}

closedir($handle);
}

}
}
?>

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

Ps: Если вы с первого раза сумели написать программу, в которой транслятор не обнаружил ни одной ошибки, сообщите об этом системному программисту. Он исправит ошибки в трансляторе


Обсуждения

2 комментариев к “Галерея картинок. Часть 5: Админ – панель.”
  1. leshka пишет:

    Добрый день…
    Просматривал скриптик “Движок галерея”.. в конце нашел …можно скачать тут… а ссылочка мёртвая. Очень хочется постотреть в живую )) можно “живую” ссылочку кинуть? Спасибо.

  2. admin пишет:

    К сожалению, давно это было – архив не сохранился… Собственно, в нем просто лежит все, что описано в этих уроках.

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

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



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