В php 5 ввели такую полезную функцию, как __autoload. Чтобы каждый раз не подключать файл класса, мы 1 раз пишем функцию
Вводится правило, что все классы хранятся в папке classes и имеют имя *.class.php.
Теперь можно забыть про подключение классов, можем просто писать
Остальное сделаем функция( подключит 4 файла в папке classes: templates.class.php, core.class.php, mysql.class.php, exp.class.php)
Определение IP пользователя:
Определение браузера пользователя
Случайная строка( принимает длину нужной строки. Если задан второй аргумент, то длинна строки будет выбрана случайно в промежутке $length..$interval )
Преобразование размера файла в байтах в "человеческие" величины. Принимает размер в байтах
Отправка сообщений на email
$info - указываем true, чтобы в письмо добавилась информация о IP и браузере пользователя
$pr - приоритет письма 1..5
Функция создание мини-изображений
$imgfile - путь к исходному изображению
$imgthumb - имя для нового файла
$newwidth - ширина нового файла( как правило уменьшают по ширине)
Транслит строки
$lower - преобразовать в нижний реестр
$punkt - оставлять точки
Человеческая установка куков...
$expires - срок жизни кука в днях
Код:
function __autoload( $class_name )
{
require_once 'classes/' . $class_name . '.class.php';
}
Теперь можно забыть про подключение классов, можем просто писать
Код:
$tpl = new templates();
$core = new core();
$db = new mysql();
$exp = new exp();
Определение IP пользователя:
Код:
function getip(
{
if ( getenv('REMOTE_ADDR') && strcasecmp( getenv('REMOTE_ADDR'), 'unknown') )
return getenv("REMOTE_ADDR");
elseif ( !empty($_SERVER['REMOTE_ADDR']) && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown'))
return $_SERVER['REMOTE_ADDR'];
else
return "unknown";
}
Код:
function getagent()
{
if ( getenv('HTTP_USER_AGENT') && strcasecmp( getenv('HTTP_USER_AGENT'), 'unknown') )
return text_filter( getenv('HTTP_USER_AGENT' ));
elseif ( !empty($_SERVER['HTTP_USER_AGENT']) && strcasecmp($_SERVER['HTTP_USER_AGENT'], 'unknown') )
return text_filter( $_SERVER['HTTP_USER_AGENT'] );
else
return 'unknown';
}
Код:
function randtext( $length, $interval = false )
{
$salt = "abchefghjkmnpqrstuvwxyz0123456789";
$hash = '';
srand( ( double ) microtime() * 1000000 );
if( $interval and $interval > $length )
$length = rand( $length, $interval );
for($i = 0; $i < $length; $i ++)
$hash .= $salt[rand( 0, 33 )];
return $hash;
}
Код:
function files_size( $size )
{
$name = array('Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
$mysize = $size ? round( $size / pow(1024, ( $i = floor( log( $size, 1024 ) ) ) ), 2) .' ' .$name[$i] : $size.' Bytes';
return $mysize;
}
$info - указываем true, чтобы в письмо добавилась информация о IP и браузере пользователя
$pr - приоритет письма 1..5
Код:
function mail_send($email, $smail, $subject, $message, $info = '', $pr = '')
{
$email = text_filter( $email );
$smail = text_filter( $smail );
$subject = text_filter( $subject );
$pr = ( !$pr ) ? 3 : intval( $pr );
if( $info ) $message = $message . ' ' . _IP . ': '. getip() . ' ' . _BROWSER . ': ' . getagent();
$mheader = 'MIME-Version: 1.0\n'
.'Content-Type: text/html; charset=' . _CHARSET . '\n'
.'Content-Transfer-Encoding: 8bit\n'
.'Reply-To: "' . $smail .'" <' . $smail .'>\n'
.'From: "' . $smail .'" <' . $smail .'>\n'
.'Return-Path: <' . $smail .'>\n'
.'X-Priority: ' . $pr .'\n'
.'X-Mailer: CMS Mailer\n';
return mail( $email, $subject, $message, $mheader );
}
$imgfile - путь к исходному изображению
$imgthumb - имя для нового файла
$newwidth - ширина нового файла( как правило уменьшают по ширине)
Код:
function create_img_gd( $imgfile, $imgthumb, $newwidth )
{
if (function_exists('imagecreate'))
{
$imginfo = getimagesize( $imgfile );
switch( $imginfo[2] ) {
case 1:
$type = IMG_GIF;
break;
case 2:
$type = IMG_JPG;
break;
case 3:
$type = IMG_PNG;
break;
case 4:
$type = IMG_WBMP;
break;
default:
return $imgfile;
}
switch( $type ) {
case IMG_GIF:
if (!function_exists("imagecreatefromgif")) return $imgfile;
$srcImage = imagecreatefromgif( $imgfile );
break;
case IMG_JPG:
if (!function_exists("imagecreatefromjpeg")) return $imgfile;
$srcImage = imagecreatefromjpeg( $imgfile );
break;
case IMG_PNG:
if(!function_exists("imagecreatefrompng")) return $imgfile;
$srcImage = imagecreatefrompng( $imgfile );
break;
case IMG_WBMP:
if (!function_exists("imagecreatefromwbmp")) return $imgfile;
$srcImage = imagecreatefromwbmp( $imgfile );
break;
default:
return $imgfile;
}
if ( $srcImage )
{
$srcWidth = $imginfo[0];
$srcHeight = $imginfo[1];
$ratioWidth = $srcWidth / $newwidth;
$destWidth = $newwidth;
$destHeight = $srcHeight / $ratioWidth;
$destImage = imagecreatetruecolor( $destWidth, $destHeight );
imagealphablending($destImage, true);
imagealphablending($srcImage, false);
imagecopyresized($destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight);
switch( $type )
{
case IMG_GIF:
imagegif( $destImage, $imgthumb);
break;
case IMG_JPG:
imagejpeg( $destImage, $imgthumb);
break;
case IMG_PNG:
imagepng( $destImage, $imgthumb);
break;
case IMG_WBMP:
imagewbmp( $destImage, $imgthumb);
break;
}
imagedestroy($srcImage);
imagedestroy($destImage);
return $imgthumb;
} else {
return $imgfile;
}
} else {
return $imgfile;
}
}
$lower - преобразовать в нижний реестр
$punkt - оставлять точки
Код:
function totranslit($var, $lower = true, $punkt = true)
{
$NpjLettersFrom = "абвгдезиклмнопрстуфцыі";
$NpjLettersTo = "abvgdeziklmnoprstufcyi";
$NpjBiLetters = array (
"й" => "j",
"ё" => "yo",
"ж" => "zh",
"х" => "x",
"ч" => "ch",
"ш" => "sh",
"щ" => "shh",
"э" => "ye",
"ю" => "yu",
"я" => "ya",
"ъ" => "",
"ь" => "",
"ї" => "yi",
"є" => "ye"
);
$NpjCaps = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЫЭЮЯЇЄІ';
$NpjSmall = 'абвгдеёжзийклмнопрстуфхцчшщьъыэюяїєі';
$var = str_replace( '.php', '', $var );
$var = trim( strip_tags( $var ) );
$var = preg_replace( '/\s+/ms', '-', $var );
$var = strtr( $var, $NpjCaps, $NpjSmall );
$var = strtr( $var, $NpjLettersFrom, $NpjLettersTo );
$var = strtr( $var, $NpjBiLetters );
if ( $punkt ) $var = preg_replace( '/[^a-z0-9\_\-.]+/mi', '', $var );
else $var = preg_replace( '/[^a-z0-9\_\-]+/mi', '', $var );
$var = preg_replace( '#[\-]+#i', '-', $var );
if ( $lower ) $var = strtolower( $var );
if( strlen( $var ) > 50 )
{
$var = substr( $var, 0, 50 );
if( ($temp_max = strrpos( $var, '-' )) ) $var = substr( $var, 0, $temp_max );
}
return $var;
}
$expires - срок жизни кука в днях
Код:
function set_cookie($name, $value, $expires)
{
if( $expires )
$expires = time() + ( $expires * 86400 );
else
$expires = FALSE;
setcookie( $name, $value, $expires);
}