Как писать скрипты в блокноте. Пишем программы (скрипты) в Блокноте Windows

Если вы только недавно встали на путь программирования и ещё даже не пробовали поиграться с установленной операционной системой, то манипулирование с помощью скриптов может вызвать резонные вопросы необходимости и удобства. Однако, даже если опустить тот простой факт, что они помогают лучше понять, как функционирует ОС, в будущем при создании приложений, исполнение сценариев может оказаться крайне полезным навыком.

Для исполнения следующих скриптов мы обратимся к PowerShell. Любой системный администратор (по профессии или в душе) знает его возможности и периодически пользуется, для всех остальных это просто интерфейс командной строки или иностранное слово. На популярных ресурсах вы можете найти уйму идей, как использовать PowerShell для развлечения и дела, здесь же мы рассмотрим лишь простые скрипты, которые помогут войти в курс дела.

Выключение и перезапуск

Итак, самая простая операция выключения вашего компьютера. Открываем блокнот, прописываем:

shutdown -s -t 0

Сохраняем файл, как *.cmd (*- имя вашего файла, например shutdown.cmd) и не забудьте в типе выбрать “все файлы”. Всё, исполняемый файл по запуску выключит ваш компьютер. “-s”, в данном случае означает выключение, замените на “-r” - получите перезагрузку. “-t” - таймер, у нас он установлен на 0 секунд, но если установить на 60 - получите выключение через 60 секунд.

Удаляем ненужное

В различных сборках, предустановленных на компьютер или ноутбук, вы можете наткнуться на массу абсолютно ненужных пакетов приложений. Удалить их с помощью скрипта проще простого:

get-appxpackage -name *APPNAME* | remove-appxpackage

Как вы понимаете, *APPNAME* - название неинтересующей надстройки. Да, удалять эти пакеты можно стандартным путём или через специальные программы, но вы можете создать скрипт, который удалит их все одним двойным кликом.

Управляем процессами

Есть в PowerShell две полезные команды, которые позволят бороться с ветряными мельницами (процессами, снижающими быстродействие). Вывести их на экран можно просто прописав:

или информацию о конкретном сервисе под кодовым названием *NAME* (на этом месте должно быть название интересующего сервиса):

Get-Service *NAME*

Но это можно сделать в диспетчере задач, а вот действительно полезным может оказаться создание файла, который по клику закрывал бы все процессы с повышенным потреблением ресурсов (браузеры, антивирусы и пр.). Для этого воспользуйтесь командой Stop-Service:

Stop-Service -Name *ANTIVIRUS*

Stop-Service -Name *BROWSER*

Названия для замены указаны в * *.

Переименовываем группу файлов

Ещё одна назойливая проблема: вы скопировали с фотоаппарата или телефона изображения. Огромная куча фотографий, которые называются однотипно вроде HGNMD034, где HGNMD - название общей директории, объединяющей файлы, например, отснятые за один день. Для того, чтобы сделать название этих файлов приятнее или иметь возможность объединить несколько папок, не получив при этом хронологическую путаницу из-за имен, можно использовать скрипт группового переименования:

$path = "$comp\desktop\journey\russia"
$filter = "*.jpg"
get-childitem -path $path -filter $filter |
rename-item -newname {$_.name -replace "HGNMD","RUSSIA"}

В первой строке в кавычках укажите точный путь к файлам. Во второй строке - расширение файлов, подлежащих изменению. В последней строке вместо “HGNMD” - общее в названиях файлов, подлежащее замене, на что-то, вместо “RUSSIA” - имя, которое вы хотите присвоить. Если данный скрипт опять сохранить в качестве исполняемого файла, то подобные однотипные операции будут отнимать у вас всего несколько секунд времени.

Ищем файлы

Ещё одна простая задача, реализуемая на PowerShell - поиск файлов в директории. В данном случае рассмотрим поиск log-файлов:

Get-Childitem C:\Windows\*.log

Или чуть более сложный пример, когда поиск будет производиться ещё и в подпапках:

Get-ChildItem C:\Windows\* -Include *.log -Recurse -Force

Это чуть более правильная и полная запись, где “Include” - указывает на искомую часть, “Recurse” - на поиск во вложенных каталогах, “Force” - поиск включает в себя системные и скрытые файлы.

