Файл: DarkAge/foto.php
Строк: 216
<?
$config_filesize = "9920480";
$config_filefoto = "1300";
$$config_fotolist = "5";
$config_previewsize = "10000";
//////////////////////////////////////////////// FUNCTIONS /////////////////////////////////////////
function date_fixed($timestamp, $format="d.m.y / H:i"){
global $config_clocks,$sitetime;
if(empty($timestamp)){$timestamp=$sitetime;}
$sdvig=$config_clocks*3600;
$datestamp = date($format,$timestamp+$sdvig);
$today = date("d.m.y",$sitetime+$sdvig);
$datestamp = str_replace($today,"Сегодня",$datestamp);
$datestamp = str_replace("January","Января",$datestamp);
$datestamp = str_replace("February","Февраля",$datestamp);
$datestamp = str_replace("March","Марта",$datestamp);
$datestamp = str_replace("April","Апреля",$datestamp);
$datestamp = str_replace("May","Мая",$datestamp);
$datestamp = str_replace("June","Июня",$datestamp);
$datestamp = str_replace("July","Июля",$datestamp);
$datestamp = str_replace("August","Августа",$datestamp);
$datestamp = str_replace("September","Сентября",$datestamp);
$datestamp = str_replace("October","Октября",$datestamp);
$datestamp = str_replace("November","Ноября",$datestamp);
$datestamp = str_replace("December","Декабря",$datestamp);
return $datestamp;
}
//--------------- Функция правильного вывода веса файла -------------------//
function formatsize($file_size){
if($file_size >= 1073741824){
$file_size = round($file_size / 1073741824 * 100) / 100 . " Gb";
}elseif(
$file_size >= 1048576){
$file_size = round($file_size / 1048576 * 100) / 100 . " Mb";
}elseif(
$file_size >= 1024){
$file_size = round($file_size / 1024 * 100) / 100 . " Kb";
}else{
$file_size = round($file_size) . " b";}
return $file_size;
}
//------------------ Функция перекодировки из UTF в WIN --------------------//
function utf_to_win($str) {
if (function_exists('mb_convert_encoding')) return mb_convert_encoding($str, 'windows-1251', 'utf-8');
if (function_exists('iconv')) return iconv('utf-8', 'windows-1251', $str);
$utf8win1251 = array(
"А"=>"xC0","Б"=>"xC1","В"=>"xC2","Г"=>"xC3","Д"=>"xC4","Е"=>"xC5","Ё"=>"xA8","Ж"=>"xC6","З"=>"xC7","И"=>"xC8","Й"=>"xC9","К"=>"xCA","Л"=>"xCB","М"=>"xCC",
"Н"=>"xCD","О"=>"xCE","П"=>"xCF","Р"=>"xD0","С"=>"xD1","Т"=>"xD2","У"=>"xD3","Ф"=>"xD4","Х"=>"xD5","Ц"=>"xD6","Ч"=>"xD7","Ш"=>"xD8","Щ"=>"xD9","Ъ"=>"xDA",
"Ы"=>"xDB","Ь"=>"xDC","Э"=>"xDD","Ю"=>"xDE","Я"=>"xDF","а"=>"xE0","б"=>"xE1","в"=>"xE2","г"=>"xE3","д"=>"xE4","е"=>"xE5","ё"=>"xB8","ж"=>"xE6","з"=>"xE7",
"и"=>"xE8","й"=>"xE9","к"=>"xEA","л"=>"xEB","м"=>"xEC","н"=>"xED","о"=>"xEE","п"=>"xEF","р"=>"xF0","с"=>"xF1","т"=>"xF2","у"=>"xF3","ф"=>"xF4","х"=>"xF5",
"ц"=>"xF6","ч"=>"xF7","ш"=>"xF8","щ"=>"xF9","ъ"=>"xFA","ы"=>"xFB","ь"=>"xFC","э"=>"xFD","ю"=>"xFE","я"=>"xFF");
return strtr($str, $utf8win1251);
}
//----------------------- Функция вырезания переноса строки --------------------------//
function no_br($message,$replace=""){
$message=preg_replace ("|[rn]+|si",$replace,$message);
return $message;
}
//----------------------- Функция экранирования основных знаков --------------------------//
function check($message){
$message=str_replace("|","I",$message);
$message=str_replace("||","I",$message);
$message=htmlspecialchars($message);
$message=str_replace("'","'",$message);
$message=str_replace(""",""",$message);
$message=str_replace("$","$",$message);
$message=str_replace("$","$",$message);
$message=str_replace("\","\", $message);
$message=str_replace("`","", $message);
$message=str_replace("^","^", $message);
$message=str_replace("%","%", $message);
$message=str_replace(":",":",$message);
$message=preg_replace("|:|",":",$message,3);
$message=stripslashes(trim($message));
return $message;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
Error_Reporting(E_ALL & ~E_NOTICE);
include_once("files/zag.php");
if (md5($pas)==$password && $log==$login && $log!=="" && md5($pas)!=="") {
if(!isset($action)) {
echo'<b>Галерея</b><br>';
/// || $udata[0]=="WanteD.GM"
if ($udata[0]=="SHiFT.GM"){
echo '<a href="foto.php?log='.$log.'&pas='.$pas.'&start='.$start.'">Управление</a> | ';}
echo'<a href="foto.php?log='.$log.'&pas='.$pas.'&action=addfoto">Добавить фото</a>';
$lines = file("data/gallery/fotobase.dat");
$lines=array_reverse($lines);
$total = count($lines);
if (file_exists("data/gallery/fotobase.dat") && $total>0) {
$start = "0";
if($start < 0 || $start > $total){$start = 0;}
if ($total < $start + $config_fotolist){ $end = $total; }
else {$end = $start + $config_fotolist; }
for ($i = $start; $i < $end; $i++){
$dt = explode("|", $lines[$i]);
$totalkomm=0;
if (file_exists("data/gallery/datagallery.dat")){
$file = file("data/gallery/datagallery.dat");
$totalkomm = count($file);}
echo '<b><a href="foto.php?log='.$log.'&pas='.$pas.'&action=showimg&gid='.$dt[6].'&start='.$start.'">'.$dt[1].'</a></b> ('.$dt[7].' Kb)';
$ext = strtolower(substr($dt[6], strrpos($dt[6], '.') + 1));
if($dt[8]>$config_previewsize || $dt[9]>$config_previewsize){
echo'<a href="foto.php?log='.$log.'&pas='.$pas.'&action=showimg&gid='.$dt[6].'&start='.$start.'"><img src="resize.php?log='.$log.'&pas='.$pas.'&act='.$ext.'&gdir=data&gpoddir=gallery&gname='.$dt[6].'&maxsize='.$config_previewsize.'" alt="zzz"></a>';
}else{
echo'<a href="foto.php?log='.$log.'&pas='.$pas.'&action=showimg&gid='.$dt[6].'&start='.$start.'&'.SID.'"><img src="gallery.php?image='.$dt[6].'" alt="zzz"></a>';
}
echo'<br>'.$dt[0].'<br>';
echo 'Добавлено: <a href="search.php?log='.$log.'&pas='.$pas.'&nick='.$nick.'">'.$dt[2].'</a> ('.date_fixed($dt[4]).')<br>';
echo '<a href="foto.php?log='.$log.'&pas='.$pas.'&action=komm&gid='.$dt[6].'">Комментарии</a> ('.(int)$totalkomm.')';
}
}else{echo'<br><b>Галерея еще пустая, фотографий нет!</b><br>';}
echo'<br>Всего фотографий: <b>'.(int)$total.'</b><br>';}
##########################################################################
## Просмотр полной фотографии ##
##########################################################################
if($action=="showimg"){
echo'<b>Просмотр фотографий</b><br>';
$lines = file(BASEDIR."data/gallery/fotobase.dat");
if(file_exists(BASEDIR."data/gallery/fotobase.dat")){
foreach($lines as $k){
$dtu=explode("|",$k);
if($dtu[6]==$gid){ $errgallery='ok';
$totalkomm=0;
if (file_exists("data/gallery/$dtu[6].dat")){
$file = file("data/gallery/$dtu[6].dat");
$totalkomm = count($file);}
echo '<b>'.$dtu[1].'</b> ('.$dtu[7].' Kb)';
echo'<a href="gallery.php?log='.$log.'&pas='.$pas.'&image='.$dtu[6].'"><img src="gallery.php?log='.$log.'&pas='.$pas.'&image='.$dtu[6].'" alt=""></a>';
echo '<br>'.$dtu[0].'<br>';
echo 'Размер: <b>'.$dtu[8].' х '.$dtu[9].'</b><br>';
echo 'Добавил: <a href="search.php?log='.$log.'&pas='.$pas.'&nick='.$nick.'">'.$dtu[2].'</a> ('.date_fixed($dtu[4]).')<br>';
echo '<a href="index.php?log='.$log.'&pas='.$pas.'&action=komm&gid='.$dtu[6].'">Комментарии</a> ('.(int)$totalkomm.')';
}}
if($errgallery!='ok'){echo '<b>Ошибка, такой фотографии не существует!</b><br>';}
}else{echo '<b>Произошла ошибка, фотографий еще нет!</b>';}
echo'<br><a href="foto.php?log='.$log.'&pas='.$pas.'&start='.$start.'">Вернуться</a>';
}
##########################################################################
## Форма загрузки фото ##
##########################################################################
if($action=="addfoto"){
echo'<b>Добавление фотографии</b><br>';
echo '<form action="foto.php?log='.$log.'&pas='.$pas.'&action=add" method="post" name="form" enctype="multipart/form-data">';
echo 'Название: <br><input type="text" value="" name="name" /><br>';
echo 'Прикрепить фото:<br><input type="file" name="file" /><br>';
echo 'Подпись к фото: <br><textarea cols="25" rows="3" name="msg"></textarea><br>';
echo '<br>';
echo '<input type="submit" value="Добавить" /></form><hr>';
echo 'Разрешается добавлять фотки с расширением jpg, gif и png<br>';
echo 'Весом не более '.formatsize($config_filesize).' и размером не более '.(int)$config_filefoto.'*'.(int)$config_filefoto.' px<br>';
echo'<br><a href="foto.php?log='.$log.'&pas='.$pas.'&start='.$start.'">Вернуться</a>';
}
##########################################################################
## Загрузка фото ##
##########################################################################
if($action=="add"){
echo'<b>Результат добавления</b><br />';
if($name!="" && $msg!=""){
if (strlen(utf_to_win($name))<50 && strlen(utf_to_win(trim($name))) > 4) {
if (strlen(utf_to_win($msg))<750 && strlen(utf_to_win(trim($msg))) > 10) {
$newfotosize=$_FILES['file']['size'];
$newfotoname=$_FILES['file']['name'];
$newfotorazmer = GetImageSize($_FILES['file']['tmp_name']);
$width = $newfotorazmer[0];
$height = $newfotorazmer[1];
$lines = file("local/dataanket/$log.dat");
foreach($lines as $k){
$dtu=explode("|",$k);
if($dtu[6]==$newfotoname){$errgallery='ok';}}
if($errgallery!='ok'){
$ext = strtolower(substr($newfotoname, 1 + strrpos($newfotoname, ".")));
if($ext=="jpg" || $ext=="gif" || $ext=="png"){
if(strlen($newfotoname)<=30){
if($width<=$config_filefoto && $height<=$config_filefoto && $height>10 && $width>10) {
if($newfotosize<=$config_filesize && $newfotosize>0) {
//--------------------- Новый антифлуд -----------------------------//
if($config_floodstime > 0){
if(flooder($ip, $php_self) == TRUE ){ @header ("Location: foto.php?log=$log&pas=$pas&action=addfoto&isset=antiflood&"); exit;}
$flood_file = fopen(BASEDIR."data/fotoflood.dat", "a+");
flock ($flood_file,LOCK_EX);
fputs ($flood_file,"$sitetime|$ip|$php_self|rn");
fflush($flood_file);
flock ($flood_file,LOCK_UN);
fclose($flood_file);
}
//--------------------- Карантин -----------------------------//
if($config_karantin > 0){
if($udata[6]+$config_karantin>$sitetime){@header ("Location: ?foto.php?log=$log&pas=$pas&action=addfoto&isset=karantin&"); exit;}
}
$log=check($log);
$msg=check($msg);
$msg=no_br($msg,"<br>");
$name=check($name);
$newfotoname=check($newfotoname);
$newfotosize=round($newfotosize/1024,1);
if(copy($_FILES['file']['tmp_name'], "local/foto/".$_FILES['file']['name'])){
$newfile=$_FILES['file']['name'];
@chmod($newfile, 0777);
@chmod("local/foto/$newfile", 0777);
$ank = @file("local/dataanket/$log.dat");
$an = explode("||",$ank[0]);
$text=$an[0].'|'.$an[1].'|'.$an[2].'||'.$an[3].'||'.$an[4].'|'.$an[5].'|'.$an[6].'|'.$an[7].'|'.$an[8].'|'.$an[9].'|'.$an[10].'|'.$an[11].'|'.$newfotoname.'|';
$text=no_br($text);
$fp=fopen("local/dataanket/$log.dat","a+");
if($fp){
flock ($fp,LOCK_EX);
fputs($fp,"$textrn");
flock ($fp,LOCK_UN);
fclose($fp);
@chmod($fp, 0777);
@chmod("local/dataanket/$log.dat", 0777);
}}
echo"Фото добавлено!";
echo'<br><a href="foto.php?log='.$log.'&pas='.$pas.'&start='.$start.'">Вернуться</a>';
}else{echo '<b>Ошибка, максимальный вес фото должен быть не более '.formatsize($config_filesize).'</b><br>';}
}else{echo '<b>Ошибка, максимальный размер файла должен быть не более '.(int)$config_filefoto.'*'.(int)$config_filefoto.' px</b><br>';}
}else{echo '<b>Ошибка, слишком длинное название фото '.check($newfotoname).' (Не более 35 символов)</b><br>';}
}else{echo '<b>Ошибка, недопустимое название '.check($newfotoname).', разрешены только цифры и знаки латинского алфавита!</b><br>';}
}else{echo '<b>Ошибка, недопустимое расширение (Только gif, jpg или png)!</b><br>';}
}else{echo '<b>Ошибка, фотография с названием '.check($newfotoname).' уже существует в базе!</b><br>';}
}else{echo '<b>Слишком длинное или короткое описание (Необходимо от 10 до 750 символов)</b><br>';}
}else{echo '<b>Слишком длинное или короткое название (Необходимо от 5 до 50 символов)</b><br>';}
}else{echo '<b>Ошибка добавления, отсутствуют важные данные!</b><br>'; }
echo'<br><img src="../images/img/back.gif" alt=""> <a href="foto.php?log='.$log.'&pas='.$pas.'&action=addfoto">Вернуться</a>';
}
}else{echo"Пароль или логин неверен!";}
include_once"files/down.php";
?>