Настройка среды разработки

Для решения задач по программированию рекомендуется использовать основанную на Java расширяемую платформу разработки с открытым исходным кодом Eclipse. Предварительно необходимо установить Java Runtime Environment (JRE) или Java Development Kit (JDK). Так же предполагается использование графического визуального редактора Visual Editor (VE) для построения пользовательского интерфейса приложений на основе AWT/Swing.

Установка JDK
Инсталляция и настройка

1) Установить Java Development Kit (JDK). Ссылка: http ://java.sun.com/javase/downloads/index.jsp
раздел: Java SE Development Kit (JDK).
2) Рекомендуется установить переменную среды окружения JAVA_HOME. указав каталог JDK. В Windows. XP команда Start/Setting Control Panel/System, закладка Advanced, кнопка Environment Variables. New.

3) Добавить в список путей переменной среды окружения PATH путь к каталогу BIN

Проверка работоспособности
1) В любом каталоге, например D:\TEMP, создать текстовый файл One.java с содержимым

/* */
import Java.applet.*;
import java.awt.*;
public class One extends Applet {
public void paint(Graphics g) {
g.drawString(“TEST”, 25, 50);
}
}

2) В том же каталоге в командной строке (Start/Run/Open: cmd.exe) ввести команды:
- для компиляции программы: javac One.java
- для просмотра результатов работы апплета: appletviewer One.java

При отсутствии ошибок и корректной установке TDK, должно появиться окно с результатами работы апплета

В случае ошибки при выполнении команд javac и appletviewer с сообщением вида:
"javac" is not recognized as an internal or external command, operable program or batch file.
следует проверить наличие пути в переменной среды окружения PATH к утилитам каталога BIN JDK.

3) В том же каталоге создать текстовый файл One.htm с содержимым

4) Дать команду: start One.htm

Должно появиться окно веб-обозревателя с результатами работы апппета, например

В случае отсутствия текста TEST в окне, проверить настройки браузера:
- для Internet Explorer 7: Tools/Internet Options Advanced Settings, раздел Java (Sun), должен быть отмечен пункт Use JRE...
- для Opera 10: Tools/Preferences..., закладка Advanced, раздел Content, должен быть отмечен пункт Enable Java.

Установка IDE Eclipse

Инсталляция Eclipse

Рекомендуется установить пакет на базе версии не ниже Eclipse 3.5 SRI. Ссылка: в раздел: Eclipse IDE for Java Developers
Необходимо извлечь содержимое архива, например eclipse-java-galileo-SRl-win32.zip, в корневой каталог выбранного накопителя и выполнить запуск файла eclipse.exe.
Если запуск Eclipse приводит к ошибке с информационным окном вида

Launcher.XXMaxPermSize

или подобрать значения соответствующих параметров самостоятельно. В крайнем случае можно удалить файл eclipse.ini из каталога Eclipse.

Настройка Eclipse

Для облегчения процесса разработки программ (доступа к расширенным справочным данным средствами Javadoc) рекомендуется включить в список рабочих путей новых проектов.TDK (вместо выбранного по умолчанию JRE). Для этого необходимо через меню Window/Preferences открыть окно настройки Java/Installed JREs и выполнить поиск (кнопка Search...) JDK (по умолчанию - в каталоге Program Files/Java). После успешного поиска, нужно отметить пункт в списке Installed JREs, соответствующий JDK

При использовании комментариев на языке, отличном от английского, рекомендуется в настройках редактора отключить автоматическую проверку орфографии: Меню Window/Preferences, раздел General. Editors. Text Editors/Spelling, снять отметку пункта Enable spell checking

Инсталляция

Рекомендуется установка VE 1.4 для Eclipse 3.5. Galileo.
После успешной настройки и запуска Eclipse, в меню выбрать Help Install New Software... В поле Work with: скопировать строку
http://download.eclipse.org/tools/ve/updates/1.4/ и нажать Enter. После загрузки списка компонентов для установки, выбрать пункт Visual Editor и нажать кнопку Next.

Проверка корректности установки

