upload файла на kmx.ru при помощи socket

<?php
/*
*Upload файла на kmx.ru через socket
*автор: nc_soft
*28.08.07
*/

/*для uploada нам потребуется изучить структуру форм и заголовки по адресу
http://wap.kmx.ru/upload
после изучения страницы можно заметить, что чтобы попасть на форму с аплоадом,
необходимо всего лишь послать такую куку
uploadkey=284891272; expires=Thu, 31-Dec-2009 21:00:00 GMT
(где цифры как вы правильно догадались это секретный ключ), далее изучаем саму форму и
приходим к выводу, что необходимо послать следующие данные:
dir (имя директории в которую сохранить)
file1 (первый файл)
file2 (второй файл) итд*/

//имя директории в которую грузим
$dir='/';

//имя пересылаемого файла
$file_name = 'example.jar';

//MIME тип пересылаемого файла
$application = 'application/java-archive';

//запись файла в переменную
$bufer = file_get_contents('./example.jar');

//имя поля формы для файла
$form_file_name = 'file1';

//генерация разделителя
$boundary = md5(time());

//формируем POST данные
$post_str = '';
$post_str .= "--$boundary\r\n";
$post_str .="Content-Disposition: form-data; name=\"dir\"\r\n\r\n"; 
$post_str .= "$dir\r\n";

//формируем отправку файла
$post_str .= "--$boundary\r\n";
$post_str .= "Content-Disposition: form-data; name=\"$form_file_name\"; filename=\"$file_name\"\r\n";
$post_str .= "Content-Type: $application\r\n";
$post_str .= "Content-Transfer-Encoding: binary\r\n\r\n";
$post_str .= "$bufer\r\n";
$post_str .= "--$boundary--\r\n";


//сайт
$host='wap.kmx.ru';

//обработчик формы
$path='/upload';

//открываем сокет
$fp = @fsockopen("tcp://".$host, 80, $errno, $errstr, 10);
if (!$fp)
{
    die($errstr.':'.$errno);
}
else
{
    $header  = "POST $path HTTP/1.0\r\n";
    $header .= "Host: $host\r\n";
    
    //подделываем  кукис
    $header .= "Cookie: uploadkey=284891272; expires=Thu, 31-Dec-2009 21:00:00 GMT\r\n";
    
    //указываем что это пост данные с вложенным файлом
    $header .= "Content-Type: multipart/form-data; boundary=$boundary\r\n";
    $header .= "Content-Length: ".strlen($post_str)."\r\n\r\n";

    //посылаем данные
    fwrite($fp, $header.$post_str);

    $headers='';

    //читаем заголовки
    while ($str = trim(fgets($fp, 4096)))
    $headers .= "$str\n";

    $body='';

    //читаем ответ
    while (!feof($fp))
    $body.= fgets($fp, 4096);

    //закрываем сокет
    fclose($fp);
}

//выводим данные
echo $headers.'<hr/>'.$body;

?>
28 августа 2007, 12:16

upload файла на kmx.ru при помощи CURL

<?php
/*
*Upload файла на kmx.ru при помощи CURL
*автор: nc_soft
*28.08.07
*/

/*подготовим данные для отправки
dir директория куда сохраняем
file1 файл1
file2 файл2 итд
*/

$params = array(
'dir'=>'/',
'file1' => '@z:/home/snippets/www/articles/http/example.jar'
);

/*обратите внимание, что путь к файлу необходимо указать абсолютный,
его можно сформировать и так $_SERVER['DOCUMENT_ROOT'].'/example.jar'
также необходимо поставить @ перед адресом файла
*/

//инициализируем сеанс cURL
$ch = curl_init();

//задаем адрес
curl_setopt ($ch, CURLOPT_URL, 'http://wap.kmx.ru/upload');

//устанавливаем кукис (если необходимо)
curl_setopt($ch,CURLOPT_COOKIE,'uploadkey=284891272; expires=Thu, 31-Dec-2009 21:00:00 GMT');

//указываем что это POST данные
curl_setopt ($ch, CURLOPT_POST, 1);

//отправляем POST запрос
curl_setopt ($ch, CURLOPT_POSTFIELDS, $params);

//выводим данные в переменную
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

$buf = curl_exec($ch);

