Я бы изменил мир!
Но Бог не дает мне исходники!
где мне их скачать то?

 
3mind.ru » Материалы за Июль 2011 года
Сортировать статьи по: дате | популярности | посещаемости | комментариям | алфавиту

Размер базы данных MySQL

Автор: nikba от 19-07-2011, 02:04
имя БД:
<?php   $dbname = “databasename”;   ?>


Обработка БД:

<?php
        mysql_select_db( $dbname );
        $result = mysql_query( “SHOW TABLE STATUS” );
        $dbsize = 0;
        while( $row = mysql_fetch_array( $result ) ) {  
                   $dbsize += $row[ "Data_length" ] + $row[ "Index_length" ];
        }
?>


Функция форматирование единиц измерения:

function formatRawSize($bytes) {
    if(!empty($bytes)) {
        $s = array('bytes', 'kb', 'MB', 'GB', 'TB', 'PB');
        $e = floor(log($bytes)/log(1024));
        $output = sprintf('%.2f '.$s[$e], ($bytes/pow(1024, floor($e))));
        return $output;
    }
}


Вывод результатов

<?php
        echo “<p>Размер БД ” . formatRawSize( $dbsize ) . “</p>”;
?>

15 .htaccess секретов для SEO

Автор: nikba от 17-07-2011, 23:38
1) Конечно же, правилом хорошего тона является страничка на которую будут перенаправляться Ваши читатели в случае каких-либо серверных ошибок.
Самые распространенные ошибки - это 403, 404, 500.

403 - пользователь не прошел аутентификацию, запрет на доступ.
404 - запрашиваемый документ (файл, директория) не найден.
500 - внутренняя ошибка сервера (к примеру, ошибка в синтаксисе файла .htaccess).
ErrorDocument 401 /error/401.html
ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html


Где 40Х.html - это странички, которые увидит пользователь в случае определенной серверной ошибке.

2) В последнее время (к сожалению) все чаще и чаще приходится прибегать к блокировке определенноко IP адреса для входа на Ваш сайт.

allow from all
deny from 145.186.14.122
deny from 124.15


Здесь нужно быть предельно аккуратным, так как блокируя всего один IP-адрес Вы можете заблокировать целую организацию, выходящую на просторы интернета под одним IP!!!!

3) 301 редирект для битых или старых ссылок.

Redirect 301 /d/file.html http://www.htaccesselite.com/r/file.html


4) Установка e-mail администратора на сервер. Используется, как адрес по умолчанию.

ServerSignature EMail
SetEnv SERVER_ADMIN admin@3mind.ru

5) Часто требуется перенаправить пользователя на определенную страничку при обращении к заданной директории или домашней страничке сайта.

DirectoryIndex <нужная страница>


Можно указывать несколько страниц:
DirectoryIndex index.shtml index.php index.php3 index.html index.htm


6) Очень важный момент - это защита Ваших, так называемых, “горячих ссылок”. Другими словами, как защитить Ваши файлы или картики от ссылок на них с других ресурсов, тем самы, избежать серьезных неприятностей и раздутого трафика

Options +FollowSymlinks
# Protect Hotlinking
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domainname\.com/ [nc]
RewriteRule .*\.(gif|jpg|png)$ http://domainname.com/img/hotlink_f_o.png [nc]


7) Иногда требуется перенаправлять всех пользователей на другой сайт, кроме некоторых IP.

ErrorDocument 403 http://www.youdomain.com
Order deny,allow
Deny from all
Allow from 124.34.48.165
Allow from 102.54.68.123


8 ) Интересный и не менее важный способ защиты от сетевых вирусов и сканеров, при котором вредоностный запрос будет перенаправлен на другой ресурс.

redirect /_vti_bin http://www.ну-ну-ну.com
redirect /scripts http://www.ну-ну-ну.com
redirect /MSADC http://www.ну-ну-ну.com
redirect /c http://www.ну-ну-ну.com
redirect /d http://www.ну-ну-ну.com
redirect /_mem_bin http://www.ну-ну-ну.com
redirect /msadc http://www.ну-ну-ну.com
RedirectMatch (.*)\cmd.exe$ http://www.ну-ну-ну.com$1


9) Теперь о склеивании имен домена(из примера выше)

Пример 1 - Редирект с domain.com на www.domain.com

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]


Пример 2 - Редирект с www.domain.com на domain.com

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]


10) Тоже очень важный момент для SEO - это сокращение ссылок. Привести длинные и “некрасивые” ссылки в читабельный вид можно так:

Пример обработки динамической страницы http://mp3rare.com/download.php?type=mp3&file=muzik в вид - http://mp3rare.com/files/mp3/muzik.zip можно так:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^files/(.+)/(.+).zip download.php?type=$1&file=$2 [nc]


11) Можно заблокировать несанкционированный доступ к Вашему .htaccess файлу инициируя 403 ошибку сервера.

< Files .htaccess >
order allow,deny
deny from all
< /Files >


Таким же способом можем защитить любой файл.

< Files raznoblog.jpg >
order allow,deny
deny from all
< /Files >


12) Определение часового пояса для сервера.

SetEnv TZ America/Indianapolis


13) Часто на сервере, при нажатии на ссылку с видео, фотографии или музыкального файла, открывается Windows Media Player или другое приложение для его чтения или демонстрации. Чтобы запретить это и показывать приглашение “Сохранить Как…” (”Save As”) делаем следующее:

AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4


14) Также очень интересная возможность кеширования возожна в файле .htaccess

# год
Header set Cache-Control “public”
Header set Expires “Thu, 29 Jun 2010 20:00:00 GMT”
Header unset Last-Modified


15) Можно защитить файл или группу файлов паролем.
< Files login.php >
Order deny,allow
Deny from all
AuthName “htaccess password prompt”
AuthType Basic
AuthUserFile /home/askapache.com/.htpasswd
Require valid-user
< /Files >

А это защита группы файлов.

< FilesMatch "^(exec|env|doit|phpinfo|w)\.*$">
Order deny,allow
Deny from all
AuthName “htaccess password prompt”
AuthUserFile /.htpasswd
AuthType basic
Require valid-user
< /FilesMatch>

Пишем firewall на PHP

Автор: nikba от 14-07-2011, 09:13
Надо отдать должное людям, которые работают в направлении безопасности web-ресурсов.

Буржуй-нет полон такого рода всякими скриптами. Например, недавно скачал для себя PHP Firewall. Скрипт поддерживает PHP 5, не нуждается в базе, прост в использовании и мало весит, ко всему этому нет затруднений в установке и работе, при наличии определенных навыков, мозга и более или менее ровных рук. PHP Firewall имеет свою систему сбора информации (логи), а также модуль email оповещения о тревоге. Нет необходимости использования .htaccess, хотя я в этом не уверен. Скрипт можно использовать для всех видов cms, блогов, форумов и всего что на ум придет.

  • защита XSS
  • защита от UNION SQL-инъекций
  • защита от DOS
  • защита include
  • защита от червей
  • серверная защита (не проверено)
  • защита URL запроса
  • профилактика Cookies
  • профилактика запросов POST, GET
  • запрет на сканирование IP
  • блокировка спама с определенного IP
  • комплексная защита IP
  • сброс глобальных переменных PHP


Установка/внедрение PHP Firewall в сайт

  • создать папку, например php-firewall/ в корне сайта
  • выставить необходимые права доступа на файл php-firewall/logs.txt (например, 755)
  • добавить строки в основной код страницы сайта


< ?php  define('PHP_FIREWALL_REQUEST_URI', strip_tags( $_SERVER['REQUEST_URI'] ) );
define('PHP_FIREWALL_ACTIVATION', true );
if ( is_file( @dirname(__FILE__).'/php-firewall/firewall.php' ) )
include_once( @dirname(__FILE__).'/php-firewall/firewall.php' ); ?>


Для деактевации PHP Firewall, редактируйте строку:

define('PHP_FIREWALL_ACTIVATION', false );


Конфигурирование PHP Firewall

Вы можете активировать/деактивировать большинство функций защиты в PHP Firewall. Для этого необходимо открыть файл php-firewall/firewall.php. Все параметры, находящиеся между строками 23 и 39 и которые имеют true/false можно редактировать, соответственно включая/отключая их.