В результате успешной установки информационное окно Help/About Eclipse Installation Details должно содержать информацию о компоненте Visual Editor

В окне по команде File/New.Other... (или при нажатии комбинации Ctrl+N) в списке Wizards раздел Java должен присутствовать пункт Visual Class.

Основы работы в среде Eclipse

Проект Eclipse был создан в ноябре 2001 года компанией IBM и поддержан консорциумом поставщиков программного обеспечения. Eclipse представляет собой основанную на Java расширяемую платформу разработки с открытым исходным кодом. По сути - это среда разработки и набор сервисов д.ля построения приложений на основе встраиваемых компонентов (плагинов). В составе Eclipse имеется стандартный набор плагинов, в том числе инструментарий Java Development Tools (JDT).

Рабочее пространство Eclipse

При первом успешном запуске Eclipse будет отображена страница приветствия

Рабочее пространство Eclipse состоит из нескольких панелей, называемых представлениями (Views), например навигационное (Navigator) или схематическое (Outline) представления. Набор таких представлении называется перспективой (Perspective). Одна из наиболее распространённых перспектив - перспектива Ресурсы (Resource), которая представляет собой базовый набор представлений для управления проектами, просмотра и редактирования файлов проекта. Открыть любое представление в текущей перспективе можно через меню Window. Show View. На странице обзора можно открыть раздел справочной системы "Основы рабочего пространства" (Workbench basics), который содержит много полезной начальной информации о различных компонентах Eclipse и о том, как они взаимодействуют друг с другом. После изучения этого раздела приступим к использованию инструментов разработки Java Development Tools (JDT) Eclipse.

Создание нового проекта на Java

В меню выберите File/New. Java Project (Файл Новый Проект Java) и введите pro01 в ответ на запрос имени проекта, а затем нажмите Finish. Откроется перспектива Java. Можно либо сменить перспективу в текущем окне, выбрав Window Open Perspective. Java (Окно/Открыть Перспективу Java), либо открыть новое окно, выбрав Window New Window (Окно Новое Окно), и выбрать новую перспективу. Перспектива Java имеет набор представлений, предназначенных для ведения разработки на Java. Одно из них, расположенное в левом верхнем углу, представляет собой иерархию, содержащую различные пакеты Java, классы, JAR-архивы и разнообразные файлы. Это представление называется Обозреватель Пакетов (Package Explorer). Находясь в перспективе Java, нажмём правой кнопкой на папке src с исходным текстом проекта pro01 и выберем из меню File/New/Class (Файл. Новый Класс). В появившемся диалоговом окне введём One в качестве имени класса. Ниже надписи Which method stubs would you like to create? (Какие заглушки методов вы желаете создать?) отметим public static void main(String args) н нажмём Finish.

При этом будет создан файл One.Java с классом One и пустым методом main() в области редактора. Добавим следующий код к методу (обратите внимание, что описание для i было преднамеренно опущено):

Редактор Eclipse умеет осуществлять проверку синтаксиса и выполнять автоматическое дописывание кода. При вводе открывающей круглой скобки или двойных кавычек Eclipse автоматически вставляет для них закрывающую пару и помещает курсор в середину. В остальных случаях вы можете вызвать автоматическое дописывание кода с помощью комбинации клавиш Ctrl+1. Функция дописывания кода выдаёт контекстно зависимый список вариантов, из которого можно осуществлять выбор с помощью клавиатуры или мыши. Варианты могут представлять собой список методов, присущих конкретному объекту, или фрагмент кода, основанный на различных ключевых словах, таких как for или while.

Проверка синтаксиса зависит от процесса пнкрементной компиляции. По мере сохранения код компилируется в фоновом режиме и проверяется на наличие синтаксических ошибок. По умолчанию синтаксические ошибки подчеркиваются красным, а слева на полях появляется красная отметка. Ошибки, помеченные на полях символом электрической лампочки, редактор может исправить (функция Quick Fix).