//закрываем CURL
curl_close($ch);

//выводим результат
echo $buf;
?>
28 августа 2007, 12:15

перекодировка из hex-unicode

<?php
/*
*перекодировка из hex-unicode
*автор: nc_soft
*28.08.07
*/

//в переменную s добавляется строка для перевода
//пара символов для теста:
$s='АБВ';

//регулярное выражение
$s=preg_replace_callback("|&#x(.{3});|is","unicode2win",$s);

//вывод обрабатываемой строки в кодировке виндовс-1251
echo $s;

//функция обратного вызова для обработки
function unicode2win($val)
{
    $val=hexdec($val[1]);
    if ($val==401) return "Ё";
    if ($val==451) return "ё";
    return chr($val-848);
}
?>
28 августа 2007, 07:39

создание таблицы в mysql

<?php
/*
*создание таблицы в БД
*автор: nc_soft
*25.08.07
*/

//подключаем файл конфигурации
require_once('mysql.php');

/*формируем запрос
*таблица будет состоять всего из 2 полей,
*(имя юзера и ключа)
*кодировку установим utf-8
*/

$q="CREATE TABLE `test_table` (
                        `id` INT(7) NOT NULL AUTO_INCREMENT,
                        `user` TINYTEXT NOT NULL,
                        PRIMARY KEY (`id`) ) TYPE=MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci; ";

//выполняем запрос
if (false==mysql_query($q))
{
    //в случаи ошибки выводим информацию
    die(mysql_error());
}
else 
{
    //если нет ошибки, то запрос прошел удачно
    echo 'ok';
}

?>
26 августа 2007, 02:38

подключение к сайту через proxy с использованием socket

<?php
/*
*подключение к сайту через прокси с использованием socket
*автор: nc_soft
*25.08.07
*/

//используем прокси
$proxy='165.228.130.10';

//порт для прокси
$port='3128';

//сайт
$host='wen.ru';

//запрашиваемая страница
$path='/';

//открываем сокет
$fp = fsockopen("tcp://".$proxy, $port, $errno, $errstr, 10);
if (!$fp)
{
    die("$errstr:$errno");
}
else
{
    //формируем заголовки
    $out  = "GET http://$host$path HTTP/1.0\r\n";
    $out .= "Host: $host\r\n";
    $out .= "Connection: Close\r\n";
    $out .= "\r\n";

    //отправляем запрос
    fwrite($fp, $out);

    //читаем ответ
    while (!feof($fp))
    {
        echo fgets($fp, 1024);
    }

    //закрываем сокет
    fclose($fp);
}

/*
на момент написания snippet этот проксик работал, обычно бесплатные прокси живут не долго, 
поэтому для теста надо найти рабочий
*/

?>
26 августа 2007, 02:17

подключение к сайту через proxy с использованием CURL

<?php
/*
*подключение к сайту через прокси с использованием  CURL
*автор: nc_soft
*25.08.07
*/

//сайт
$url='http://wen.ru';

//прокси
$proxy='165.228.130.10:3128';

//открываем сеанс
$ch = curl_init();

//устанавливаем прокси
curl_setopt($ch, CURLOPT_PROXY, $proxy);

curl_setopt($ch, CURLOPT_URL, $url);

//смотрим заголовки (ради интереса :) )
curl_setopt($ch, CURLOPT_HEADER, 1);

//выводим в переменную
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($ch);

curl_close($ch);

//смотрим что получилось
echo $result;

/*
на момент написания snippet этот проксик работал, обычно бесплатные прокси живут не долго, 
поэтому для теста надо найти рабочий
*/

?>
26 августа 2007, 02:05

генерация случайного числа на картинке

<?php
/*
*Генерация случайного числа на картинке
*автор: nc_soft
*25.08.07
*/

$rand = mt_rand(10000,99999);  //случайное число

$img = "fone.jpg"; //фон (jpg файл) 90*68

$pic = imageCreateFromjpeg($img); //создаем картинку

$size = 24; //размер шрифта

$angle = rand (-10, 10); //угол поворота
$x = rand(-2,15); //смещение по оризонтали
$y = rand(35,60); //смещение по вертикали
$color = rand(1000,9999999); //случайный цвет 

$font = 'times'; //шрифт

