Архив рубрики: Бесплатные

Мод – Фотографии пользователей v 2.0

Вот смотрел на этот ужасный код на писаный мною и удивлялся , как это вообще все работает .  За все время что мод был установлен , нашел кучку не доработок и решил полностью переписать функцию загрузки фото . Нашел в сети хороший класс загрузки изображений и присобачил в место старого убогого кода , результаты впечатляют . Благодаря этому классу добавилась масса функций для манипуляции загружаемого изображения . В коде использовал class.upload.php , к нему прилагается весьма хороший мануал по возможностям , советую прочесть .

Что нового —

  • Использование класса загрузки
  • Кеширование превью на странице всех фото
  • Чистый код
  • Добавлена функция подписи фото (можно заменить на свой ватермарк )
  • Автоматическое уменьшение размеров фото с сохранением пропорций
  • Ну и много всего в работе с классом

Старался сохранить совместимостьт со старой версией , так что просто обновите файлы .

foto.php —

 
<?php
require "include/bittorrent.php";
dbconn();
loggedinorreturn();
include('include/class/class.upload.php');
function bark($text) {
stdhead("Ошибка");
stderr("Ошибка" , $text);
stdfoot();
die();
 
}
 
$allowed_types = array(
"image/gif" => "gif",
"image/pjpeg" => "jpg",
"image/jpeg" => "jpg",
"image/jpg" => "jpg",
"image/png" => "png",
"image/bmp"=> "bmp"
// Add more types here if you like
);
 
$act = $_GET['act'];
if(empty($act)) bark("Произошла ошибка", "");
 
////////////////////////////////////////////////////////////
//Добавление фотографии
/////////////////////////////////////////////////////////////
if($act == "add") {
if (!($_FILES["photo"]['name'] == "")) {
if (!array_key_exists($_FILES['photo']['type'], $allowed_types))
bark("Не верный тип файла");
 
$dir_dest = 'photo';
$sql = sql_query("SELECT photo FROM users WHERE id=".sqlesc($CURUSER['id'])) or sqlerr(__FILE__, __LINE__);
$arr = mysql_fetch_array($sql);
if($arr[photo]) {
@unlink("photo/".$arr['photo']."");
@sql_query("UPDATE users SET photo = '' WHERE id=".sqlesc($CURUSER['id'])) or sqlerr(__FILE__, __LINE__);
}
 
$photo = new Upload($_FILES['photo']);
if ($photo->uploaded) {
$photo->file_max_size = 1024 * 500; // 1KB // максимальный размер загружаемого фото
$photo->file_new_name_body = md5($CURUSER['id']); // будущие имя файла
$photo->image_resize = true;  // изменение размера
$photo->image_convert = jpg; // конвертирование фото в формат .JPG
$photo->image_x = 600; // Максимальный размер в ширину
$photo->image_y = 600; // Максимальный размер в высоту
$photo->image_ratio = true; // Сохранение пропорций
$photo->image_text = 'http://AnimeClub.Lv'; // Подпись на фото графии
$photo->image_text_position = 'RB'; // Расположение подписи на фотографии
$photo->image_text_padding = 5; // Отступ подписи от краев в пикселях
$photo->Process($dir_dest);
$name = $photo->file_dst_name;
if ($photo->processed) {
@sql_query("UPDATE users SET photo=".sqlesc($name)." WHERE id=".sqlesc($CURUSER['id'])." ") or sqlerr(__FILE__, __LINE__);
header("Location: my.php");
}
$photo->Clean();
}
else
{
bark($photo->error);
 
}
} else
bark("Вы не выбрали фотографию");
 
}
 
elseif($act == "del") {
////////////////////////////////////////////////////////////
//Удаление фотографии
/////////////////////////////////////////////////////////////
 
 
$sql = sql_query("SELECT photo FROM users WHERE id=".sqlesc($CURUSER['id'])) or sqlerr(__FILE__, __LINE__);
$arr = mysql_fetch_array($sql);
if($arr[photo]) {
@unlink("photo/".$arr['photo']."");
@sql_query("UPDATE users SET photo = '' WHERE id=".sqlesc($CURUSER['id'])) or sqlerr(__FILE__, __LINE__);
header("Location: my.php");
}else {
bark("Произошла ошибка в запросе!");
}
} elseif($act == "deladmin")
{
$id = (int)$_GET["id"];
 
 
if(get_user_class() < UC_MODERATOR)
die('WTF ?');
$sql = sql_query("SELECT photo FROM users WHERE id=".sqlesc($id)) or sqlerr(__FILE__, __LINE__);
$arr = mysql_fetch_array($sql);
if($arr[photo]) {
@unlink("photo/".$arr['photo']."");
@sql_query("UPDATE users SET photo = '' WHERE id=".sqlesc($id)) or sqlerr(__FILE__, __LINE__);
 
if (!empty($_SERVER['HTTP_REFERER'])) {
header("Location:".$_SERVER['HTTP_REFERER']);
} else
header("Location: photo.php");
}else {
bark("Произошла ошибка в запросе!");
}
}
else
die('Че нах ???');
?>
 