В приведённом коде знак лампочки находится возле оператора for, так как было пропущено описание для i. Двойное нажатие мышкой на лампочку вызовет появление списка предлагаемых исправлений. В нашем случае будет предложено создать поле класса i, локальную переменную i или параметр i для метода; выбор мышкой любого го этих вариантов покажет тот код, который будет сгенерирован.

Для объекта класса Date исправим ошибку путем автоматического добавления строки import java . until . Date ; в начало программы:

После всех исправлений получим код:



Если программа компилируется без ошибок, её можно запустить, выбрав Run в меню Eclipse. Обратите внимание на отсутствие отдельного шага для компиляции, потому что компиляция выполняется по мере сохранения кода. Если в коде отсутствуют синтаксические ошибки, он готов для запуска. В нижней панели появляется новая панель с закладкой Console (Консоль), отображающая результат работы программы.

Можно также запустить программу в отладчике Java. Сначала нужно установить контрольную точку в main() с помощью двойного щелчка мышки на сером поле с левой стороны окна редактирования рядом с вызовом System.out.printf(...). В меню Run выберите команду Debug (Отладка). Произойдёт автоматическая активация перспективы отладки Debug, которая содержит целый ряд новых представлений:

Обратите внимание на представление Debug в левом верхнем углу перспективы. Это представление показывает стек вызовов и содержит панель инструментов в строке заголовка, позволяющую управлять выполнением программы. На панели имеются кнопки для продолжения (Resume), приостановки (Suspend) или завершения программы (Terminate), перехода к следующему оператору (Step Into), перешагивания следующего оператора (Step Over) или возвращения из метода (Step Return).

Панель наверху справа содержит представления Variables (Переменные), Breakpoints (Контрольные точки). Из меню Window можно открыть представления Expressions (Выражения), Display (Отображение) и т.д. Если активировать представление с закладкой Variables, можно увидеть текущее значение переменной i. Более подробную информацию о любом из представлений можно получить с помощью контекстной подсказки; для этого щёлкните мышкой на заголовке представления и нажмите клавишу F1.
Для получения исполняемого JAR файла можно использовать команду меню File.Export Java Runnable JAR file, кнопка Next, Finish.

Выполнить полученный JAR файл можно из командной строки с помощью команды Java -jar one.jar

Дополнительные возможности Eclipse

В дополнение к плагинам типа JDT, предназначенным для редактирвания, компиляции н отладки приложений, имеются плагины, поддерживающие весь процесс разработки: моделирование, автоматизацию построения, тестирование модулей, тестирование производительности, управление версиями и конфигурацией. Eclipse содержит плагин для работы с системой параллельных версий (CVS -Concurrent Versions System) для управления исходным кодом. Плагин Team (Команда) соединяется с CVS-сервером, позволяя членам команды разработчиков работать с набором файлов, содержащих исходные тексты, не вмешиваясь в изменения, вносимые другими. Плагины, которые поддерживаются и распространяются сообществом Eclipse Foundation можно найти на сайте Eclipse. Наиболее полный список имеющихся плагинов доступен на странице Eclipse Plug-in Central, которая является каталогом плагинов.

Архитектура платформы Eclipse

Платформа Eclipse содержит мощный набор плагинов, которые поддерживают различные виды проектов.

Тёмно-синие блоки обозначают компоненты, являющиеся центральной частью Платформы функционально насыщенных клиентов (Rich Client Platform - RCP) в Eclipse. Светло-голубые блоки представ.ляют рекомендуемые компоненты для включения в приложения на базе RCP. Серые блоки - необязательны.
Некоторые компоненты платформы:
- Runtime. Код, который определяет модель плагинов Eclipse, основанную на спецификации OSGi, а также на представлении о расширениях и точках расширения. Runtime также предо став.ляет дополнительные сервисы, такие как ведение системного журнала и параллелизм.
- JFace/SWT . Пакет инструментов Standard Widget Toolkit (SWT) представляет собой набор впджетов, отвечающих за пользовательский интерфейс и функции Eclipse. JFace - это просто надстройка над SWT, предоставляющая несколько классов Model-View-Controller (MVC) для облегчения разработки графических приложений.
- Workbench (Рабочее пространство). Рабочее пространство придаёт Eclipse его индивидуальность. Именно на этом уровне реализована концепция представлении, перспектив и таких элементов как окна редактирования.
- Help (Поддержка пользователей). Реализуется через справочную систему, которая позволит пользователям искать справочную документацию, либо с помощью "шпаргалок", которые для конечных пользователей могут выглядеть как интерактивные списки задач.
- Update (Обновление). Предоставляет в Eclipse средства, позволяющие обновлять приложения с одной версии на другую.
- Team (Команда). Компонент team - это инфраструктура, позво.ляюшая фирмам-разработчикам подключать свои собственные системы управления версиями. Образцом реализации провайдера является плагин CVS, встроенный в Eclipse.