ImageTTFtext($pic, $size, $angle , $x, $y, $color, $font, $rand);

/*
imagettftext(image, size, angle, x, y, col, fontfile, text)

Итак, size — размер шрифта текста в пикселях,
angle — угол наклона текста в градусах (0 — нормальный горизонтальный вывод слева направо, 90, к примеру — снизу вверх, и так далее по кругу против часовой стрелки).
Параметр fontfile — путь к самому .ttf файлу шрифта и, наконец, 
text — строка, представляющая выводимый текст,
функция предусматривает возможность переноса строк,
тоесть удобна для вывода именно текста. 
Для переноса нужно вставить последовательность символов \n\r (перенос строки и возврат каретки).
*/

//выдача
header('Content-type:image/jpeg');
imagejpeg($pic);
imagedestroy($pic);
?>
26 августа 2007, 01:36

подключение к mysql

<?php
/*
*Пример подключения к БД с установкой нужной кодировки
автор: nc_soft
*25.08.07
*/

$dblocation='localhost';
$dbname='имя базы';
$dbuser='имя юзера';
$dbpasswd='пароль';

//подключаемся
$dbcnx=mysql_connect($dblocation,$dbuser,$dbpasswd);

if (!$dbcnx)
die('база данных недоступна!');

//выбираем базу
mysql_select_db($dbname,$dbcnx);

//устанавливаем кодировку
mysql_unbuffered_query("SET `character_set_client` = 'utf8';"); 
mysql_unbuffered_query("SET `character_set_results` = 'utf8';");  
mysql_unbuffered_query("SET `collation_connection` = 'utf8_general_ci';");

/*
можно сохранить этот файл как mysql.php и подключать к файлам проекта, где требуется работа с БД
*/

?>
26 августа 2007, 00:13

email с любым обратным адресом

<?php
/*
*отправка письма с любым обратным адресом
*25.08.07
*/

if (!empty($_POST))
{
//От кого
$from=$_POST['from'];

//кому
$to=$_POST['to'];

//тема
$thm=$_POST['thm'];

//текст
$txt=$_POST['txt'];

//отправляем
mail($to,$thm,$txt,"From: <$from>\r\nContent-type:text/plain;charset=utf-8");

/*
*p.s Если внимательно рассмотреть заголовки в своем любимом почтовом клиенте, то такая подстава присекается довольно быстро
*/

header ('Location: '.$_SERVER['SCRIPT_NAME'].'?ok=1');
die();
}

if (isset($_GET['ok']))
echo '<p>письмо отправлено</p>';

//форма
?>
<form action="<?=$_SERVER['SCRIPT_NAME'];?>" method="post">
<p>
кому<br />
<input name="to" /><br />
от кого<br />
<input name="from" /><br />
тема<br />
<input name="thm" /><br />
текст<br />
<textarea name="txt" cols="20" rows="5"></textarea><br />
<input type="submit" value="отправить" />
</p>
</form>
26 августа 2007, 00:07

метод POST при помощи CURL

<?php
/*
*POST запрос при помощи CURL
*автор: nc_soft
*25.08.07
*/

//пост данные
$datastr='a=1&b=2';
//инициализируем сеанс curl (адрес обработчика)
$ch=curl_init("http://site.ru/request.php");

//включаем передачу данных методом POST
curl_setopt($ch, CURLOPT_POST, 1);

//настраиваем, чтобы сеанс выводился не в браузер, а в переменную
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//указываем строку с  POST-данными
curl_setopt($ch, CURLOPT_POSTFIELDS, $datastr);

//выполняем запрос
$buf=curl_exec($ch);

//закрываем сеанс cURL
curl_close($ch);

//теперь можно вывести результат запроса, если это необходимо
echo $buf;
?>
25 августа 2007, 23:59

GET запрос при помощи CURL

<?php
/*
*GET запрос при помощи CURL
*автор: nc_soft
*25.08.07
*/


//инициализируем сеанс curl (адрес страницы)
$ch=curl_init("http://wen.ru");

//настраиваем, чтобы сеанс выводился не в браузер, а в переменную
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//выполняем запрос
$buf=curl_exec($ch);

//закрываем сеанс cURL
curl_close($ch);

//теперь можно вывести результат запроса, если это необходимо
echo $buf;
?>
25 августа 2007, 23:58

