вторник, 14 августа 2012 г.

Архивирование файлов на php

В этом посте я покажу как на PHP заархивировать фалы в zip формат. Часто я вижу слишком грамоздкие скрипты предназначенные для этих целей. В моем примере всего несколько строк, просто взгляните! Используйте свободно для любых своих целей!

HTML
<form name="zips" method="post">
<input type="checkbox" name="files[]" value="flowers.jpg" />
<img src="files/image.png" />
flowers.jpg
<input type="checkbox" name="files[]" value="fun.jpg" />
<img src="files/image.png" />
fun.jpg
........
<input type="submit" name="createpdf" value="Скачать ZIP" />&nbsp;
<input type="reset" name="reset" value="Сбросить" />
</form>


PHP
Следующий код конвертирует выбранные файлы в ZIP формат.
<?php
$error = "";
if(isset($_POST['createpdf']))
{
$post = $_POST;
$file_folder = "files/"; // папка для загрузки файлов
if(extension_loaded('zip'))
{
// проверяем подгрузку расширения
if(isset($post['files']) and count($post['files']) > 0)
{
// проверяем выбранные файлы
$zip = new ZipArchive(); // подгружаем zip библиотеку
$zip_name = time().".zip"; // имя файла - текущее время
if($zip->open($zip_name, ZIPARCHIVE::CREATE)!==TRUE)
{
// открываем zip
$error .= "* Ошибка создания файла";
}
foreach($post['files'] as $file)
{
$zip->addFile($file_folder.$file); // добавление файлов в zip
}
$zip->close();
if(file_exists($zip_name))
{
// отправляем файлы на загрузку
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.$zip_name.'"');
readfile($zip_name);
// убираем файлы из кэша
unlink($zip_name);
}
}
else
$error .= "* Выберите файл!";
}
else
$error .= "* Нет расширения";
}
?>

вторник, 7 августа 2012 г.

Горячие клавиши sublime text 2

Как и обещал, вот вам отдельный пост о горячих клавишах sublime text 2.