define('PHP_FIREWALL_ADMIN_MAIL', '' );  // напишите свою электронную почту и PHP Firewall оповестит о несанкционированном доступе
define('PHP_FIREWALL_PUSH_MAIL', false ); // отчет работы системы на электронную почту
define('PHP_FIREWALL_LOG_FILE', 'logs' );  // название файла сбора статистики ‘logs’ для  PHP Firewall
define('PHP_FIREWALL_PROTECTION_RANGE_IP_DENY', true ); // блокатор занятых IP
define('PHP_FIREWALL_PROTECTION_RANGE_IP_SPAM', true );  // блокатор IP-спамеров
define('PHP_FIREWALL_PROTECTION_URL', true );  // URL защита
define('PHP_FIREWALL_PROTECTION_REQUEST_SERVER', true ); // защита запросов
define('PHP_FIREWALL_PROTECTION_SANTY', true ); // защита от червя
define('PHP_FIREWALL_PROTECTION_BOTS', true ); // защита от ботов
define('PHP_FIREWALL_PROTECTION_REQUEST_METHOD', true ); // Bad method protection
define('PHP_FIREWALL_PROTECTION_DOS', true ); // Mini dos защита
define('PHP_FIREWALL_PROTECTION_UNION_SQL', true ); // защита от sql-инъекций
define('PHP_FIREWALL_PROTECTION_CLICK_ATTACK', true ); // включает защиту файлов
define('PHP_FIREWALL_PROTECTION_XSS_ATTACK', true ); // защита от XSS
define('PHP_FIREWALL_PROTECTION_COOKIES', true ); // защита cookies
define('PHP_FIREWALL_PROTECTION_POST', true ); // защита POST vars
define('PHP_FIREWALL_PROTECTION_GET', true );  // защита GET vars


Скачать Скрипт

Полезные php константы

Автор: nikba от 14-07-2011, 09:04
Есть несколько полезный магических констант в php которые я сдесь опишу. Магические константы начинаются с двух символов подчеркивания и заканчиваются тоже с двух символов подчеркивания.

В данной заметке рассмотрим 3 константы

__LINE__
__FILE__
__DIR__


По названию, думаю должно быть сразу понятно для чего эти константы. Но кто не понять объясню:

__LINE__ выводим номер строки, в которой эта константа находится.
__FILE__ выводит файл текущего документа.
__DIR__ папка текущего файла.


Рассмотрим на примере две первые константы. Например, у нас есть самописная функция, в которой вызывается запрос в базу, а код запроса передается через параметры функции.