подсветка php кода

<?php
/*
*подсветка кода
*автор: nc_soft
*25.08.07
*/

$num=30;
$i=100;
$rand='';
$mtrand='';
while ($i)
{
    $rand.=rand(0,100)."\n";
    $mtrand.=mt_rand(0,100)."\n";
    $i--;
}
//fwrite(fopen('rand.prn','w+'),$rand);
//fwrite(fopen('mtrand.prn','w+'),$mtrand);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
body {font-family:Arial, Helvetica, sans-serif; font-size:12px}
div.main {margin:1%}
div.code {border:1px solid black; background-color: #FFFFCC; padding:5px}
</style>
<title>Untitled Document</title>
</head>

<body>
<div class="main">
<div class="code">
<?
highlight_file('rand.php');
?>
</div>
</div>

</body>
</html>
25 августа 2007, 22:35

постраничная навигация

<?php
/*постраничная навигация
*автор: nc_soft
*25.08.07
*/

/*предположим, что у нас есть следующие данные:
$page=номер страницы
$all=общее количество выводимых единиц*/

$all=50; //для примера

//определяем номер страницы (если не задано, то естественно 1)
$page=(isset($_GET['page'])) ? (int)$_GET['page'] : 1;

//высчитываем общее число страниц (пусть разбивка по 5 элементов на страницу)
$num_pages=ceil($all/5);

//высчитываем с какой позиции надо выводить данные
$start=$page*5-5;

//обработка "дурацких" номеров страниц
if ($page > $num_pages || $page < 1)
{
    $page=1;
    $start=0;
}

//печатаем
echo '<p>';

for($pr = '', $i =1; $i <= $num_pages; $i++)
{
    echo $pr=(($i == 1 || $i == $num_pages || abs($i-$page) < 2) ? ($i == $page ? " [$i] " : ' <a href="'.$_SERVER['SCRIPT_NAME'].'?page='.$i.'">'.$i.'</a> ') : (($pr == ' ... ' || $pr == '')? '' : ' ... '));
}
echo '</p>';

//вот такая вот жесть :)

?>
25 августа 2007, 22:34

хранение изображений в mysql

<?php
/*
*хранение изображений в базе данных
*взято из книги "Головоломки на PHP для хакера"
*автор: http://softtime.ru
*25.08.07
*

//структура таблицы

CREATE TABLE image (
id_image int(11) NOT NULL auto_increment,
name tinytext NOT NULL,
content longblob NOT NULL,
PRIMARY KEY  (id_image)
) TYPE=MyISAM;

*/
?>
<form enctype='multipart/form-data' method=post>
<input type="file" name="image"><br>
<input type=submit value='Загрузить'>
</form>
<?php
// Число изображений на странице
$pnumber = 3;

// Устанавливаем соединение с базой данных

// Сетевой адрес MySQL-сервера
$dblocation = "localhost";
// Имя базы данных
$dbname = "book";
// Пользователь
$dbuser = "root";
// Его пароль
$dbpasswd = "";
// Устанавливаем соединение с базой данных
$dbcnx = mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx) exit ("К сожалению, не доступен сервер MySQL : ".mysql_error());
// Выбираем базу данных
if (!@mysql_select_db($dbname,$dbcnx)) exit("К сожалению, не доступна база данных : ".mysql_error());

// Обработчик HTML-формы
if(!empty($_FILES))
{
    // Проверяем является ли переданный файл картинкой
    if(substr($_FILES['image']['type'],0,5) == 'image')
    {
        // Читаем содержимое файла
        $content = file_get_contents($_FILES['image']['tmp_name']);
        // Уничтожаем файл во временной директории
        unlink($_FILES['image']['tmp_name']);

        // Экранируем спец-символы в бинарном содержимом файла
        $content = mysql_escape_string($content);

        // Формируем запрос на добавление файла в таблицу
        $query = "INSERT INTO image VALUES(NULL, '".$_FILES['image']['name']."', '$content')";
        if(mysql_query($query))
        {
            // Осуществляем автоматическую перезагрузку страницы
            echo "<HTML><HEAD>
                <META HTTP-EQUIV='Refresh' CONTENT='0; URL=$_SERVER[PHP_SELF]'>
             </HEAD></HTML>";
        } else exit(mysql_error());
    }
}
?>