По общепринятому соглашению имя класса пишется с большой буквы. Несколько слов пишутся слитно, каждое начинается с большой буквы. При написании идентификаторов методов и полей, имён ссылок на объекты используют тот же стиль, однако первая буква записывается в нижнем регистре. Примитивы final static с начальными неизменяемыми значениями (константы времени компилирования) именуются большими буквами и слова разделяются подчеркиванием (наподобие констант языка С. вводимых директивой #defme)

class VeryLongClassName {
private static final int DEFAULT_NUM = 10;
private final ArrayList items = new ArrayList();
// …
public void showBodyO {
for (Item2d item: items) {
System.out. printf ("(%.0f; %.3f) ", item.getX(), item.getY ());
} System.out. println();
}
}

Java код в библиотеках от Sun соответствует правилу размещению открывающих и закрывающих фигурных скобок, как показано выше.

С понятием платформы Java знаком чуть ли не каждый обладатель самого примитивного мобильного телефона. Среда разработки Java предполагает создание универсальных приложений, которые могут использоваться для запуска, вне зависимости от установленной операционной системы. Рассмотрим основные аспекты ее функционирования и применения.

разработки Java?

На самом деле среда разработки является исключительно языком программирования, основанном на универсальных командах, распознаваемых в среде Java Runtime.

Грубо говоря, среды разработки языка Java без изначально установленной платформы в той же Windows работать не будут. Зато такая поддержка предусмотрена изначально, что избавляет любого юзера от необходимости инсталляции дополнительных компонентов.

Применение в компьютерной технике

Изначально данный проект был разработан корпорацией Sun Microsystems, которую позже поддержала компания Oracle.

Но в конечном итоге среда разработки Java от компьютерных или мобильных систем является абсолютно независимой.

Встроенные модули мобильных систем

Если говорит о смартфонах и планшетах, та же версия Java) относится только к использованию графического приложения, позволяющего создать Java-приложение за несколько минут.

На самом деле в самом приложении производится некая адресация или запрос, функции которого предусмотрены в операционной системе.

И это касается мобильных девайсов. Замечали, что иногда со временем либо Windows Phone, либо Android начинает «плеваться» в плане предложения немедленного обновления? Это не что иное, как два компонента:

Что самое печальное, первый компонент с ошибками системы не связан. Эта платформа является полностью независимой и исполняемой в плане команд по умолчанию.

Интегрированная среда разработки JAVA: простейшее применение

То, что эта система применяется в мобильных версиях, ни у кого сомнений не вызывает. Поддерживается среда разработки Java Android, не говоря о "яблочных" продуктах.

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

Исполняемые апплеты

Во-первых, сразу стоит обратить внимание на систему, в которой должен быть установлен соответствующий архиватор (WinRAR - как минимум, лучше - 7-Zip).

Среда разработки Java-программ относится к тем, что данные сохраняются в виде архива, недоступного для открытия стандартными средствами Windows.

Архивируемые данные

В лучшем случае можно применить экстракторы вроде выше указанных. Но если при формировании архива использовались технологии дополнительного (максимального) метода сжатия, тут не поможешь ничем.

Даже обновление архиватора не сможет произвести нужных изменений. Тут придется применять апдейт всей платформы, хотя изначально сообщение о доступном обновлении «висит» в системном трее.

