Генератор паролей

<?php
function gen_pass($n) {
	$arr = array('q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l',
		'z','x','c','v','b','n','m','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F',
		'G','H','J','K','L','Z','X','C','V','B','N','M',
		'1','2','3','4','5','6','7','8','9','0');
	$pass = '';
	for($i=0;$i<=$n;$i++) {
		$index = rand(0, count($arr) -1);
		$pass .= $arr[$index];
	}
	return $pass;
}
 
	echo gen_pass(5); //указываем сколько символов в пароле
?>

Пару полезных запросов в MySQL

Пару полезных запросов в дополнение к предыдущим записям: Выбор строк из диапазона дат в MySQL и Операции с колонками в MySQL.

Замена текста в поле на нужное

UPDATE name_table SET column = REPLACE(column, 'old_text_column', 'new_text_column');

где:
name_table — имя таблицы над которой производим операцию;
column — имя колонки над которой производим операцию;
new_text_column — новый текст для замены;
old_text_column — старый текст который нужно заменить.
Узнать больше


Получение суммы прописью

/**
 * Возвращает сумму прописью
 * @author runcore
 * @uses morph(...)
 */
function num2str($num) {
    $nul='ноль';
    $ten=array(
        array('','один','два','три','четыре','пять','шесть','семь', 'восемь','девять'),
        array('','одна','две','три','четыре','пять','шесть','семь', 'восемь','девять'),
    );
    $a20=array('десять','одиннадцать','двенадцать','тринадцать','четырнадцать' ,'пятнадцать','шестнадцать','семнадцать','восемнадцать','девятнадцать');
    $tens=array(2=>'двадцать','тридцать','сорок','пятьдесят','шестьдесят','семьдесят' ,'восемьдесят','девяносто');
    $hundred=array('','сто','двести','триста','четыреста','пятьсот','шестьсот', 'семьсот','восемьсот','девятьсот');
    $unit=array( // Units
        array('копейка' ,'копейки' ,'копеек',	 1),
        array('рубль'   ,'рубля'   ,'рублей'    ,0),
        array('тысяча'  ,'тысячи'  ,'тысяч'     ,1),
        array('миллион' ,'миллиона','миллионов' ,0),
        array('миллиард','милиарда','миллиардов',0),
    );
    //
    list($rub,$kop) = explode('.',sprintf("%015.2f", floatval($num)));
    $out = array();
    if (intval($rub)>0) {
        foreach(str_split($rub,3) as $uk=>$v) { // by 3 symbols
            if (!intval($v)) continue;
            $uk = sizeof($unit)-$uk-1; // unit key
            $gender = $unit[$uk][3];
            list($i1,$i2,$i3) = array_map('intval',str_split($v,1));
            // mega-logic
            $out[] = $hundred[$i1]; # 1xx-9xx
            if ($i2>1) $out[]= $tens[$i2].' '.$ten[$gender][$i3]; # 20-99
            else $out[]= $i2>0 ? $a20[$i3] : $ten[$gender][$i3]; # 10-19 | 1-9
            // units without rub & kop
            if ($uk>1) $out[]= morph($v,$unit[$uk][0],$unit[$uk][1],$unit[$uk][2]);
        } //foreach
    }
    else $out[] = $nul;
    $out[] = morph(intval($rub), $unit[1][0],$unit[1][1],$unit[1][2]); // rub
    $out[] = $kop.' '.morph($kop,$unit[0][0],$unit[0][1],$unit[0][2]); // kop
    return trim(preg_replace('/ {2,}/', ' ', join(' ',$out)));
}

Узнать больше


Проблемы с прозрачными изображениями в Nivo Slider

В одном из проектов я использовал Nivo Slider и столкнулся с такой проблемкой, как прозрачные изображения (png).  То есть, при смене одного изображения на другое, у нас оставалось предыдущее… как бы наслоение предыдущего на следующее. К сути. Открываем файл jquery.nivo.slider.js и ищем кусок кода:

if(!nudge){
	slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
} else {
	if(nudge == 'prev'){
		slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
	}
	if(nudge == 'next'){
		slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
	}
}

Узнать больше


Исправить YouTube IFrame Overlay и Z-Index

По умолчанию код для вставки, который предлагает YouTube выглядит следующим образом:

<iframe title="YouTube video player" src="http://www.youtube.com/embed/lZqrG1bdGtg" frameborder="0" width="640" height="390"></iframe>

Немного его модифицируем и получим желанный результатос:

<iframe title="YouTube video player" src="http://www.youtube.com/embed/lZqrG1bdGtg?wmode=opaque" frameborder="0" width="640" height="390"></iframe>

Мы просто добавили небольшой фрагмент «?wmode=opaque» в конец URL-адреса и все прекрасно заработало.
Узнать больше


Удалить из документа все HTML-теги

<?php 
// $document на выходе должен содержать HTML-документ. 
// Необходимо удалить все HTML-теги, секции javascript, 
// пробельные символы. Также необходимо заменить некоторые 
// HTML-сущности на их эквивалент. 

$search = array ("'<script[^>]*?>.*?</script>'si",  // Вырезает javaScript 
                 "'<[\/\!]*?[^<>]*?>'si",           // Вырезает HTML-теги 
                 "'([\r\n])[\s]+'",                 // Вырезает пробельные символы 
                 "'&(quot|#34);'i",                 // Заменяет HTML-сущности 
                 "'&(amp|#38);'i", 
                 "'&(lt|#60);'i", 
                 "'&(gt|#62);'i", 
                 "'&(nbsp|#160);'i", 
                 "'&(iexcl|#161);'i", 
                 "'&(cent|#162);'i", 
                 "'&(pound|#163);'i", 
                 "'&(copy|#169);'i", 
                 "'&#(\d+);'e");                    // интерпретировать как php-код 

Узнать больше


Выдвигающаяся с любой стороны панель

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

1. CSS

.panel {
	padding: 20px;
	width: 250px;
	background: #eeeeee;
	border: #282828 2px solid;
	font-family: Georgia;
}

2. Подключение jQuery

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>

3. Подключение jQuery TabSlideOut

Узнать больше


jQuery плагин ограничения количества вводимых символов в textarea

Пример как ограничить количество вводимых символов в TEXTAREA, т.е. используя JavaScript (и библиотеку jQuery) эмитировать действие атрибута maxlength.

Нам понадобится использовать библиотеку jQuery. Как обычно:

<script src="путь/к/jquery.js" type="text/javascript"></script>

Код плагина с небольшими комментариями:

<script type="text/javascript">
// создаём плагин maxlength
jQuery.fn.maxlength = function(options) {
  // определяем параметры по умолчанию и прописываем указанные при обращении
  var settings = jQuery.extend({
    maxChars: 10, // максимальное колличество символов
    leftChars: "character left" // текст в конце строки информера
  }, options);
  // выполняем плагин для каждого объекта
  return this.each(function() {
    // определяем объект
    var me = $(this);
    // определяем динамическую переменную колличества оставшихся для ввода символов
    var l = settings.maxChars;
    // определяем события на которые нужно реагировать
    me.bind('keydown keypress keyup',function(e) {
      // если строка больше maxChars урезаем её
      if(me.val().length>settings.maxChars) me.val(me.val().substr(0,settings.maxChars));
      // определяем колличество оставшихся для ввода сиволов
      l = settings.maxChars - me.val().length;
      // отображаем значение в информере
      me.next('div').html(l + ' ' + settings.leftChars);
    });
    // вставка информера после объекта
    me.after('<div class="maxlen">' + settings.maxChars + ' ' + settings.leftChars + '</div>');
  });
};
</script>

Узнать больше


Выбор строк из диапазона дат в MySQL

Опять что-то с памятью моей 🙂

Очередная заметка о том какой послать SQL запрос для выборки записей с нужной датой или промежутком дат.

Выбрать записи с сегодняшней датой

SELECT * FROM name_table WHERE  DATE(date_column) = DATE(NOW());

где:
name_table — имя таблицы над которой производим операцию выборки;
date_column — колонка с датой.

DATE() — вернет дату без времени.
NOW() — возвращает текущую дату и время (мы используем сочетание DATE(NOW()) для удаления времени).

Узнать больше


Закругление углов у изображения

Хочу написать метод закругления краев у картинки. В итоге мы должны получить что-то похожее на то что написано в статье Наложение изображений на PHP, но заменим библиотеку GD на Imagick.

Плюс данного метода в том, что не нужно подготавливать 2 разных картинки и потом их «склеивать»/«смешивать», все делается на лету.

Вот код который это реализует с небольшими коментами:

<?php
/* задаем изображение над которым производим манипуляции */
$image = $_SERVER['DOCUMENT_ROOT'].$_GET['argv'];
/* считываем изображение над которым производим манипуляции */
$im = new Imagick( $image );

Узнать больше