Горячие клавиши изменяются по тому же принципу, что и все остальные настройки, и точно также вступают в силу сразу же после сохранения конфига. В случае какой-либо ошибки, вроде неправильной комбинации клавиш, вы можете узнать подробности в консоли (Ctrl + `). Там вообще можно найти много полезных данных. Обратите внимание на картинку — это ссылка на подробную карту горячих клавиш (случайно нашёл в сети).



Работа с текстом
Хоткей Описание
ctrll Выделить строку.
ctrlm Выделить текст между двумя парными скобками.
ctrla Выделить текст между двумя парными тегами.
ctrlj Выделить текст с соответствующим отступом.
ctrlspace Выделить по контексту.
ctrlleft Выделить слово слева.
ctrlright Выделить слово справа.
ctrla Выделить весь текст.
ctrll Разделить выделенные строки на независимые участки редактирования.
ctrlup Переместить выделенные строки вверх.
ctrldown Переместить выделенные строки вниз.
ctrld Дублировать строку.
ctrlk Удалить строку.
ctrlbackspace Удалить часть слова до курсора.
ctrldelete Удалить часть слова после курсора.
ctrlbackspace Удалить текст от курсора и до начала строки.
ctrlk, ctrlbackspace Удалить текст от курсора и до начала строки.
ctrldelete Удалить текст от курсора и до конца строки.
ctrlk, ctrlk Удалить текст от курсора и до конца строки.
ctrlj Объединить выделенные строки.
altq Объединить строки в параграфе.
ctrlenter Добавить пустую строку под курсором.
ctrlenter Добавить пустую строку над курсором.
ctrlaltup Добавить курсор на следующей или предыдущей строке.
ctrlaltdown Добавить курсор на следующей или предыдущей строке.
ctrl/ Добавить или убрать однострочный комментарий.
ctrl/ Добавить или убрать блочный комментарий.
f9 Отсортировать строки в алфавитном порядке.
ctrlf9 Отсортировать строки в алфавитном порядке с учетом регистра.
ctrlk, ctrll Трансформировать выделенный текст в нижний регистр.
ctrlk, ctrlu Трансформировать выделенный текст в верхний регистр.
ctrlt Транспонировать текст.
alt. Закрыть незакрытый тег.
altw Обернуть тегом выделенный текст.
insert Переключить режим ввода: вставка или замена.
ctrlk, ctrlspace Установить метку.
ctrlk, ctrla Выделить текст от курсора до метки.
ctrlk, ctrlx Поменять местами метку и курсор.
ctrlk, ctrlw Удалить метку.
ctrlk, ctrlg Удалить все метки.
ctrl] Убрать отступ.
ctrl[ Добавить отступ.
ctrly Повторить последнее действие.
ctrlc or ctrlinsert Копировать.
ctrlv or insert Вставить.
ctrlv Вставить с отступом.
ctrlx Вырезать.
delete Вырезать.
ctrlz Отмена последнего действия.
ctrlz Повторить последнее отмененное действие.
ctrlu Отменить последние выделение.
ctrlu Повторить последние отмененное выделение.
Поиск и замена
Хоткей Описание
ctrlf Открыть панель поиска.
ctrlh Открыть панель поиска и замены.
ctrlf Открыть панель поиска и замены по всем файлам проекта.
ctrli Открыть панель быстрого поиска и поиск.
ctrli Открыть панель быстрого поиска и поиск в обратном направлении.
alta Включить или выключить режим сохранения регистра на панели поиска и замены.
altr Включить или выключить использование регулярных выражений на панели поиска и замены.
f6 Включить или выключить проверку правописания.
altc Включить или выключить чувствительность к регистру на панели поиска и замены.
altw Включить или выключить режим поиска слова целиком на панели поиска и замены.
altenter Найти все.
ctrl` Показать панель.
enter Поиск в обратном направлении.
ctrlaltenter «Заменить все» на панели поиска и замены.
ctrlh Заменить текст далее.
f3 Поиск.
f3 Поиск в обратном направлении.
f4 Переход к следующему результату поиска по всем файлам.
f4 Переход к предыдущему результату поиска по всем файлам.
ctrlf3 Быстрый поиск.
ctrlf3 Быстрый поиск в обратном направлении.
ctrld Найти и выделить текст.
ctrlk, ctrld Пропустить выделенный текст.
altf3 Найти все.
ctrle Скопировать слово или выделенный текст в окно поиска.
ctrle Скопировать слово или выделенный текст в окно замены.
ctrlf6 Перейти к следующей ошибке.
ctrlf6 Перейти к предыдущей ошибке.
ctrlp Открыть окно поиска файла «Goto Anything...».
ctrlr Открыть окно перехода к функциональному блоку.
ctrlg Открыть окно для перехода к заданной строке.
ctrl; Открыть окно для перехода к заданному слову.
Фолдинг
Хоткей Описание
ctrl[ Свернуть код.
ctrl] Развернуть код.
ctrlk, ctrl1 - 9 Свернуть код соответсвующего уровня.
ctrlk, ctrl0 or ctrlk, ctrlj Развернуть все.
ctrlk, ctrlt Свернуть атрибуты тегов.
Навигация
Хоткей Описание
ctrlaltp Открыть окно выбора проектов.
ctrlf2 Установить или снять закладку.
f2 Перейти к следующей закладке.
f2 Перейти к предыдущей закладке.
altf2 Выделить все закладки.
ctrlf2 Удалить все закладки.
ctrlk, ctrlc Переместить экран к курсору.
ctrlup Прокрутка окна редактирования.
ctrldown Прокрутка окна редактирования.
ctrlm Переместить курсор к парной скобке.


Управление окнами
Хоткей Описание
alt0 - 9 Выбор соответствующей вкладки.
ctrltab Переключиться на следующую вкладку.
ctrlf4 Закрыть вкладку.
ctrltab Переключиться на предыдущую вкладку.
ctrlpageup Переключиться на вкладку слева.
ctrlpagedown Переключиться на вкладку справа.
alt1 - 5 Управление количеством и расположением областей редактирования.
alt8 - 9 Управление количеством и расположением областей редактирования.
ctrl1 - 4 Переключиться в соответсвующую область.
ctrl1 - 4 Переместить вкладку в соответствующую область.
f11 Развернуть окно во весь экран.
f11 Переключиться в «Отвлеченный режим».
ctrlk, ctrlb Показать или скрыть боковую панель.
ctrl0 Переключить фокус на боковую панель.
ctrln Создать новую вкладку.
ctrlw Закрыть текущую вкладку.
ctrln Создать новое окно.
ctrlw Закрыть окно.

Работа с файлами
Хоткей Описание
ctrlo Вызвать окно «Открыть файл».
ctrlt Открыть последний закрытый файл.
ctrls Сохранить текущий файл.
ctrls Вызвать окно «Сохранить как».
alto Переключение между файлами представления и реализации.


Разное
Хоткей Описание
ctrlp Открыть окно списка функций.
ctrlplus Увеличить размер шрифта.
ctrlminus Уменьшить размер шрифта.
ctrlq Запустить или остановить запись макроса.
ctrlq Вопроизвести макрос.
ctrlaltp Отобразить в статусной строке название контекста, в котором находится курсор.
f7 Выполнить
ctrlb Выполнить
ctrlb Выполнить
ctrlbreak Отменить выполнение



среда, 25 июля 2012 г.

Подтверждение формы без перезагрузки страницы

Привет, %username%!
В этом примере я покажу тебе, как при помощи аякс можно создать форму, которая при подтверждении данных не будет перезагружать страницу!

JS:
Обратите внимание на dataString
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js">
</script>
<script type="text/javascript" >
$(function() {
$(".submit").click(function() {
var name = $("#name").val();
var username = $("#username").val();
var password = $("#password").val();
var gender = $("#gender").val();
var dataString = 'name='+ name + '&username=' + username + '&password=' + password + '&gender=' + gender;
if(name=='' || username=='' || password=='' || gender=='')
{
$('.success').fadeOut(200).hide();
$('.error').fadeOut(200).show();
}
else
{
$.ajax({
type: "POST",
url: "join.php",
data: dataString,
success: function(){
$('.success').fadeIn(200).show();
$('.error').fadeOut(200).hide();
}
});
}
return false;
});
}); </script>

HTML:
Сама форма:
<form method="post" name="form">
<ul><li>
<input id="name" name="name" type="text" />
</li><li>
<input id="username" name="username" type="text" />
</li><li>
<input id="password" name="password" type="password" />
</li><li>
<select id="gender" name="gender">
<option value="">Пол</option>
<option value="1">Муж</option>
<option value="2">Жен</option>
</select>
</li></ul>
<div >
<input type="submit" value="Submit" class="submit"/>
<span class="error" style="display:none"> Ошибка! Введите норм данные</span>
<span class="success" style="display:none"> Регистрация успешно завершена</span>
</div></form>

join.php
Именно этот код будет обрабатываться посредствам aJax. Т.е. при нажатии на кнопку 'submit' будет выполненно следуещее:
if($_POST){
$name=$_POST['name'];
$username=$_POST['username'];
$password=$_POST['password'];
$gender=$_POST['gender'];
mysql_query("*ваш sql запрос..");
}else { }
?>

вторник, 24 июля 2012 г.

PHP - скачивание файлов (а не открытие)

Поговорим о скачивании файлов. Думаю тема давно заезженная, но все же черкну пару строк.
К примеру, если оставить прямую ссылку на pgf файл, типа:
<a href='files/price1.pdf'>скачать</a>
то в современных браузерах файл сразу же в нем и откроется. В случаях, когда необходимо не открывать файл а качать - Content-type и Content-Disposition вам в помощь. Вот пример кода, для закачки файла, а не открытия:
header('Content-type: application/pdf');
header("Content-Disposition: attachment; filename=\"files/price1.pdf\"");
$x = fread(fopen("files/price1.pdf", "rb"), filesize("files/price1.pdf"));
echo $x;

Создаем пхп файл download.php и заливаем эти строки в него (предварительно, сомособой, изменив их).

Для множества файлов добавляем $_GET переменную id, вытаскиваем по ней название файла из БД и отправляем на загрузку.

Указание media-типа используется для передачи сведений о формате содержимого в HTTP-транзакциях. Клиенты используют media-типы в своих заголовках Accept для того, чтобы сообщить, в каких форматах они предпочитают принимать данные. Серверы используют media-типы в заголовках Content-Type, чтобы сообщить клиенту о том, в каком формате передается прилагаемое содержимое: то ли это HTML, который нужно форматировать, то ли это GIF или JPEG, требующий визуализации, то ли это данные в формате PDP, для которого нужно открывать внешнюю программу просмотра или использовать дополнительное приложение.

Список всех media-типов

четверг, 19 июля 2012 г.

Я просто оставлю это здесь

Совершенно безобидная формулировка на сайте «Роскомнадзора»:
"Список доменных имен, в отношении которых в первой половине июля 2012 г. были направлены требования в иностранные компании о прекращении делегирования прав на их использование или об удалении незаконно размещенной информации."



Вот так вот.. А ведь это только начало

По теме — грустно. Но будет интересно посмотреть на тот цирк, который начнётся с закрытием ютуба. Либо наши законодатели спустят всё на тормозах и распишутся в своей некомпетентности и бессилии (в который раз), либо, что еще интереснее, ютуб и ЛЖ всё-таки перекроют и получат милионы лучей поноса на свои светлые головы.

четверг, 12 июля 2012 г.

Sublime Text 2

Недавно открыл для себя совершенно замечательный редактор кода - Sublime Text 2

Изначально я подумал что это ещё один веб-редактор, коих сейчас появляется всё больше и больше. Возможно, что-то чуть большее, на движке хромиума.

НО, поискав немного инфы, увидел что там есть поддержка Ruby! Значит, возможно, в это вложили больше сил, чем я думал. Может там есть ещё поддержка и Python? Не долго думая я выкачал бету и…
И очень удивился. Поддерживается куча языков:
ActionScript, ASP, Batch File, C#, C++, CSS, D, Erlang, Go, Graphviz, Groovy, Haskell, HTML, Java, JavaScript, LaTeX, Lisp, Lua, Makefile, Markdown, Matlab, Objective-C, OCaml, Perl, PHP, Python, R, Rails, Regular Expressions, Ruby, Scala, ShellScript, SQL, TCL, Text, Textile, User, XML, YAML.


Не берусь утверждать, что это лучший текстовый редактор, но мне он пришёлся очень по душе, и вот почему:
  • Приятный глазу тёмный интерфейс, визуальные эффекты и Distraction Free Mode
  • Панелька с редактируемым текстом в миниатюре. Интересная и действительно удобная находка!
  • Множественное выделение и редактирование
  • Все фичи свойственные большинству продвинутых редакторов: подсветка синтаксиса, форматирование кода, автодополнение и т.д.
  • То чего нет «в коробке» можно скачать из репозитария! Да-да, после совершения простейших манипуляций в Sublime появляется полноценная система управления пакетами, почти как в убунте или дебиане.
  • Если и этого не достаточно — прямо в главном меню есть пункт «New Plugin». Жмем на него и пишем плагин реализующий необходимый нам функционал на языке Python. Об этом и пойдет речь.
  • Стоит это чудо $59 за одну, либо $500 за 10 лицензий. Однако если не хочется, то можно и не платить. Ограничений никаких в этом случае нет, просто изредка будет всплывать напоминание.
  • Кроссплатформенность! Linux, mac, pc.

Горячие клавиши - это отдельная тема!

Самые главные:
ctrl+p show_files - данное сочтание клавиш позволяет открыть/искать по разным файлам проекта, открытым, или находящимся в проекте
ctrl+r - поиск по именам функций, структур, похоже на список функций, "@"
ctrl+g - переход на строчку ":"
ctrl+; - поиск по переменным "#"

Символы "@, :, #" можно комбинировать, пример, вызываем строчку ctrl+p
далее вводим какие-то буквы из имени файла, к примеру у меня открыт файл Default(Linux).sublime-keymap
Для того, чтобы его выбрать достаточно ввести "deup", редактор может понять и гораздо раньше, что вам нужно и подсветит введённые вами буквы в слове. Дальше можно скомбинировать
ctrl+p, затем deup#ctrl, мы перейдём на первое вхождение ctrl, не так интересно, если бы рассматривали файл с кодом, можно было бы найти переменную с именем. Повторюсь, не обязательно помнить дословно, главное хотябы пару букв в нужном порядке :).

ctrl+shift+p - вот это тоже шикарное сочитание клавиш "command_palette", позволяет менять настройки редактора, маленький пример
нажимаем ctrl+shift+p, затем вводим map, и эта команда нам уберёт/покажет миникарту файла.

Выделение столбца - зажатым колесом мыши.

На днях выложу статью посвещенную только горячим клавишам. Инджой!