Обновление платформы

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

Если не хочется ждать, нет проблем - заходите на официальный ресурс Microsoft и скачивайте программу оттуда. Не нравится такой метод? Устанавливаем JDK или J2SE, что является расширением Java, а потом инсталлируем нужный модуль из выбранных, после чего активация происходит автоматически. По окончании процесса можеть понадобиться полная перезагрузка системы.

Почему Java не зависит от ОС?

Как уже говорилось, этот язык программирования относится к объектно-ориентированным (сродни C+/C++, на которых программируется Windows).

Но его суть такова, что виртуальная Java-машина способна транслировать команды исполняемых приложений в специальные байт-коды, распознаваемые любой компьютерной системой, независимо от ее разработчика. Одинаково хорошо среда разработки Java-программ используется и на PC, и на Intel-платформах, и на мобильных системах Android, Blackberry, iOS и других.

В самой программной среде «операционки» уже имеется встроенный модуль, отвечающий за исполнение команд языка. И он никоим образом не касается специфичных сред вроде Microsoft .NET Framework или любых других, которые производители операционных систем разрабатывают для функционирования собственных апплетов.

Мобильные девайсы

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

В операционных системах можно применять архиваторы вроде WinRAR, которые распознают такие самоизвлекающиеся архивы наподобие SFX-файлов без проблем. При двойном клике на таком файле его содержимое будет экстрагировано автоматически, а архиватор вместе с платформой Java в данном случае срабатывает в фоновом режиме.

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

Даже в самых старых моделях типа платформа есть. Иначе как бы телефон функционировал? В этой же системе, как уже понятно, есть и встроенная поддержка, которая отвечает за среды разработки Java.

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

Заключение

Как видим, среда разработки Java является универсальной и совместимой с любыми системами. Но работает она намного быстрее, нежели трансляция команд на основе C+/C++. Согласно некоторым исследованиям, скорость работы может быть выше в 20-30 раз, хотя потребление ресурсов памяти находится на отметке рангом выше.

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

Отдельно стоит сказать, что последние версии Java основаны на поддержке средств обобщенного программирования, в основу которых положены технологии Eiffel и C#, кардинально отличающиеся от средств C++. Тут можно использовать автоматическое преобразование скалярных типов данных и импорт так называемых статических полей, не говоря уже о возможности создания сопутствующей документации с исходным кодом.

В версии Java SE 6 реализовано множество новых функций, которые включают в себя даже распознавание японского и буддистского календарей, возможность создания полноценного HTTP-сервера, ускоренную передачу класс-потоков и сжатых данных с повышением производительности до 70 %, не говоря уже о панели мониторинга JConsole, поддерживающей OpenGL и DirectX.

Это касается в основном графических адаптеров, хотя и может относиться к использованию даже аудиоустройств (чаще всего виртуальных на основе драйверов ASIO4ALL). То же самое касается и некоторых программных синтезаторов или MIDI-клавиатур. Но использование исполняемых Java-апплетов предусмотрено не всегда.

При вождении автомобиля – скорость это далеко не все. Но в WEB все решает скорость. Чем быстрее ваше приложение, тем лучше пользовательский опыт. Хорошо, эта статья о генераторах в PHP, так почему же мы говорим о скорости? Как вы увидите вскоре, генераторы привносят большие изменения по части скорости и потреблении памяти приложением.

Что такое PHP генераторы?

Добавленные в PHP в версии 5.5 , генераторы представляют собой функции, обеспечивающие простой механизм для циклической обработки данных, без необходимости создавать массив данных в памяти. Все еще не понимаете о чем речь? Тогда давайте посмотрим на PHP генераторы в действии.

Создаем файл generator_test.php со следующим содержанием:


$array = ;
for($i = 0; $i < $max; $i++) {
$array = $i;
}
return $array;
}

Foreach (getRange(15) as $range) {
echo "Данные {$range}
";
}

Затем в папке где у нас лежит этот файл открываем консоль и пишем следующее

