Full Member
Покинул форум
Сообщений всего: 172
Дата рег-ции: Июнь 2005
Откуда: Чусовой
Карма 0
[+]
|
Товарищи, помогите... Обращаюсь к Вам с надеждой. Решил сделать простенький скриптик Галереи (без использования MySQL хотябы).
Но от неопытности в подобных делах сразу стал перед вопросом: "КАК???"
Ну порывшись по бескрайним просторам Internet наткнулся на один интересный скриптик, модернизацией оного и решил занятся...
CODE:<?
if (!eregi("modules.php", $_SERVER['PHP_SELF'])) {
die ("You can't access this file directly...");
}
$module_name = basename(dirname(__FILE__));
get_lang($module_name);
$pagetitle = "- Добавление изображения в архив";
global $user, $cookie, $prefix, $dbi, $user_prefix;
include("header.php");
title ("Добавление изображения в архив");
OpenTable();
echo ""._WELCOME."<BR>"
."<form ENCTYPE=\"multipart/form-data\" action=\"modules.php?mop=modload&name=Easyup&file=index\" method=\"post\">"
._FILEWAY.":<BR><input name=\"way\" type=\"file\" size=\"30\"><BR><BR>\n"
._ALTTAG.":<BR><input name=\"alt\" type=\"text\" size=\"30\" maxlength=\"40\"><BR><BR>\n"
."<input type=\"submit\" name=\"Submit\" value=\""._SEND."\">\n"
."</form><BR>\n";
// Папка, в которую будут закачиваться файлы
$imagesdir="gallerys/uploads";
// Максимальнодопустимый размер закачки изображения на сервер
$alertdimension=array(
img=>150,
);
// Проверка прав доступа для папки
function checkperms($dir)
{
$permsdir=decoct(fileperms($dir));
$perms=substr("$permsdir",-3);
if ($perms!="777")
{
echo "<div align=\"center\"><font class=\"addimage\">"._ERRORPERM." "$dir" "._ERRORPERM2."<BR>"
._PERMISSION." $perms. "._PERMISSION2."</font></div><BR>";
}
}
checkperms($imagesdir);
$chemin=$imagesdir;
$testotoobig=array(_TOOBIG,_TOOBIG1,_TOOBIG2,_TOOBIG3,_TOOBIG4,_TOOBIG5);
$nom_fichier_name = strtolower($way_name);
// Проверка типов файлов
function check_extension($way_name)
{
$extension = end(explode(".", $way_name));
if ($extension == "php" || $extension == "php3" || $extension == "php4" || $extension == "pl" || $extension == "phtml" || $extension == "asp" || $extension == "cgi")
{
return true;
}
}
// Verifie si le nom ne se nomme pas index.extension
function verif_index($way_name)
{
$pointeur = strrpos($way_name, ".");
$nom = substr($way_name, 0, $pointeur);
if (ereg ("^index$", $nom)) return true;
}
// Calculate dimensions of files and print alert message
function dimensionefiles($chemin,$way_name,$testotoobig1,$testotoobig2,$max)
{
$dimensione=filesize("$chemin/$way_name");
$fdimensione=number_format($dimensione, 0, ',', '.');
$kdimensione=number_format(($dimensione/1024), 1, ',', '.');
$mdimensione=number_format(($kdimensione/1024), 1, ',', '.');
if ($dimensione<=1023)
{
echo "<center>"._FILEIS." $dimensione "._BYTES.".</center><BR>";
}
elseif (($dimensione>1023)&&($dimensione<=1048575))
{
echo "<center>"._FILEIS." $kdimensione Kb ($fdimensione "._BYTES.").</center><BR>";
if ($kdimensione>$max) {echo "<center><font color=\"#ff0000\"><h3>$testotoobig1</h3></font>$testotoobig2</center><BR><BR>";}
}
elseif (($dimensione>1048575))
{
echo "<center>"._FILEIS." $mdimensione Mb ($fdimensione "._BYTES.").<BR>"
."<font color=\"#ff0000\"><h3>$testotoobig1</h3></font>$testotoobig2</center><BR><BR>";
}
}
// Verifie si le fichier existe sur le serveur.
function presence_file($way_name)
{
global $chemin;
if (file_exists("$chemin/$way_name")) return true;
}
// Calculate dimensions of image and print related html tag
function imagetag($chemin,$way_name,$alt)
{
global $testotoobig,$alertdimension;
$misura=getimagesize("$chemin/$way_name");
$htmlimgstring="<img src=\"$chemin/$way_name\" alt=\"$alt\" ".$misura[3].">";
echo "<center><font class=\"option\">"._TITLETAG."</font><BR><BR>\n".
"<i>"._INSTRUCTIONTAG."</i><BR>\n";
echo "<font class=\"addimage\"><blockquote><img src=\"$chemin/$way_name\" alt=\"$alt\" ".$misura[3]."></font></center><BR><BR>";
echo "<center><font class=\"option\">"._PREVIEW."</font><BR><BR>\n";
echo "".$htmlimgstring."</center>";
}
// Chmod le fichier pour en 644 pour le rendre non executable.
function chmod_no_execution($way_name)
{
global $chemin;
chmod ("$chemin/$way_name", 0644);
}
if ($way!="")
{
if (verif_index($way_name)) {
echo "<hr>";
echo ""._ERROR." 02: "._YOURFILE." "$way_name" "._REFUSE."<BR>";
echo "<hr>";
exit;
}
if(check_extension($way_name)){
$way_name = "$way_name.txt";
}
if (presence_file($way_name) == "true") {
echo "<hr>";
echo ""._ERROR." 01: "._YOURFILE." $way_name "._EXIST."<BR>";
echo "<hr>";
exit;
}
if (copy($way, "$chemin/$way_name"))
{
echo ""._YOURFILE." $way_name "._SUCCESS."<BR><p>\n";
// check file type
$imgextension = end(explode(".", $way_name));
switch ($imgextension)
{
case ("jpg"):
imagetag($chemin,$way_name,$alt);
break;
default:
otherfiles($chemin,$way_name);
}
chmod_no_execution($way_name);
}
else
{
//echo ""._ERRORPERM."<BR>";
//echo ""._PERMISSION."<p>";
//exit;
}
}
CloseTable();
include ("footer.php");
?> Как Вы видите это модуль для PHP-Nuke, на которой создан мой последний и действующий проект. Дак вот касательно скрипта имеются следующие вопросы:
1) Как осуществить возможность ограничения максимальнодопустимого размера закачиваемых изображений? (В приведённом скрипте имеется что-то подобное, но это "что-то" не работает);
2) Как ограничить выбор типа закачиваемых изображений? (Допустим чтобы можно было загружать изображения только формата .jpg)
3) Как открывать загруженную картинку в новом окне? (В скрипте имеется функция предварительного просмотра, но она подходит для файлов с небольшой шириной)
Как альтернативу последнему можно сделать ограничение ширины и длины изображения (но опять же КАК).
Надеюсь на вашу помощь. |