Для вывода файла можно воспользоваться таким скриптом:
<?php
// Устанавливаем соединение с базой данных
require_once("config.php");

// Провряем передан ли параметр id_image
// и является ли он целым числом, чтобы
// предотвратить SQL-инъекцию
if(!preg_match("|^[\d]+$|",$_GET['id_image']))
{
    exit("Недопустимый формат URL-запроса");
}

// Извлекаем файл из базы данных
$query = "SELECT * FROM image
            WHERE id_image = $_GET[id_image]";
$img = mysql_query($query);
if(!$img) exit(mysql_error());
$image = mysql_fetch_array($img);

// Отсылаем заголовки на загрузку файла
header("Content-type: image/*");
// Отправляем файл пользователю
echo $image['content'];
?>
25 августа 2007, 22:32

передача данных методом GET через socket

<?php
/*
*передача данных методом GET через сокет
*автор: nc_soft
*25.08.07
*/

//сайт
$host='wen.ru';

//скрипт-обработчик (получим главную страницу)
$path='/';

//открываем сокет
$fp = @fsockopen("tcp://".$host, 80, $errno, $errstr, 10);
if (!$fp)
{
    die($errstr.':'.$errno);
}
else
{
    $out  = "GET $path HTTP/1.0\r\n";
    $out .= "Host: $host\r\n";
    $out .= "Connection: Close\r\n\r\n";

    //посылаем данные
    fwrite($fp, $out.$data);

    $headers='';

    //читаем заголовки
    while ($str = trim(fgets($fp, 4096)))
    $headers .= "$str\n";

    $body='';

    //читаем ответ
    while (!feof($fp))
    $body.= fgets($fp, 4096);

    //закрываем сокет
    fclose($fp);
}

//выводим данные
echo $headers.'<hr/>'.$body;

?>
25 августа 2007, 22:15

передача данных методом POST через socket

<?php
/*
*передача данных методом POST через сокет
*автор: nc_soft
*25.08.07
*/

//сайт
$host='site.ru';

//скрипт-обработчик
$path='/index.php';

//данные
$data='a=1&b=2';

//открываем сокет
$fp = @fsockopen("tcp://".$host, 80, $errno, $errstr, 10);
if (!$fp)
{
    die($errstr.':'.$errno);
}
else
{
    $out  = "POST $path HTTP/1.0\r\n";
    $out .= "Host: $host\r\n";
    //указываем что это пост данные
    $out .= "Content-type: application/x-www-form-urlencoded\r\n";
    //указываем количество байт
    $out .= "Content-Length: ". strlen($data) ."\r\n";
    $out .= "Connection: Close\r\n\r\n";

    //посылаем данные
    fwrite($fp, $out.$data);

    $headers='';

    //читаем заголовки
    while ($str = trim(fgets($fp, 4096)))
    $headers .= "$str\n";

    $body='';

    //читаем ответ
    while (!feof($fp))
    $body.= fgets($fp, 4096);

    //закрываем сокет
    fclose($fp);
}

//выводим данные
echo $headers.'<hr/>'.$body;

?>
25 августа 2007, 22:15

транслит

<?php
/**
*
*Транслит
*автор: nc_soft
*25.08.07
*
Функция предусматривает обработку текста как с транслитерацией, так и без, в качестве управляющего символа выбран ~
*/

echo transl('yeto tekst tranlitom ~yeto beZ izmenenij');