Справка

Итак, с общими принципами функционирования PowerShell мы более-менее разобрались. Если что-то непонятно - обратитесь к справочной информации следующим образом:

Get-Help Services

Это команда, которая выведет на экран все доступные команды с кратким описанием. Хотите подробнее? Нет ничего проще:

Get-Help -Name *CMDLET*

Где вместо *CMDLET* вставьте любую интересующую команду.

Находим данные

Теперь перейдём к простым скриптам, описанным чуть более сложными командами. Например, с помощью PowerShell вы можете выудить почти всю информацию о железе и комплектующих. Как вариант, вот скрипт для оценки уровня заряда аккумулятора:

Add-Type -AssemblyName System.Windows.Forms
.GetConstructor("NonPublic, Instance", $null, @(), $null).Invoke($null)

Архитектура процессора удалённого компьютера:

Assembly.GetType("System.Management.Automation.PsUtils"
).GetMethod("GetProcessorArchitecture", 40
).Invoke($null, @())

Иногда важной задачей бывает проверка прав администратора у текущего пользователя. Вот простой способ на PowerShell:

Assembly.GetType("System.Management.Automation.Utils").GetMethod(
"IsAdministrator", 40).Invoke($null, @())

На этом пока остановимся. Как вы наверное убедились, PowerShell не самый сложный, но очень полезный инструмент, который способен выполнять, как простейшие операции, так и достаточно сложные . Однако PowerShell не единственный инструмент для создания скриптов для Windows. Но об этом в следующий раз.

В этом топике я вас научу создавать скрипты для потехи над своими хейтерами =)
Итак, для создания скриптов нам понадобится обычный блокнот и кривые руки
1 скрипт. Ваша система заражена вирусом!
Данный скрипт после запуска выводит на экран сообщение о том, что ваша система заражена и просит перезагрузить компьютер, а затем запускает много командных строк, калькуляторы, блокноты и многое другое.
Открываем блокнот и вставляем туда следующий код:

On error resume next
set t=createobject("Wscript.Shell") set kill = createobject("wscript.shell") kill.run"taskkill /f /im explorer.exe",0
msgbox"Неполадка системы",16,"Error" msgbox"Вы заражены вирусом",48,"Windows" msgbox"Необходим перезапуск системы",16,"Windows"t.run"help" t.run"help" t.run"help" t.run"help" t.run"calc.exe"t.run"notepad.exe" t.run"telnet" t.run"help"t.run"explorer" t.run"help" t.run"help" t.run"help" t.run"help"t.run"help" t.run"help" t.run"calc.exe" t.run"notepad.exe" t.run"telnet"t.run"help" t.run"help" msgbox"Сбой системы",16,"Windows" t.run"help" t.run"help" t.run"help"t.run"help" t.run"help" t.run"help"t.run"help"t.run"calc.exe" t.run"notepad.exe" t.run"telnet" t.run"help" t.run"explorer" t.run"help" t.run"help" t.run"help"t.run"help"t.run"help" t.run"help" t.run"calc.exe" t.run"notepad.exe" t.run"telnet" t.run"help" t.run"help"msgbox"Сбой системы",16,"Windows"t.run"help" t.run"help" t.run"help"t.run"help" t.run"help" t.run"help"t.run"help" t.run"calc.exe" t.run"notepad.exe" t.run"telnet"t.run"help" t.run"explorer" t.run"help" t.run"help"t.run"help" t.run"help" t.run"help" t.run"help" t.run"calc.exe" t.run"notepad.exe"t.run"telnet" t.run"help"t.run"help" msgbox"Сбой системы",16,"Windows" t.run"help" t.run"help" t.run"help"
Сохраняем это все c расширением.vbs

2 скрипт. Бесконечно пищащий динамик =)
Заставляет бесконечно пищать системный динамик в процессоре компьютера
Опять открываем блокнот и вставляем туда следующий код:

Set S = CreateObject("Wscript.Shell")
do execute"S.Run ""%comspec% /c "" & Chr(7), 0,True" loop
3 скрипт. Мигающая клавиатура
Заставляет мигать лампочки у клавиатуры, а так же делает написанный текст вида: ПрИмЕр ТеКсТа
PHP:
Set s = CreateObject("Wscript.Shell")
do wscript.sleep 80