<?php
include "include/bittorrent.php";
dbconn();
gzip();
 
stdhead("Фотографии");
begin_main_frame();
?>
<link rel="stylesheet" type="text/css" href="fancybox/fancybox.css"/>
<script type="text/javascript" src="fancybox/fancybox.js"></script>
<script>
jQuery(document).ready(function() {
jQuery("a.screen").fancybox({
'overlayShow' : false,
});
});
 
</script>
<?
 
begin_frame("Фотографии", true);
 
$res1 = sql_query("SELECT COUNT(*) FROM users WHERE photo > '0'");
$row1 = mysql_fetch_array($res1);
$count = $row1[0];
 
 
$perpage = 9;
list($pagertop, $pagerbottom, $limit) = pager($perpage, $count, $_SERVER["PHP_SELF"] . "?" );
echo $pagertop;
$res = sql_query("SELECT id , username , class, photo FROM users WHERE photo > '0' $limit") or sqlerr(__FILE__, __LINE__);
$perrow = 3; // Количество картинок в ряду
$i = 0;
echo '<table width="100%" cellspacing="5" cellpadding="5"><tr>';
while($row=mysql_fetch_array($res)){
 
echo "<td valign='center' align='center' class='brd' style='width:30%;padding:5px;'><noindex><a class=\"screen\" href=\"".$BASEURL."/photo/".$row['photo']."\"  >
<img border=0 style='max-width:200px; max-height:160px' src=\"/thumb.php?file=/photo/".$row['photo']."&amp;size=160&amp;nocache=1\" /></a></noindex><br>
Фото by <a href=user/id".$row['id'].">" .get_user_class_color($row["class"], htmlspecialchars_uni($row["username"]))."</a>";
if(get_user_class() >= UC_MODERATOR)
echo " - <a href='/foto.php?act=deladmin&amp;id=".$row['id']."'>D</a>";
echo "</td>";
 
$i++;
if ($i == $perrow)
{
echo "</tr><tr>";
$i = 0;
}
 
}
echo '</tr></table>';
echo $pagerbottom;
end_frame();
end_main_frame();
stdfoot();
 
?>

в userdetails.php

 
if($user["photo"])
{
?><script type="text/javascript" src="fancybox/fancybox.js"></script>
<script>
jQuery(document).ready(function() {
jQuery("a.screen").fancybox({
'overlayShow' : false,
 
});
});
 
</script>
<link rel="stylesheet" type="text/css" href="fancybox/fancybox.css"/>
<?
begin_frame("Фото");
print("<table class=\"inlay\" width=\"100%\">\n");
print("<tr>\n<td width=\"50%\" align='center'>\n");
print ("<a href=\"".$BASEURL."/photo/".$user["photo"]."\" class=\"screen\"><img border=0 style='max-width:200px; max-height:160px' src=\"/thumb.php?file=/photo/".$user['photo']."&amp;size=160&amp;nocache=1\" /></a>");
if(get_user_class() >= UC_MODERATOR)
echo "<br /><a href='/foto.php?act=deladmin&amp;id=".$id."'>Удалить Фото</a>";
print("</td>\n<tr>\n</table>\n");
end_frame();
}

Сам класс загрузки можете скачать на сайте — скачать , и файл class.upload.php кинте в папку /include/class.
Для создания превьюшек использовался этот скрипт — thumb , закиньте файл thumb.php в корень сайта .
В папку pic , закиньте изображение .
Создайте папку /cache/thumbs , права доступа 777 .

Вроде все , пользуйтесь . 🙂

Карта сайта(Sitemap.xml) для поисковиков