function transl($string) {
    //проверка отсутствия русских букв

    if (preg_match("/[А-Яа-яЁё]+/su",$string))
    {
        return $string;
    }
    if ($string[0]=='~')
    return substr($string,1);

    $tran = array(
    "A"=>"А",
    "a"=>"а",
    "B"=>"Б",
    "b"=>"б",
    "V"=>"В",
    "v"=>"в",
    "G"=>"Г",
    "g"=>"г",
    "D"=>"Д",
    "d"=>"д",
    "E"=>"Е",
    "e"=>"е",
    "Zh"=>"Ж",
    "ZH"=>"Ж",
    "zh"=>"ж",
    "Z"=>"З",
    "z"=>"з",
    "I"=>"И",
    "i"=>"и",
    "J"=>"Й",
    "j"=>"й",
    "K"=>"К",
    "k"=>"к",
    "L"=>"Л",
    "l"=>"л",
    "M"=>"М",
    "m"=>"м",
    "N"=>"Н",
    "n"=>"н",
    "O"=>"О",
    "o"=>"о",
    "P"=>"П",
    "p"=>"п",
    "R"=>"Р",
    "r"=>"р",
    "S"=>"С",
    "s"=>"с",
    "T"=>"Т",
    "t"=>"т",
    "U"=>"У",
    "u"=>"у",
    "F"=>"Ф",
    "f"=>"ф",
    "H"=>"Х",
    "h"=>"х",
    "X"=>"Х",
    "x"=>"х",
    "C"=>"Ц",
    "c"=>"ц",
    "Ts"=>"Ц",
    "ts"=>"ц",
    "Ch"=>"Ч",
    "ch"=>"ч",
    "Sh"=>"Ш",
    "SH"=>"Ш",
    "sh"=>"ш",
    "Sch"=>"Щ",
    "SCH"=>"Щ",
    "sch"=>"щ",
    "''"=>"ъ",
    "Y"=>"Ы",
    "y"=>"ы",
    "'"=>"ь",
    "Ye"=>"Э",
    "YE"=>"Э",
    "ye"=>"э",
    "Yu"=>"Ю",
    "yu"=>"ю",
    "Ya"=>"Я",
    "ya"=>"я",
    "YU"=>"Ю",
    "YA"=>"Я",
    "Yo"=>"ё",
    "YO"=>"Ё",
    "W"=>"Ш",
    "w"=>"ш",
    'q'=>'ь'
    );

    $tran1= array(
    'нэ '=>'ные ',
    'нэ'=>'ные'
    );

    if (preg_match("/\~+/su",$string))
    {
        $pos=strpos($string,"~");
        $str=substr($string,0,$pos);
        $str=latrus($str,$tran,$tran1);
        $tok=strtok($string,"~");
        $k=3;
        while ($tok=strtok("~"))
        {


            if ($k%2==0)
            {
                $str.=latrus($tok,$tran,$tran1);
                $k++;
            }
            else {
                $str.=$tok;
                $k++;
            }
        }

    }
    else
    {
        return     latrus($string,$tran,$tran1);
    }
    return $str;
}

function latrus($str,$tran,$tran1)
{
    $str=strtr($str,$tran);
    $str=str_replace("_"," ",$str);
    return strtr($str,$tran1);
}

?>
25 августа 2007, 22:14

антимат

<?php
# 25.08.07
##################################################################
#            Скрипт diktator_antimat v1.1_alfa                   #
#           Автор Дмитрий Перов method_05@list.ru                #
#                                                                #
#   Скрипт Распостраняется бесплатно , ссылка                    #
#   На Автора - по желанию...(знаю о чём вы сейчас подумали=))   #
#                                                                #
#   Обработал этим скриптом большой объём текста, вот            #
#  слова которые распознаются как маты:грёбля, грёбаный, глухую ,#
#  ХЛЕБАЛО,ХЛЕБАЛЬНИК,хулиган...                                 #
#                                                                #
#            Сложно просмотреть и предусмотреть Всё...           #
#                Так что о багах - мне на мыло...                #
#                                                                #
#       Всякого рода Модификации скрипта без согласования        #
#                      с Автором запрещены!                      #
#                                                   Удачи!       #
##################################################################


@setlocale(LC_ALL, array ('ru_RU.CP1251', 'rus_RUS.1251'));