wscript.sleep 80
s.sendkeys"{numlock}" wscript.sleep 80
s.sendkeys"{capslock}" wscript.sleep 80
s.sendkeys"{scrolllock}" wscript.sleep 80
s.sendkeys"{scrolllock}" wscript.sleep 80
s.sendkeys"{capslock}" wscript.sleep 80
s.sendkeys"{numlock}" wscript.sleep 80
wscript.sleep 80
s.sendkeys"{scrolllock}" wscript.sleep 80
s.sendkeys"{capslock}" wscript.sleep 80
s.sendkeys"{numlock}" wscript.sleep 80
s.sendkeys"{numlock}" wscript.sleep 80
s.sendkeys"{capslock}" wscript.sleep 80
s.sendkeys"{scrolllock}" wscript.sleep 80
loop

4 скрипт. Автоматически въезжающий и выезжающий дисковод =)
Заставляет бесконечно въезжать - выезжать дисковод в компьютере

Set WMPlayer = CreateObject("WMPlayer.OCX.7")
doWMPlayer.CdRomCollection.Item(0).Eject() loop
Всем спасибо за внимание!
P.s чтобы закрыть скрипт,необходимо в диспетчере задач завершить соответствующий процесс!

Современный интернет немыслим без скриптов. Учимся писать на JavaScript.

Если бы для интернета писали Библию, она начиналась бы так:

Сначала была почта. И увидели инженеры, что это хорошо. И создали они WWW с гиперссылками. И увидели инженеры, что это тоже хорошо. И создали они тогда язык JavaScript для оживления страничек.

Примерно так происходило в реальности. JavaScript придумали, чтобы «оживить» HTML . Скрипты JavaScript пишутся непосредственно в текст HTML или хранятся в отдельных файлах, как и стили CSS . Они выполняются сразу после загрузки страницы в браузер.

Даже сам язык в первое время назывался LiveScript . Потом его переименовали в JavaScript , потому что планировали как-то увязать с языком общего назначения Java. Но сейчас у них нет практически ничего общего, а JavaScript - совершенно независимый язык программирования со своей четкой спецификацией ECMAScript .

Формально JavaScript является торговой маркой Oracle, а этот язык - «расширение» ECMAScript, наряду с JScript от Microsoft и ActionScript, но это скорее заморочки владельцев торговых марок. Главное, что свободный ECMAScript никому не принадлежит.

Со временем сфера влияния JavaScript значительно расширилась. Его начали использовать не только для скриптов на странице HTML , но и для серьезных больших веб-приложений и целых программ, которые работают в браузере. Есть инструменты, чтобы специальным образом «упаковать» эти программы и выполнять их отдельно от браузера. Это компиляторы и интерпретаторы, которые более подробно рассматриваются на обучающих курсах « » и « ».

Приложения JavaScript выполняются в любой среде, где есть соответствующий интерпретатор.

Нас пока интересуют только браузеры и HTML-странички.

Как сделать JavaScript ? Написать элементарный скрипт не сложнее, чем простую HTML -страничку, ведь скрипты JavaScript пишутся обычным текстом, то есть их можно создавать буквально в том же «Блокноте», сохраняя потом в отдельных файлах или вставляя в тело HTML -документа. Самые простые вещи на JavaScript делаются действительно просто.

Как написать JavaScript

Для примера сделаем простой скрипт для выполнения сервером сценариев Windows. Этот скрипт можно написать прямо в «Блокноте» и выполнить без браузера.

WScript. echo ("Привет, Skillbox! ")

Пишем этот текст в «Блокноте» , затем сохраняем файл под именем skillbox.js и запускаем в «Проводнике» Windows.

Аналогичный скрипт можно записать прямо в коде страницы HTML между тегами и . Там уже можно использовать обычные методы JavaScript, а не метод echo специфического объекта WScript . Рассмотрим некоторые из стандартных методов для ввода и вывода данных в браузере.

alert()

Метод alert() отображает окошко с кнопкой «OK». В окне выводится сообщение, которое указано в скобках. Например, «Привет, Skillbox!» . То есть в данном случае браузер делает ровно то же самое, что перед этим делал сервер сценариев Windows .