Http://localhost:8000/generator_test.php

Результат будет такой:

Данные 1
Данные 2
….
Данные 15

Код выше достаточно прост. Однако, давайте сделаем небольшое изменение в нем:


echo "Данные {$range}
";
}

Теперь диапазон генерируемых чисел находится в пределах от 0 до константы PHP_INT_MAX, которая представляет собой наибольшее целое число, которое способен представить интерпретатор PHP . После этого опять идем в браузер и обновляем страницу. Однако на этот раз, вместо обычного текста получаем сообщение о том, что превышен объем доступной памяти, вследствие чего работа скрипта была аварийно завершена.

Что за досада – у PHP закончилась память! Первое что приходит на ум – это редактировать настройку memory_limit в php.ini . Но давайте спросим себя – действительно ли это так эффективно? Неужели мы хотим, чтобы какой-то единственный скрипт занимал всю доступную память?

Используем генераторы

Давайте напишем ту же самую функцию, что и выше, вызовем ее с тем же значением PHP_INT_MAX и запустим снова. Но в этот раз мы создадим функцию-генератор .

Function getRange($max = 10) {
for($i = 1; $i < $max; $i++) {
yield $i;
}
}

Foreach (getRange(PHP_INT_MAX) as $range) {
echo "Данные {$range}
";
}

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

Зачем нужны генераторы?

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

Возврат ключей

Бывают случаи, когда нам необходимо возвращать не просто значение, а пару ключ-значение. При использовании генераторов, мы можем генерировать пары ключ-значение следующим образом.

Function getRange($max = 10) {
for($i = 0; $i < $max; $i++) {
$value = $i * mt_rand();
yield $i => $value;
}
}
?>

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

Foreach (getRange(PHP_INT_MAX) as $key => $value) {
echo "Ключ {$key} имеет значение {$value}";
}

Отсылка значений генераторам

Генераторы также могут принимать значения. Под этим подразумевается, что генераторы позволяют нам вставлять значения, которое может представлять собой подобие команды или еще что-то. Например, мы можем отправить значение в наш генератор, которое сигнализирует о необходимости остановки исполнения или изменения выходных данных. Далее пример кода:

Function getRange($max = 10) {
for($i = 1; $i < $max; $i++) {
$inject = yield $i;
if($inject === "stop") return;
}
}

$generator = getRange(PHP_INT_MAX);

Foreach($generator as $range) {
if($range === 10000) {
// посылаем сообщение генератору
$generator -> send("stop");
}
print "Значение {$range}
";
}

Отмечу, что использование инструкции return в функции-генераторе приведет к немедленному выходу из этой функции.

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

Кстати, о генераторах я подробно рассказываю в моем курсе . Там есть и примеры и задания, которые помогут лучше усвоить материал.

А теперь берем уже готовую функцию генерации пароля и пишем скрипт для восстановления или создания нового пароля для пользователей вашего сайта.

Скрипт восстановления пароля

Как обычно пишется скрипт?

Как всегда составляется поэтапная схема, что мы должны сделать по шагам. Все происходит в одном файле, reminder.php

1. Запускаем скрипт, только при наличии определенной переменной, например $action;

2. Для запуска процесса генерации пароля, пользователь указывает email адрес $_POST[`ema‘l`]; Для упрощения кода присвоим данное значение переменной $email.

3. Проверяем при помощи регулярных выражений все символы на то, чтобы пользователь правильно указал адрес емайл. Если нет, выводим ошибку, прекращаем работу скрипта. Если все правильно, идем дальше.

4. Ищем в базе данных, в нашем случае в таблице users пользователя с таким почтовым адресом. Если нет, выдаем ошибку, что такого адреса в базе нет, и прекращаем работу скрипта.

5. Пользователь с таким адресом в базе есть, идем дальше и запускаем функцию генерации нового пароля. Также по адресу емайл получаем из базы уникальный id пользователя и пишем в переменную $id;



Мы можем оповещать вас о новых статьях,
чтобы вы всегда были в курсе самого интересного.