$pattern = "/\w{0,5}[хx]([хx\s\!@#\$%\^&*+-\|\/]{0,6})[уy]([уy\s\!@#\$%\^&*+-\|\/]{0,6})[ёiлeеюийя]\w{0,7}|\w{0,6}[пp]([пp\s\!@#\$%\^&*+-\|\/]{0,6})[iие]([iие\s\!@#\$%\^&*+-\|\/]{0,6})[3зс]([3зс\s\!@#\$%\^&*+-\|\/]{0,6})[дd]\w{0,10}|[сcs][уy]([уy\!@#\$%\^&*+-\|\/]{0,6})[4чkк]\w{1,3}|\w{0,4}[bб]([bб\s\!@#\$%\^&*+-\|\/]{0,6})[lл]([lл\s\!@#\$%\^&*+-\|\/]{0,6})[yя]\w{0,10}|\w{0,8}[её][bб][лске@eыиаa][наи@йвл]\w{0,8}|\w{0,4}[еe]([еe\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[uу]([uу\s\!@#\$%\^&*+-\|\/]{0,6})[н4ч]\w{0,4}|\w{0,4}[еeё]([еeё\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[нn]([нn\s\!@#\$%\^&*+-\|\/]{0,6})[уy]\w{0,4}|\w{0,4}[еe]([еe\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[оoаa@]([оoаa@\s\!@#\$%\^&*+-\|\/]{0,6})[тnнt]\w{0,4}|\w{0,10}[ё]([ё\!@#\$%\^&*+-\|\/]{0,6})[б]\w{0,6}|\w{0,4}[pп]([pп\s\!@#\$%\^&*+-\|\/]{0,6})[иeеi]([иeеi\s\!@#\$%\^&*+-\|\/]{0,6})[дd]([дd\s\!@#\$%\^&*+-\|\/]{0,6})[oоаa@еeиi]([oоаa@еeиi\s\!@#\$%\^&*+-\|\/]{0,6})[рr]\w{0,12}/i";

$replacement = "Цензура";
 $text='здесь в качестве примера идет жеский мат, который я не буду применять на страницах snippets :)';
$text = preg_replace($pattern, $replacement, $text);
 echo $text;

/*
$pattern - то что ищем

$replacement - то чем заменяем

$text - то что обрабатываем
*/

?>
25 августа 2007, 22:14

запись файла по ftp через fopen()

<?php
/*
запись файла по ftp через fopen()
*автор: nc_soft
*25.08.07
*/

$user='test.wen.ru'; //юзер
$pass='xxxxxxxxxx'; //пароль
$host='wen.ru'; //хост без префикса
$file='new_file.html'; //имя файла (не должен существовать)

$f=fopen("ftp://$user:$pass@$host/$file",'w'); //открываем в режиме w (с w+ не получится), если предполагается записывать данные, то лучше открывать в режиме wb (бинарный)
fwrite($f,'<html><body>тестовая страница</body></html>'); //запишем тестовую страницу
fclose($f); //закрываем

/*если такой файл уже существует, то запись не произойдет*/
?>
25 августа 2007, 22:13

простой текстовый счетчик на файле

<?php
/*
простой текстовый счетчик на файле
*автор: nc_soft
16.06.07
*/

$ua=$_SERVER['HTTP_USER_AGENT']; //браузер
$ip=$_SERVER['REMOTE_ADDR']; //ip

$uniq=serialize(array($ip,$ua))."\n"; //упакованные данные

$store='./counter/counter.dat'; //файл-хранилище, права 666 и выше

$offset=8*3600; //смещение по времени в секундах (у моего хостера +8 часов от Москвы)
$date_now=date('d',time()+$offset); //сегодняшнее число
$date_access=date('d',filemtime($store)+$offset); //время последней модификации файла

if ($date_now!=$date_access && file_exists($store))
{
    //если даты не совпадают, то пора обнулить счетчик, удаляем файл (для директории надо выставить права 766)
    unlink($store);
}

if (!file_exists($store))
{
    //если файла данных не существует

    $hit=1;
    $host=1;
}
else
{
    //получаем стоки из файла
    $data=file($store);
    $data[]=$uniq; //добавляем к данным текущего юзера

    $hit=count($data); //сколько строк, столько и хитов

    //считаем хосты
    $ip_ua=array();
    $ip_ua[]=$uniq; //запихиваем текущего юзера

    foreach ($data as $v)
    {
        if (!in_array($v,$ip_ua)) //если такой комбинации нет, то
        $ip_ua[]=$v; //увеличиваем уникальные записи
    }

    $host=count($ip_ua); //число уникальных строк

}

//теперь записываем все в файл
$f=fopen($store,'a+'); //создаем/открываем
flock($f,2); //блокируем
fwrite($f,$uniq); //записываем упакованный массив
fclose($f); //закрываем (блокировка снимется сама)

echo $host;
echo '/';
echo $hit;

?>
25 августа 2007, 22:10