function db_query($sql) {
$q=mysql_query($sql) or die(mysql_error()."
<strong>".__file__. " On line - ".__line__."</strong>");
return $q;
}


В функции выше при ошибке вызывается функция die, которая прекращает работу скрипта и выводит сообщение, которое определенно в ее параметрах. Только в примере выше номер строки в которой произошла ошибка будет выведена неправильно, так как вызов функции происходит в любом месте скрипта или даже в другом файле.

функция, что выше будет всегда показывать одну и туже строку и один и тот же файл, так как эти константы определенны внутри функции. Чтобы вывод ошибки правильно работал нужно переписать так функцию:

function db_query($sql, $file=__file__, $line=__line__) {
$q=mysql_query($sql) or die(mysql_error()."
<strong>".$file. " On line - ".$line."</strong>");

return $q;
}


Теперь в параметрах функции мы передаем номер файла и номер строки в результате при возникновение ошибки в sql запросе будем знать файл и номер строки где ошибка произошла.

Редирект с www

Автор: nikba от 14-07-2011, 08:54
Для поисковых систем домены http://www.3mind.ru и http://3mind.ru не одинаковые. Это может негативно сказаться для поискового продвижения сайта. Например, ссылки, которые поставлены для домена без www уже не будут считаться для домена с www.

Во многих популярных сайтах при открытие сайта с www автоматически происходит редирект на домен без www. В этой статье я покажу, как это можно сделать при помощи php. Можно было бы использовать для этой файл .htaccess если на сервере включен модуль апача – mod_rewrite. Но мой способ не хуже и мы не зависим в этой случае от модуля mod_rewrite, который не на всех серверах может быть включенным.

Для этого нам понадобятся следующие php переменные:

$_SERVER['HTTP_HOST'] – в этой переменной содержится наш домен.
$_SERVER['REQUEST_URI'] – в этой переменой содержится путь, от корня сайта включая и get параметры если такие имеются в адресе.

Итак, вначале главной страницы сайта. Как правило, это файл index.php вставить следующий код:

if(strpos($_SERVER['HTTP_HOST'], 'www.') === false) {
// ничего не делаем
}
else {
$_HOST=str_replace('www.', '', $_SERVER['HTTP_HOST']);
header ('HTTP/1.1 301 Moved Permanently');
header("Location: http://".$_HOST.$_SERVER['REQUEST_URI']);
}


Если мы открываем сайт делаем проверку, есть ли в переменной $_SERVER['HTTP_HOST']); вначале .www и если нету, тогда ничего не делаем, так как пользователь открыл домен без .www.

if(strpos($_SERVER['HTTP_HOST'], 'www.') === false) {
// ничего не делаем


Если $_SERVER['HTTP_HOST'] содержит .www, значит, пользователь открыл домен с www. То есть как домен третьего уровня. Поэтому делаем перенаправление. Первое, что делаем, посылаем заголовок – ‘HTTP/1.1 301 Moved Permanently’, что означает, что старый адрес навсегда перемещен на новый. Затем следующей строчкой делаем редирект используя переменные $_SERVER['HTTP_HOST'] и $_HOST (это $_SERVER['REQUEST_URI'] в которой убрали .www)

header ('HTTP/1.1 301 Moved Permanently');
header("Location: http://".$_HOST.$_SERVER['REQUEST_URI']);

Установка Smarty

Автор: nikba от 13-07-2011, 15:11
Качаем последний релиз Smarty.
Распаковываем папку libs в любое удобное место(можно в корень)

Создаем на веб-сервере(в корне) каталоги: cache, templates, templates_c и conf.

И каталогам cache и templates_c присваиваем права доступа 777
Теперь в каталоге conf создаем конфиг(config.php) для Smarty который подключаем в начале нашего index.php

config.php

define('SMARTY_DIR','libs/');
require_once(''.SMARTY_DIR.'/Smarty.class.php');
$smarty = new Smarty;
$smarty->template_dir = './templates/';
$smarty->compile_dir = './templates_c/';
$smarty->cache_dir = './cache/';
$smarty->caching=true;


index.php

require_once('conf/config.php');
$smarty->assign('DATE',date("H:i:s"));
$smarty->display('main.tpl.htm');


А в папке templates создаем main.tpl.htm следующего содержания:

Время {$DATE}

Хакеры не дают компании Sony ни дня покоя

Автор: nikba от 9-07-2011, 17:06

Наложение логитипа на изображение

Автор: nikba от 9-07-2011, 16:45
Для наложения логитипа на изображение мы воспользуемся функциями стандартной PHP библиотеки работы с изображениями GD

На входе путь к картинке, на которую накладываем лого, и путь к файлу с накладываемым изображением (С ПРОЗРАЧНОСТЬЮ, если нужно):


<?php
function SetLogo($filename, $logo)
{
    $srcImage = ImageCreateFromPNG($filename);

    $logoImage = ImageCreateFromPNG($logo);
    
    $srcWidth  = ImageSX($srcImage);
    $srcHeight = ImageSY($srcImage);
        
    $logoWidth  = ImageSX($logoImage);
    $logoHeight = ImageSY($logoImage);
        
    imageAlphaBlending($logoImage, false);
    imageSaveAlpha($logoImage, true);
    
    $trcolor = ImageColorAllocate($logoImage, 255, 255, 255);
    ImageColorTransparent($logoImage , $trcolor);
    
    imagecopy($srcImage, $logoImage, $srcWidth - $logoWidth,
        $srcHeight - $logoHeight, 0, 0, $logoWidth, $logoHeight);
                
    ImagePNG($filename, $srcImage);
        
    ImageDestroy($logoImage);
    ImageDestroy($srcImage);        
}
?>

Количество пользователей на сайте

Автор: nikba от 9-07-2011, 16:42
Показывает количество посетителей находящихся на сайте в данный момент.

<?php
session_start();  
  
function getUsersOnline() {  
   $count = 0;  
  
   $handle = opendir(session_save_path());  
   if ($handle == false) return -1;  
  
   while (($file = readdir($handle)) != false) {  
       if (ereg("^sess", $file)) $count++;  
   }  
   closedir($handle);  
  
   return $count;  
}  
?>


$usercount = getUsersOnline();
echo $usercount;

Redirect или перенаправление на другую страницу в PHP

Автор: nikba от 9-07-2011, 16:36
Redirect или перенаправление на другую страницу в PHP осуществляется путем отправки специального HTTP заголовка функцией header:

<?php
@header('Location: http://www.tigir.com/php.htm');
exit;
?>


Редирект с задержкой можно сделать так:

<?php
@header('Refresh: 3; URL=http://www.tigir.com/php.htm');
echo 'Через 3 сек. вы будете перенаправлены на новую страницу.';
exit;
?>
Назад Вперед
Наверх

Веб-мастер (англ. webmaster) — человек, профессионально или в качестве хобби занимающийся разработкой веб-сайтов в Интернете или корпоративных приложений в интранете.