Эти примеры тоже можно писать в «Блокноте», только сохранять в файлах с расширением HTML . Например, skillbox.htm .



alert ("Привет, Skillbox ")

Результат:

В качестве аргумента alert() можно указать не только конкретный текст, но и результат каких-либо вычислений или обработки других данных. Например, alert(x) , где x вычисляется отдельно.

confirm()

Метод confirm() выводит такое же окно с сообщением, но уже с двумя кнопками - «ОК» и «Отмена». В зависимости от того, какую кнопку щелкнет пользователь, метод возвращает либо значение true , либо false . Сервер получает это возвращаемое значение от пользователя и выполняет какое-то действие, в зависимости от ответа.

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



confirm ("Привет, Skillbox ")

Результат:

prompt()

Метод prompt() выводит диалоговое окно с сообщением и текстовым полем, куда пользователь вводит данные. Здесь тоже предусмотрены две кнопки «ОК» и «Отмена». По нажатию первой кнопки метод возвращает на сервер введенный текст, а по нажатию второй кнопки возвращает логическое значение false .

Синтаксис здесь такой:

prompt (сообщение, значение_поля_ввода_данных )

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



prompt ("Передай привет Skillbox ", "Привет ")

Результат:

Возможности современного JavaScript выходят далеко за рамки примитивного ввода-вывода данных через формы. Эти методы мы привели только в качестве самых простых примеров. Кроме этого, JavaScript позволяет реагировать на действия пользователя. Например, на движения мышкой или нажатие определенных клавиш. JavaScript часто используется для обеспечения асинхронной работы (Технология AJAX ), когда информация на странице обновляется без ее перезагрузки. В этом режиме данные отправляются на сервер и загружаются оттуда в интерактивном режиме. Кроме того, JavaScript способен манипулировать с HTML -элементами на странице (создавать и прятать теги и т.д.) и делать многое другое.

Полезные инструменты Консоль разработчика

Во всех популярных браузерах есть специальная консоль разработчика. Она показывает код скриптов на странице, а также выводит другую полезную информацию. В Chrome, Firefox и IE консоль разработчика открывается по нажатию горячей клавиши F12 , в Safari - Ctrl+Shift+I или Ctrl+Alt+C. На скриншоте скрипты отображаются справа вверху, вместе с другими элементами веб-страницы.

Консоль разработчика в Chrome.

Редакторы кода

В дальнейшем для удобного программирования понадобится установить редактор кода или IDE (Integrated Development Environment), интегрированную среду разработки. IDE - это редактор с расширенной функциональностью, который интегрирован с другими полезными инструментами, поддерживает подключение дополнительных модулей и так далее.

Вирусы-шутки - это несложные программы, которые можно подсунуть другу (или врагу), и тот будет думать, что его компьютер взломан, поражен вирусом или серьезно поврежден. Вирусы-шутки можно писать в обычном Блокноте: нужно лишь записать в файл команды, которые замедляют работу компьютера, выводят из строя работу операционной системы или просто пугают пользователя, а затем заставить его запустить этот файл. Вирусы-шутки могут быть чем угодно, начиная от надоедливой неприятности и заканчивая кошмаром, нарушающим работу системы. «Вирусы» из этой статьи предназначены только для безобидных шуток, самое худшее, что они могут сделать, - это выключить компьютер. Внимание: эти вирусы-шутки предназначены только для компьютеров под управлением Windows, они не будут работать на Mac OS без специальной подготовки. Начнем с шага 1.

Шаги Пишем поддельный вирус, открывающий «бесконечные» окна

Запустите Блокнот. Пакетные (.BAT) файлы содержат команды для компьютера в текстовом виде. Для того, чтобы написать BAT-файл, не нужен специальный редактор - достаточно Блокнота из стандартного набора программ Windows. Блокнот можно найти в меню «Пуск» или в подменю «Стандартные». Открыть Блокнот можно также, нажав сочетание клавиш Win+R, в текстовом поле появившегося диалогового окна набрать «notepad» и нажать Enter.