На прошлой неделе в аську была атаке на счет карты сайта , все хотели купить код , тот что показывал на форуме .
Тот кодяру удалил , вот решил накатать новый . За данный мод просил 25 рублей , но отдам бесплатно (кому не жалко копейки , скинте бобла на кошелек блога ).

Создаем файл sitemap.php и внутрь пихаем —

<?php
require "include/bittorrent.php";
global $DEFAULTBASEURL;
dbconn();
function t($t=false){
    if(!$t) return date('c'); //2004-02-12T15:19:21+00:00
    return date('c',strtotime($t));
}
 
$txt = '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">';
 
$sql = sql_query("SELECT id,added FROM torrents ORDER BY id DESC");
while($a = mysql_fetch_assoc($sql)){
    $txt .='
<url><loc>'.$DEFAULTBASEURL.'/details.php?id='.$a['id'].'</loc><lastmod>'.gmdate('c',$a['added']).'</lastmod><changefreq>daily</changefreq><priority>0.50</priority></url>';
}
 
$sql = sql_query("SELECT id FROM categories");
while($a = mysql_fetch_assoc($sql)){
    $txt .='
<url><loc>'.$DEFAULTBASEURL.'/browse.php?cat='.$a['id'].'</loc><lastmod>'.t().'</lastmod><changefreq>hourly</changefreq><priority>0.50</priority></url>';
}
 
 
$txt .='
</urlset>
 
';
 header ("Content-Type:text/xml");  
echo $txt;
?>

Для быстрой индексации , добавляем сайты в панель для веб мастера от
Google — https://www.google.com/webmasters/tools/home?hl=ru
Yandex — http://webmaster.yandex.ru/wmconsole/

Удачи !

Отлов мультитрекерных аккаунтов

Мод выбирает всех пиров у которых более одного ИПа, которые ещё не забанены, и помечает их как «подозрительных».

Конечно, этот скрипт не даёт 100% точности, но лучше хоть что-то, чем ничего.

Скрин:

Anti-Multi

Код:

<?php
include("include/bittorrent.php");
dbconn();
stdhead();
begin_frame();
$count = 0;
$res = sql_query("SELECT GROUP_CONCAT(DISTINCT p.torrent) AS torrents, GROUP_CONCAT(DISTINCT p.ip) AS ips, p.userid, u.username FROM peers p LEFT JOIN users u ON p.userid = u.id WHERE u.enabled = 'yes' GROUP BY p.userid ORDER BY p.torrent;");
while ($row = mysql_fetch_assoc($res)) 
{
    if (count(explode(",",$row["ips"])) > 1 && count(explode(",",$row["torrents"])) < 5) 
    {
        $array[] = array
        (
            "id" => $row["userid"],
            "name" => $row["username"],
            "ips" => explode(",",$row["ips"]), 
            "torrents" => explode(",",$row["torrents"]),
        );
        $count++;
    }
}
$res = sql_query("SELECT id, name FROM torrents");
while ($row = mysql_fetch_assoc($res)) $torrents[$row["id"]] = $row["name"];
 
print "<h1>Отлов мультитрекерных аккаунтов</h1>";
print "<h2>Подозрительных личностей: $count</h2>";
 
print "<table width=100% cellpadding=5>";
foreach ($array as $v) 
{
    print "<tr><td><a href=/userdetails.php?id=".$v["id"].">".$v["name"]."</a></td><td>";
 
    foreach ($v["ips"] as $ip)
        print "<a href=/usersearch.php?ip=".$ip.">".$ip."</a><br />";
 
    print "</td><td>";
 
    foreach ($v["torrents"] as $t)
        print "<a target=_blank href=/details.php?id=".$t."&dllist=1#seeders>".$torrents[$t]."</a><br />";
 
    print "</td></tr>";
}
print "</table>";
end_frame();
stdfoot();
?>

Мод — Фотографии пользователей

При помощи этого мода , Ваши пользователи смогут загружать свои фотки себе в профиль . Так же есть страница на которой выводяться все фотки пользователей разом .
При загрузке , если фото больше размеров 800х600 пикселей , оно автоматом уменьшается (Размер можно изменить) , максимальный вес фотки 500 кб (тоже можно изменить). Поддерживаемые форматы — JPG, JPEG, GIF, PNG .
Модераторы и выше , могу удалять фотки пользователей на странице Фоток или из профиля пользователя .
Вообщем мод простенький , ничего сложного и мутного .
Читать далее Мод — Фотографии пользователей