Наберите «@echo off», а затем, с новой строки, «CLS». По умолчанию BAT-файлы открывают окно командной строки и выводят исполняемые команды. Команды «@echo off» и «CLS» предотвращают появление команд в окне командной строки, делая причину шутки невидимой для «жертвы».

Напишите команды для открытия множества (или бесконечного количества) окон. Теперь наступило время написать последовательность команд, исполняя которые, ваш поддельный вирус откроет много окон разных программ один раз или будет отрывать эти окна бесконечно. Важно знать, если бесконечно открывается очень много окон, компьютер в конце концов может зависнуть. Читайте далее о том, как сделать оба вида «вируса»:

  • Чтобы открыть определенное количество окон, с новой строки наберите в Блокноте следующую команду: start (название программы) . Вместо фразы в скобках введите название программы на компьютере «жертвы» или или полное имя исполняемого файла. Эта команда дает инструкцию компьютеру открывать окно указанной программы. Например, start iexplore.exe откроет окно Internet Explorer. Повторите команду «start» столько раз, сколько захотите, и ваш «вирус» откроет окно столько раз, сколько вы укажете. Вот несколько программ которые можно ввести после команды «start»:
    • iexplore.exe - браузер Interent Explorer
    • calc.exe - Калькулятор
    • notepad.exe - Блокнот
    • winword.exe - Microsoft Word
  • Чтобы открыть бесконечное количество окон, сначала с новой строки наберите :A , включая двоеточие. На следующей строке наберите start iexplore.exe (или другую программу). И, наконец, строкой ниже наберите goto A . Эта последовательность команд заставит компьютер открывать окно Internet Explorer (или любой другой программы), возвращаться к месту непосредственно перед открытием окна, а затем сразу же открывать новое окно, пока окно командной строки не будет закрыто или компьютер не зависнет.
  • Напишите в «вирусе» сообщение. Для устрашающего эффекта можно добавить в «вирус» сообщение, которое заставит пользователя думать, что с его компьютером что-то не так. Чтобы отобразить сообщение, начните новую строку и наберите echo Ваше сообщение . Затем с новой строки наберите pause . Команда «pause» остановит выполнение «вируса» после появления сообщения.

    • Чтобы ваша шутка была правдоподобной, напишите сообщение, похожее на настоящие сообщения об ошибках, например: Фатальная ошибка. C:// каталог поврежден.
  • Сохраните текст как пакетный файл. Когда закончите, в меню Блокнота выберите Файл > Сохранить как... , а затем укажите расширение файла «.bat» (например, «pinball.bat»). В выпадающем списке «Тип файла» выберите «Все файлы». Сохраните файл где нибудь на компьютере «жертвы».

    Заставьте пользователя открыть файл. Чтобы ваша шутка сработала, нужно сделать так, чтобы «жертва» запустила ее. Этого можно добиться разными способами. Один из самых работающих - создать ярлык для своего пакетного файла и изменить его иконку на что-то, чем пользователь действительно пользуется, а затем изменить название ярлыка, чтобы оно соответствовало иконке. Откиньтесь на спинку кресла и наблюдайте за результатами из удобного места!

    Как написать.VBS с сообщением об ошибке или взломе

    Запустите Блокнот. Как и в предыдущей шутке, в этой нужно написать в Блокноте несколько простых команд. Однако на этот раз эффект будет другим - вместо открытия окон это шутка создает несколько сообщений с ошибками, которые заставят пользователя думать, что его в работе операционной системы произошла ошибка или что компьютер был взломан.

    Наберите "x=msgbox("Текст сообщения", 5+16, "Заголовок сообщения") точно так, как здесь указано, включая скобки и кавычки, и замените «Текст сообщения» и «Заголовок сообщения» желаемым текстом. Эта команда открывает стандартное диалоговое окно ошибки Windows с указанными вами сообщением об ошибке и заголовком окна. Чтобы ваша шутка была правдоподобной, используйте сообщения и заголовки, похожие на настоящие. Например попробуйте в качестве заголовка "Ошибка терминала", а в качестве сообщения - "В каталоге C://Users/Windows/system32 обнаружена критическая неисправность".

    • Возможно, вам захочется развить свою шутку в направлении взлома. В таком случае используйте сообщения вроде: «Я имею полный доступ к вашей системе. Приготовьтесь ко взлому». На самом деле ничего такого не случится, так что это сработает только с людьми, которые плохо разбираются в компьютерах.
    • Выражение «5+16» указывает компьютеру создать диалоговое окно с иконкой критической ошибки и двумя кнопками «Повтор» и «Отмена». Изменяя эти числа, можно получить разные типы окон с ошибками. Просто подставьте из приведенных ниже чисел любое число из одной цифры вместо 5 и любое число из двух цифр вместо 16:
      • 0 (Кнопка OK)
      • 1 (Кнопки OK и Отмена)
      • 2 (Кнопки Отмена, Повтор и Пропустить)
      • 3 (Кнопки Да, Нет, и Отмена)
      • 4 (Кнопки Да и Нет)
      • 5 (Кнопки Повтор и Отмена)
      • 16 (Иконка критической ошибки)
      • 32 (Иконка помощи)
      • 48 (Иконка предупреждения)
      • 64 (Иконка информации)
  • Повторяйте сообщение об ошибке сколько вам угодно. Повторяйте команды, приведенные выше столько раз, сколько пожелаете, с любыми сообщениями об ошибках. Сообщения будут появляться одно за другим, то есть, как только пользователь закроет одно сообщение, откроется другое. Можете использовать этот факт, чтобы создать длинное сообщение, которое будет носить все более неотлагательный характер.

    Сохраните документ как файл Visual Basic (VBA). Когда вы введете все желаемые сообщения, сохраните файл. В меню Блокнота выберите Файл > Сохранить как... , дайте своему файлу имя с расширением «.vba». Обязательно выберите «Все файлы» из выпадающего списка «Тип файла». Теперь, чтобы шутка удалась, нужно заставить «жертву» запустить этот файл, например используя трюк из метода 1.

    Используем предварительно написанный пакетный файл

    Запустите Блокнот. Это шутка использует команды из Блокнота, чтобы заставить компьютер открывать программы случайным образом до тех пор, пока пакетный файл не будет отключен или компьютер не зависнет. Чтобы сделать эту шутку, вам просто нужно скопировать и вставить команды, указанные в этом разделе. Однако заметьте, что это сработает не на всех компьютерах.

    Скопируйте и вставьте следующие команды: @echo offclsbegingoto %random%:1start cmd.exegoto begin:2start mspaint.exegoto begin:3start pinball.exegoto begin:4start iexplore.exegoto begin:5start explorer.exegoto begin:6start solitaire.exegoto begin:7start explorer.exegoto begin:8start edit.exegoto begin:9start iexplore.exegoto begin:0start mspaint.exegoto begin

  • Изменяйте эти команды на свое усмотрение. Этот код случайным образом бесконечно открывает программы, указанные после слова «start». Возможно, вы заметили, что некоторые программы повторяются. Изменяйте список программ, как вы того пожелаете.

    • Заметьте, что некоторые названия программ, перечисленных выше, могут быть неправильными для некоторых машин, например на некоторых компьютерах может не быть «pinball.exe». Следует проверить дважды правильность названий программ, перед тем как перемещать вирус-шутку на компьютер «жертвы».
    • Если вы сомневаетесь в названии какой-то программы, помните, что точный путь программы тоже подходит. Например, вместо «iexplore.exe» можно написать «C:\Program Files\Internet Explorer».
  • Сохраните текст как пакетный файл и запустите его (если отважитесь). Сохраните файл с расширением «.bat», выбрав «Все файлы» из выпадающего списка «Тип файла». Когда вам удастся заставить пользователя запустить его, он начнет случайным образом без остановки открывать программы в компьютере.

    • Чтобы было веселей, попробуйте заменить в одной из команд "*.exe" на полный путь к какому-либо документу пользователя. Например, "start C:\Документы\123.doc" откроет документ 123.doc из папки «Документы» в редакторе по умолчанию, а
      edit (полное имя файла)
      goto begin
      откроет указанный файл в текстовом редакторе DOS. Это будет выглядеть так, как будто хакер читает личные документы. Помните, что имя файла, содержащее пробелы, должно заключаться в кавычки!
  • Блокнот для сайта - простое приложение на PHP и JQuery, которое позволяет пользователям писать заметки. Все записи будут сохранены в текстовые файлы на сервере.

    Шаг 1. HTML
    Для начала рассмотрим разметку. Для этого создадим обычный документ HTML5, Ниже представлена только важная часть, остальной код можно посмотреть в файле исходников index.php.

    Заметка

    Как вы заметили разметка не сложная, конечно, мы добавим стили CSS, подключим jQuery и наш скрипт script.js. Обратите внимание, что выражение phpecho находится в textarea.

    Шаг 2. CSS
    Для формирования фона в виде листочка для заметок используется псевдо-элемент:after. При изменении размера области ввода текста в коде jQuery, нижняя часть автоматически сдвигается вниз.

    #pad{ position:relative; width: 374px; margin: 180px auto 40px; } #note{ font: normal 15px "Courgette", cursive; line-height: 17px; color:#444; background: url("../img/mid.png") repeat-y; display: block; border: none; width: 329px; min-height: 170px; overflow: hidden; resize: none; outline: 0px; padding: 0 10px 0 35px; } #pad h2{ background: url("../img/header.png") no-repeat; overflow: hidden; text-indent: -9999px; height: 69px; position: relative; } #pad:after{ position:absolute; content:""; background:url("../img/footer.png") no-repeat; width:100%; height:40px; }

    Шаг 3. PHP
    Код PHP для нашего примера достаточно простой. Происходит чтение и вывод содержания заметки при загрузке страницы, а когда jQuery посылает запрос AJAX - записываем содержание в файл. Файл записи будет перезаписываться.

    $note_name = "note.txt"; $uniqueNotePerIP = true; if($uniqueNotePerIP){ // Используем адрес IP пользователя для именования файла заметки. // Данная техника полезна в случаях, когда приложение // используют несколько пользователей одновременно. if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){ $note_name = "notes/".$_SERVER["HTTP_X_FORWARDED_FOR"].".txt"; } else{ $note_name = "notes/".$_SERVER["REMOTE_ADDR"].".txt"; } } if(isset($_SERVER["HTTP_X_REQUESTED_WITH"])){ // Запрос AJAX if(isset($_POST["note"])){ // Записываем файл на диск file_put_contents($note_name, $_POST["note"]); echo "{"saved":1}"; } exit; } $note_content = ""; if(file_exists($note_name)){ $note_content = htmlspecialchars(file_get_contents($note_name)); }

    Следует обратить внимание на переменную $uniqueNotePerIP. Если она имеет значение true, каждый пользователь будет иметь уникальный файл заметки с именем на основе IP адреса. При значении false, все будут использовать один и тот же файл.

    Шаг 4. jQuery
    Работа jQuery в данном приложении заключается в отслеживании изменений в области ввода текста и отправке запроса AJAX post для index.php, где текст будет записан в файл.

    $(function(){ var note = $("#note"); var saveTimer, lineHeight = parseInt(note.css("line-height")), minHeight = parseInt(note.css("min-height")), lastHeight = minHeight, newHeight = 0, newLines = 0; var countLinesRegex = new RegExp("n","g"); // Событие input запускается нажатием клавиш, // копированием и даже операциями отмены/повторения. note.on("input",function(e){ // Очистка таймера предотвращает // сохранение каждого нажатия клавиш clearTimeout(saveTimer); saveTimer = setTimeout(ajaxSaveNote, 2000); // Подсчет количества новых строк newLines = note.val().match(countLinesRegex); if(!newLines){ newLines = ; } // Увеличиваем высоту заметки (если нужно) newHeight = Math.max((newLines.length + 1)*lineHeight, minHeight); // Увеличиваем/уменьшаем высоту только один раз при изменеии if(newHeight != lastHeight){ note.height(newHeight); lastHeight = newHeight; } }).trigger("input"); // Данная строка будет изменять размер заметки при загрузке страницы function ajaxSaveNote(){ // Запускаем запрос AJAX POST для сохранения записи $.post("index.php", { "note" : note.val() }); } });

    Обычный подход в таких случаях - привязка обработчика к событию keypress. Но иногда такого метода недостаточно, так как пользователь может просто скопировать текст в область ввода, или выбрать предложение от автоматического корректора браузера, или использовать операцию отменить/повторить.

    Вот и все. Готово!