Создаем личный кабинет
Здравствуйте, уважаемый посетитель!
В завершении рассмотрения вопросов по разработке системы авторизации создадим личный кабинет, который в нашем случае будет содержать 3 раздела, такие как:
- Мои заказы;
- Профиль;
- Добавить заказ.
Следует отметить, что для любого интернет-ресурса структура и содержание личного кабинета определяются в каждом конкретном случае исходя из назначения сайта и особенностей его функционала. И очевидно, что приведенный здесь код не может быть использован напрямую для какого-либо другого варианта сайта.
Однако, основные моменты, которые будут рассмотрены в статье, вполне возможно использовать и в других подобных случаях. Особенно это касается взаимодействия с базой данных MySQL, так как ее использование необходимо для работы любого личного кабинета.
Поэтому в данной статье на примере «Мои заказы» мы посмотрим, каким образом пользователь личного кабинета может получить интересующую его информацию, причем доступную только для него. И как он может в предназначенные для него данные внести свои изменения.
По остальным двум разделам: «Профиль» и «Добавить заказ» подробного рассмотрения приводить здесь не будем, так как они сформированы аналогичным образом. Непосредственно с их кодом можно ознакомиться в исходных файлах сайта в файлах «profile.php» и «add-order.php», расположенных в папке «user» каталога «articles».
- Формируем состояние активности кнопок меню Личного кабинета
- О месте расположения контента страниц личного кабинета
- В разделе ‘Мои заказы’ выводим данные о существующих заказах пользователя
- Вносим изменения в данные о заказах пользователя
- Исходные файлы сайта
Формируем состояние активности кнопок меню Личного кабинета
Ранее при создании системы авторизации мы сформировали кнопки меню личного кабинета со ссылками на его разделы. Эти кнопки на текущий момент имеют три состояния:
- исходное;
- наведение курсора;
- нажатое (удерживаемая кнопкой мыши).
Но для того, чтобы пользователь мог визуально видеть, какая страница личного кабинета в данный момент отображается в области основного содержания, не лишне будет добавить кнопкам меню еще одно состояние, назовем его активное.
Для этого в список меню личного кабинета, находящийся в файле «aside.php» папки «blocks» добавим строки PHP-кода с условным оператором if. С помощью которого, при совпадении текущего адреса страницы с заданным пунктом меню, для соответствующего тега li будет применяться отдельный класс, выделяющий его от других элементов (в данном случае «activ-user»).
-
Личный кабинет
-
-
if ($_GET[‘section’] == ‘user’ && $_GET[‘rubric’] == ‘account’) echo ‘
- Профиль
-
else
-
echo ‘
- Профиль
-
if ($_GET[‘section’] == ‘user’ && $_GET[‘rubric’] == ‘order’) echo ‘
- Мои заказы
-
else
-
echo ‘
- Мои заказы
-
if ($_GET[‘section’] == ‘user’ && $_GET[‘rubric’] == ‘add-order’) echo ‘
- Добавить заказ
-
else
-
echo ‘
- Добавить заказ
-
?>
‘;
‘;
‘;
‘;
‘;
‘;
Рис.1 фрагмент HTML-кода с активацией кнопок меню личного кабинета
Здесь видно, что при совпадении GET-параметров «rubric» и «page» со значениями адресов страниц личного кабинета (поз.4,7,10), соответствующему тегу li присваивается класс «activ-user» (поз.4,7,10). В противном случае тег li будет использоваться без этого класса (поз.6,9,12).
Что касается назначения свойств CSS для элементов активной кнопки меню (с классом «activ-user»), то для этого достаточно дополнить таблицу стилей соответствующим CSS-кодом.
В связи с тем, что оформление элементов с помощью стилей CSS достаточно подробно рассматривалось на ранних этапах создания сайта, начиная с раздела Верстка, и для данной статьи эти вопросы не столь уж актуальны, то мы здесь не будем отдельно приводить и рассматривать этот CSS-код.
При желании данный фрагмент можно посмотреть во внешней таблице стилей, находящейся в файле main.css, который в свою очередь можно скачать в прилагаемых исходных файлах сайта. В таблице стилей этот фрагмент находится в строках 973÷978.
После того, как мы сделали эти дополнения, авторизуемся на сайте и перейдем на какую-нибудь страницу личного кабинета, как показано на скриншоте (для авторизации будем использовать ранее созданный аккаунт с логином Audi387357 и паролем Z5nC89).
Рис.2 Активное состояние одного из пунктов меню личного кабинета
Таким образом мы получили нужный результат, а именно: при выборе одного из разделов личного кабинета, соответствующий пункт меню отображается в активном состоянии (в данном случае выбран раздел «Мои заказы»).
О месте расположения контента страниц личного кабинета
При формировании страниц личного кабинета нам прийдется взаимодействовать с базой данных с использованием соответствующих PHP-скриптов. Поэтому в данном случае потребуется работать с содержимом контента, в котором должен будет присутствовать PHP-код.
Как ранее отмечалось, структура данного сайта создана таким образом, что контент для области основного содержания страниц можно размещать, как в базе данных (поле «content» таблицы «url»), так и непосредственно в файлах сайта. Причем контент, размещенный в базе данных, имеет больший приоритет по сравнению с файлами.
Т.е, контент из файла может быть выведен в область основного содержания только в том случае, если соответствующее поле «content» таблицы базы данных «url» пустое. Если же это поле будет чем-то заполнено, то в качестве контента будет использоваться содержимое не файла, а базы данных, извлеченное из поля «content».
Так как для рассматриваемых страниц в области основного содержания будет присутствовать PHP-код, то мы сейчас будем работать не с содержимом, извлекаемом при формировании динамических страниц из базы данных, а непосредственно с файлами, размещенными в определенном месте на сайте.
Более подробно о том как это реализовано, можно посмотреть в статье, где на стадии оформления контента, в разделе «Подготовка к оформлению», был пояснен механизм такого способа работы с областью основного содержания. А также показан добавленный в шаблон главной страницы соответствующий фрагмент кода, обеспечивающий выбор нужного варианта использования контента.
Таким образом, исходя из адреса страниц («/user/profile.html», «/user/order.html» и «/user/add-order.html»), файлы, с которыми мы сейчас будем работать, должны иметь имена «profile.php», «order.php» и «add-order.php», соответственно. И при этом должны находиться в папке «user» каталога «articles».
Нам не раз уже приходилось создавать новые файлы, поэтому сложностей в этом не должно возникнуть. При необходимости, можно посмотреть, как мы это делали на этапе верстки сайта.
На скриншоте показано размещение созданных файлов, предназначенных для работы личного кабинета, которые располагаются в папке «user» каталога «articles» сайта.
Рис.3 Вновь созданные файлы личного кабинета
Таким образом мы определили место, где будут размещаться файлы личного кабинета. И дальше, на примере страницы «Мои заказы» посмотрим, как можно реализовать взаимодействие личного кабинета с базой данных.
В разделе ‘Мои заказы’ выводим данные о существующих заказах пользователя
Для формирования страницы «Мои заказы», в первую очередь сформируем элементы вывода информации о выполненных заказах, представляющие собой таблицы с двумя столбцами. Первый столбец — наименование параметра заказа, второй — значение. Для чего поместим в созданный файл «order.php» следующий код:
-
Личный кабинет
-
-
Мои заказы
-
if ($session_check == 1) { //При разрешающем флаге авторизации
-
$table = ‘orders’;
-
$column = ‘client-login’;
-
$value = $_SESSION[‘login’];
-
if ($data_bd = getAllLine($table, $column, $value)) {
-
for ($i = 0; $i < count ($data_bd); $i++) {
-
$number_order++;
-
$date = $data_bd[$i][‘date’];
-
$marka = $data_bd[$i][‘marka’];
-
$model = $data_bd[$i][‘model’];
-
$year = $data_bd[$i][‘year’];
-
$vin = $data_bd[$i][‘vin’];
-
$insurance = $data_bd[$i][‘insurance’];
-
$namer_order = $data_bd[$i][‘namer-order’];
-
$center_price = $data_bd[$i][‘center-price’];
-
$discount_price = $data_bd[$i][‘discount-price’];
-
if (!empty($marka)) {
-
?>
-
Заказ № echo $number_order;?>
- «order»
-
}
-
else {
-
?>
-
В настоящее время у Вас нет заказов.
-
}
-
}
-
?>
Дата: | echo $date;?> |
Марка автомобиля: | echo $marka;?> |
Модель: | echo $model;?> |
Год выпуска: | echo $year;?> |
Последние 6 цифр VIN: | echo $vin;?> |
Страховая компания: | echo $insurance;?> |
Вид маркировки: | echo $namer_order;?> |
Цена сервис-центра: | echo $center_price;?> |
Цена со скидкой: | echo $discount_price;?> |
class=>
}
}
else {
?>
Личный кабинет доступен только для авторизованных пользователей. Для входа в него необходимо авторизоваться на сайте со своим логином и паролем в соответствующей форме.
}
?>
Рис.4 Файл «order.php» с выводом информации о выполненных заказах на странице «Мои заказы»
По существу приведенный фрагмент состоит из двух основных частей. В первой части с использованием PHP-кода выполняются следующие действия:
Проверяется, авторизован ли пользователь (поз.7). И если да, то выполняется дальнейшая работа скрипта. В противном случае на страницу выводится информационное сообщение о том, что личный кабинет доступен только для авторизованных пользователей, и что для входа в него требуется авторизоваться (поз.79). После чего работа скрипта завершается.
Из таблицы базы данных «orders» выводятся все данные, относящиеся к заказам авторизованного пользователя. Для этого предусмотрен вызов функции getAllLine() (поз.11), которая из таблицы извлекает все записи удовлетворяющие условию, что в поле «client-login» (поз.9) имеется значение, совпадающее с логином авторизованного пользователя.
При этом необходимые аргументы передаются функции в виде переменных $table (поз.8), $column (поз.9) и $value (поз.10).
После вызова функции getAllLine() выполняется цикл for (поз.12), в котором имеющиеся в ассоциативном массиве $data_bd данные переносятся в PHP-переменные (поз.14÷22). Эти данные будут в дальнейшем использоваться для вывода информации о заказах.
Вторая часть состоит их HTML-кода, предназначенного для вывода информации в табличном виде. Для этого используются соответствующие таким случаям элементы
При этом в качестве значений ячеек таблиц используются ранее полученные переменные $date (поз.29), $marka (поз.33), $model (поз.37), $year (поз.41), $vin (поз.45), $insurance (поз.49), $namer_order (поз.53), $center_price (поз.57), $discount_price (поз.61).
Что касается оформления созданных таблиц, то назначенные для этих элементов свойства CSS можно посмотреть во внешней таблице стилей, находящейся в прилагаемых дополнительных материалах в файле main.css. Данный фрагмент кода находится в строках 827÷856.
Таким образом мы составили скрипт вывода данных из таблицы MySQL и сформировали необходимые таблицы.
Однако, в используемом скрипте мы применили функцию вывода набора строк по заданному условию getAllLine(), которая на данный момент отсутствует в нашей библиотеке, расположенной в файле functions.php папки mysql.
Сейчас в библиотеке имеется функция getLine() (строки 11÷16 в файле functions.php), предназначенная для вывода по заданному условию только одиночной строки, которую мы ранее неоднократно использовали.
Но так как в нашем случае для получения информации о заказах может потребоваться вывод данных не из одной, а из множества строк, то для реализации этой задачи необходима другая функция, которую мы сейчас и создадим. Ниже показан ее PHP-код.
-
//—-Универсальная функция вывода набора строк по заданному условию————-
-
function getAllLine($table, $column, $value) {
-
global $mysqli;
-
if (!$result = $mysqli->query(«SELECT * FROM `$table` WHERE `$column`=’$value‘»)) {
-
die (‘При извлечении записей возникла ошибка: ‘.$mysqli->errno.‘ — ‘.$mysqli->error);
-
}
-
$array = array();
-
while (($row = $result->fetch_assoc()) != false) {
-
$array[] = $row;
-
}
-
return $array;
-
}
-
?>
Рис.5 Универсальная функция вывода набора строк по заданному условию
В данной функции в отличие от getLine() в цикле «while» (поз.9÷11) при каждом обращении к методу «fetch_assoc()» через промежуточную переменную «$row» в массив $array[] (поз.10) будут записываться данные очередной строки.
Причем, одним из ключей массива будет порядковый номер строки (по умолчанию начиная от нуля), а второй — названия полей таблицы. И таким образом мы получим двумерный массив со всеми записями, которые удовлетворяют условию, указанному в запросе (поз.5).
Дополнив этой функцией нашу библиотеку (файл functions.php) попробуем теперь открыть созданную страницу «Мои заказы». И посмотрим, как будет на ней отображаться полученная из базы данных информация о заказах пользователя.
Рис.6 Вывод информации о заказах в табличном виде
Как видно, у пользователя с логином Audi387357 в настоящее время имеется два заказа: один на приобретение набора для самостоятельной маркировки (автомобиль Audi A6), другой — на маркировку с индивидуальным дизайном (автомобиль BMW X3).
При этом текст в таблице вполне хорошо виден благодаря применению различного шрифта в ее столбцах и чередованию цвета фона в строках.
Таким образом вопрос вывода в личном кабинете данных о существующих заказах пользователя мы закрыли. И теперь посмотрим, как можно в личном кабинете их изменять.
Вносим изменения в данные о заказах пользователя
Внесение в личном кабинете изменений в данные пользователя мы рассмотрим на примере записи в таблицу «orders» даты выполнения заказа. Для этого добавим в одну из строк таблицы во фрагменте кода страницы «Мои заказы» (рис.4) дополнительную форму, с помощью которой будем сохранять введенную дату в соответствующее поле нужной строки таблицы базы данных.
Ниже показан файл «order.php» с этим дополнением (добавленные строки выделены светлым фоном).
-
Личный кабинет
-
-
Мои заказы
-
if ($session_check == 1) { //При разрешающем флаге авторизации
-
$table = ‘orders’;
-
$column = ‘client-login’;
-
$value = $_SESSION[‘login’];
-
if ($data_bd = getAllLine($table, $column, $value)) {
-
$check_order++;
-
for ($i = 0; $i < count ($data_bd); $i++) {
-
$number_order++;
-
$date = $data_bd[$i][‘date’];
-
$make_date = $data_bd[$i][‘make-date’];
-
if (empty($make_date)) $status = ‘Ожидание’;
-
else
-
$status = ‘Выполнено’;
-
$marka = $data_bd[$i][‘marka’];
-
$model = $data_bd[$i][‘model’];
-
$year = $data_bd[$i][‘year’];
-
$vin = $data_bd[$i][‘vin’];
-
$insurance = $data_bd[$i][‘insurance’];
-
$namer_order = $data_bd[$i][‘namer-order’];
-
$center_price = $data_bd[$i][‘center-price’];
-
$discount_price = $data_bd[$i][‘discount-price’];
-
if (!empty($marka)) {
-
?>
-
Заказ № echo $number_order;?>
- «order»
- name=«result» action=«/user/order.html» method=«post»>
-
echo $make_date;?>
-
if (empty($make_date)) {
-
?>
-
type=«date» name=«date-result»>
-
type=«submit» name=«result-button» value=«Отправить»>
-
type=«text» name=«marka-result» value=« echo $marka;?>«>
-
type=«text» name=«vin-result» value=« echo $vin;?>«>
-
}
-
?>
-
}
-
else {
-
?>
-
В настоящее время у Вас нет заказов.
-
}
-
}
-
if (!empty($check_order) && !empty($marka)) {
-
?>
-
* — для возможности контроля со стороны пользователей учета выполнения заказов, большая просьба, в поле «Дата выполнения» отметить реальную дату оказанных услуг.
-
}
-
?>
Дата: | echo $date;?> |
Статус: | type=«text» value=« echo $status;?>«> |
Дата выполнения*: |
|
Марка автомобиля: | echo $marka;?> |
Модель: | echo $model;?> |
Год выпуска: | echo $year;?> |
Последние 6 цифр VIN: | echo $vin;?> |
Страховая компания: | echo $insurance;?> |
Вид маркировки: | echo $namer_order;?> |
Цена сервис-центра: | echo $center_price;?> |
Цена со скидкой: | echo $discount_price;?> |
class=>
}
}
else {
?>
Личный кабинет доступен только для авторизованных пользователей. Для входа в него необходимо авторизоваться на сайте со своим логином и паролем в соответствующей форме.
}
?>
Рис.7 Дополненный файл «order.php» для ввода изменений в данные пользователя
Следует обратить внимание, что здесь в зависимости от полученного из базы данных значения даты выполнения заказа (переменная $make_date), элементы в форму подключаются в следующем порядке:
- При отсутствии в базе данных отметки о дате выполнения заказа, и соответственно при пустом значении переменной $make_date (поз.46), в форме будут присутствовать элементы поля ввода даты (поз.48) и кнопки отправки формы (поз.49).
- Если же эта дата уже ранее была сохранена в базе данных, то переменная $make_date должна будет иметь какое-либо определенное значение. И в этом случае вместо поля ввода даты и кнопки должно отображаться текстовое поле со значением даты (поз.44).
Что касается полей «marka-result» и «vin-result» (поз.51,52), то они здесь используются только для того, чтобы передать значение марки автомобиля и его VIN-номера в обработчик формы. Вывод этих элементов на экран браузера заблокирован с помощью стилей CSS.
Также следует добавить, что таблица вывода данных о заказе дополнена еще одной строкой, в которой отображается статус выполнения заказа (поз.36÷39).
При этом значение переменной $status со словами «Ожидание» или «Выполнено» формируется в зависимости от значения той же переменной $make_date, подобным образом, как и в предыдущем случае:
- При пустом значении переменной $make_date (поз.17) статусу $status присваивается состояние «Ожидание» (поз.17).
- Если же $make_date имеет какое-либо определенное значение, то переменной $status присваивается «Выполнено». (поз.19).
Что касается оформления дополненных строк таблицы, то используемые для этих элементов свойства CSS можно посмотреть во внешней таблице стилей, находящейся в прилагаемых дополнительных материалах в файле main.css. Данный фрагмент кода находится в строках 857÷895.
Таким образом форму для отправки даты выполнения заказа мы сформировали, осталось теперь только ее обработать. Для этого создадим обработчик формы, который разместим в этом же файле «order.php» (добавленный код выделен светлым фоном).
-
if (!empty($_POST[«result-button»])) {
-
$table = ‘orders’;
-
$column = ‘make-date’;
-
$value = htmlspecialchars($_POST[‘date-result’]);
-
$column_1 = ‘marka’;
-
$value_1 = htmlspecialchars($_POST[‘marka-result’]);
-
$column_2 = ‘vin’;
-
$value_2 = htmlspecialchars($_POST[‘vin-result’]);
-
$success = rihgtOneColumnTwoСondition($table, $column, $value, $column_1, $value_1, $column_2, $value_2);
-
if (!$success) $alert = ‘Ошибка при отправке формы’;
-
else
-
$alert = ‘Вы успешно внесли дату выполнения и изменили статус заявки на Выполнено. Спасибо!’;
-
include«alert.php»;
-
}
-
?>
-
Личный кабинет
-
-
Мои заказы
-
if ($session_check == 1) { //При разрешающем флаге авторизации
-
$table = ‘orders’;
-
$column = ‘client-login’;
-
$value = $_SESSION[‘login’];
-
if ($data_bd = getAllLine($table, $column, $value)) {
-
$check_order++;
-
for ($i = 0; $i < count ($data_bd); $i++) {
-
$number_order++;
-
$date = $data_bd[$i][‘date’];
-
$make_date = $data_bd[$i][‘make-date’];
-
if (empty($make_date)) $status = ‘Ожидание’;
-
else
-
$status = ‘Выполнено’;
-
$marka = $data_bd[$i][‘marka’];
-
$model = $data_bd[$i][‘model’];
-
$year = $data_bd[$i][‘year’];
-
$vin = $data_bd[$i][‘vin’];
-
$insurance = $data_bd[$i][‘insurance’];
-
$namer_order = $data_bd[$i][‘namer-order’];
-
$center_price = $data_bd[$i][‘center-price’];
-
$discount_price = $data_bd[$i][‘discount-price’];
-
if (!empty($marka)) {
-
?>
-
Заказ № echo $number_order;?>
- «order»
- name=«result» action=«/user/order.html» method=«post»>
-
echo $make_date;?>
-
if (empty($make_date)) {
-
?>
-
type=«date» name=«date-result»>
-
type=«submit» name=«result-button» value=«Отправить»>
-
type=«text» name=«marka-result» value=« echo $marka;?>«>
-
type=«text» name=«vin-result» value=« echo $vin;?>«>
-
}
-
?>
-
}
-
else {
-
?>
-
В настоящее время у Вас нет заказов.
-
}
-
}
-
if (!empty($check_order) && !empty($marka)) {
-
?>
-
* — для возможности контроля со стороны пользователей учета выполнения заказов, большая просьба, в поле «Дата выполнения» отметить реальную дату оказанных услуг.
-
}
-
?>
Дата: | echo $date;?> |
Статус: | type=«text» value=« echo $status;?>«> |
Дата выполнения*: |
|
Марка автомобиля: | echo $marka;?> |
Модель: | echo $model;?> |
Год выпуска: | echo $year;?> |
Последние 6 цифр VIN: | echo $vin;?> |
Страховая компания: | echo $insurance;?> |
Вид маркировки: | echo $namer_order;?> |
Цена сервис-центра: | echo $center_price;?> |
Цена со скидкой: | echo $discount_price;?> |
class=>
}
}
else {
?>
Личный кабинет доступен только для авторизованных пользователей. Для входа в него необходимо авторизоваться на сайте со своим логином и паролем в соответствующей форме.
}
?>
Рис.8 Дополненный файл «order.php» для ввода изменений в данные пользователя
Приводить подробные пояснения работы обработчика формы (поз.2÷14), наверное, здесь не стоит. Так как подобный скрипт ранее достаточно подробно разбирался в разделе Работа с формами HTML.
При необходимости можно обратиться непосредственно к статье, в которой был рассмотрен механизм, обеспечивающий отправку данных формы в базу данных MySQL.
Нужно лишь отметить, что здесь при отправке данных используется функция rihgtOneColumnTwoСondition() (поз.10), которая должна обеспечить запись данных в поле «make-date» по заданному условию в двух полях — «marka» и «vin».
На данный момент этой функции в нашей библиотеки нет, поэтому нам ее нужно создать. Ранее мы уже создавали функции для записи данных с использованием PHP, например, функцию записи данных в таблицу ‘url_php’. Но в отличие от ранее созданных, в новой функции должно учитываться определенное условие, при котором запись должна выполняться, а именно:
- в поле «marka» должно иметь значение, соответствующее марки автомобиля пользователя;
- в поле «vin» — значение последних 6-ти цифр VIN-номера.
-
///—-Универсальная функция записи данных в одно поле по заданному условию в двух полях—-
-
function rihgtOneColumnTwoСondition($table, $column, $value, $column_1, $value_1, $column_2, $value_2) {
-
global $mysqli;
-
$success = $mysqli->query(«UPDATE `$table` SET `$column`=’$value’ WHERE `$column_1`=’$value_1′ AND `$column_2`=’$value_2′»);
-
return $success;
-
}
-
?>
Рис.9 Универсальная функция записи данных в одно поле по заданному условию в двух полях
Как видно, в этой функции происходит вызов метода query (поз.5) с SQL-запросом, в котором используется команда UPDATE для таблицы «$table». При выполнении которой происходит обновление поля «$column» на значение «$value» при условии, что поле «$column_1» имеет значение «$value_1», а «$column_2» — «$value_2».
При этом наименования полей и их значения являются аргументами функции, переданными ей в виде PHP-переменных $table, $column, $value, $column_1, $value_1, $column_2 и $value_2.
После добавления данной функции в библиотеку, находящуюся в файле functions.php, можно теперь проверить работу личного кабинета после выполненных последних изменений. Для этого войдем в раздел «Мои заказы» и изменим дату выполнения заказа, как показано на скриншоте.
Рис.10 Ввод даты выполнения заказов
Как видно в первом заказе в поле «Дата выполнения» введена дата. А после отправки формы через кнопку «отправить» должно появиться диалоговое окно с сообщением об успешном изменении даты выполнения заказа.
Рис.12 Диалоговое окно с сообщением о результате отправки формы
В итоге, в таблице заказа №1, в котором были внесены изменения, мы получили ожидаемый результат — статус изменился на «Выполнено» и отобразилась введенная дата выполнения заказа.
Рис.13 Внесенные изменения в заказ №1
При этом во втором заказе никаких изменений не произошло — в таблице остался прежний статус ожидания со строкой отправки формы.
В итоге мы сформировали раздел личного кабинета «Мои заказы». Где подробно рассмотрели взаимодействия с базой данных на примере ввода/вывода в личном кабинете данных пользователя.
Что касается других разделов личного кабинета, то принцип их создания аналогичен. И, как было ранее отмечено, с кодом этих страниц можно ознакомиться в исходных файлах сайта в файлах «profile.php» и «add-order.php», расположенных в папке «user» каталога «articles».
Ниже приводится лишь внешний вид созданных страниц личного кабинета «Профиль» и «Добавить заказ».
Рис.14 Страница «Профиль» личного кабинета
Рис.15 Страница «Добавить заказ» личного кабинета
Что касается функционирование данных разделов личного кабинета, то это можно посмотреть на тестовом сайте «avtobezugona.ru одним из возможных вариантов:
- здесь, во встроенном фрейме с использованием встроенного фрейма на текущем ресурсе,
- либо либо непосредственно на домене avtobezugona.ru.
скриншот 51
Таким образом, созданием личного кабинета мы завершили тему авторизации пользователей. При этом следует отметить, что две ссылки в форме авторизации, а именно: «Забыли логин?» и «Забыли пароль?» остались пока не раскрыты.
Обусловлено это тем, что для восстановления аккаунта необходимо использование электронной почты. Поэтому мы вернемся к этим вопросам при рассмотрении вопросов создания электронной почты на сайте.
Исходные файлы сайта
Исходные файлы сайта с обновлениями, которые были сделаны в данной статье, можно скачать из прилагаемых дополнительных материалов:
- Файлы каталога www
- Таблицы базы данных MySQL
Дополнительные материалы бесплатно предоставляются только зарегистрированным пользователям.
Для скачивания исходных файлов необходимо авторизоваться под своим аккаунтом через соответствующую форму.
Для тех кто не зарегистрирован, можно это сделать на вкладке Регистрация.
С уважением,
- Следующая сатья: Подключаем почту домена к Mail.ru
Если у Вас возникли вопросы, или есть какие-либо пожелания по представлению материала, либо заметили какие-нибудь ошибки, а быть может просто хотите выразить свое мнение, пожалуйста, оставьте свои комментарии. Такая обратная связь очень важна для возможности учета мнения посетителей.
Буду Вам за это очень признателен!
В этой статье я расскажу про наше универсальное решение для обработки заказов клиента через личный кабинет на сайте.
В этой статье я расскажу про наше универсальное решение для обработки заказов клиента через личный кабинет на сайте.Решение охватывает как услуги, так и заказ товаров.
Демо решение доступно по адресу.
Промостраница с описанием решения
Назначение решения
Представьте, что у вас есть компания, которой необходимо настроить обработку регулярных заказов от своих существующих клиентов. Это могут быть либо какие-то услуги, либо заказы товаров. Важный момент — это действующие ваши клиенты, которые периодически имеют потребность в ваших услугах/товарах. Это может быть опт, юридические услуги, поисковая оптимизация, заказ расходников и т.д.
Главная цель — эффективная обработка заказов клиентов.
Клиент заходит в личный кабинет на сайт, осуществляет заказ товаров и услуг. Менеджеры обрабатывают этот заказ также через свой личный кабинет. При наступлении значимых событий заинтересованная сторона получается уведомление (изменение статуса заказа, новый запрос на услугу, оплата с баланса на сайте и др.).
Подробнее нужен ли личный кабинет для компании читайте в нашей следующей статье.
Из чего состоит система работы с заказами
Есть 3 главных кабинета:
-
Супервизор — управляет торговыми точками, менеджерами и осуществляет общий контроль системы.
-
Менеджер точки — персонал торговой точки, обрабатывающий заказы на данной точке.
-
Клиент точки — клиент, который может заказывать товары и услуги на торговой точке.
Каждый клиент и менеджер прикреплены к определенной точке. Это может быть филиал компании, магазин-бутик, франчайзинг или что-то другое.
Вся работа происходит в личных кабинетах. Это не классический вид сайта-магазина, а сервис, заточенный под выполнение типовых бизнес-процессов: найти товар, оформить заказ, отметить факт оплаты и т.д.
Возможности системы учета заказов и клиентов
В системе по умолчанию есть следующие возможности:
-
Каталог товаров.
-
Оформление заказа.
-
Создание запроса на услугу.
-
Разделение на торговые точки.
-
Баланс клиента.
-
Оплата баллами заказа.
-
Бонусная программа (увеличение баланса баллов при оплате).
-
Страница точки (информация).
-
Переписка по заказу.
-
Чат поддержки клиента через виджет Replain.
-
Учет финансовых транзакций по заказам.
-
Базовая аналитика по точкам для супервизора.
-
Системная профилактика.
Решение реализовано на базе платформе Falcon Space — это дает значительные возможности по изменению бизнес-логики решения: создавать новые объекты учета, добавлять личные кабинеты, менять бизнес-логику существующих процессов.
Личный кабинет клиента для сайта
В кабинете клиента есть следующие элементы:
-
Рабочий стол пользователя.
-
Каталог товаров.
-
Мои заявки на услуги.
-
Мои заказы.
-
Мой профиль.
-
Уведомления.
-
Мой баланс.
-
Страница точки (информация).
Личный кабинет менеджера точки
Менеджер имеет следующие страницы в личном кабинете:
-
Дашборд.
-
Каталог.
-
Запросы на услуги.
-
Заказы.
-
Настройки точки.
-
База клиентов по точке.
-
Уведомления.
-
Финансовые транзакции по точке.
Важная особенность — менеджер точки имеет доступ только к данным по своей точке (клиенты, финансы, заказы, запросы).
Запросы на услугу в конечном счете приводят к созданию заказа. Т.е. заказ может содержать как товары, так и услуги.
Личный кабинет супервизора
Супервизор представляет администрацию сайта, координирует систему в целом. Состав меню личного кабинета супервизора:
-
Дашборд супервизора.
-
Управление точками и общая статистика по ним.
-
Управление менеджерами (создание, блокирование).
-
Смотр всей базы клиентов.
-
Финансовые операции.
-
Настройки (системные, бонусная программа и др.).
-
Управление услугами (категории базовых услуг).
-
Управление товарами (категории и товары).
-
Проведение бизнес-диагностики. Проверка целостности данных и основных бизнес-правил по заказам, запросам услуг, клиентам, точкам и т.д.
Личный кабинет разработчика
Систему можно и нужно дальше адаптировать под свои возможности. Чем точнее система учитывает особенности вашего бизнеса, тем эффективнее будут протекать бизнес-процессы в ней.
Для этого вы можете использовать все возможности платформы, улучшая и разрабатывая новый функционал в системе. Для поддержки подобного решения необходимо знать всего лишь 2 технологии: MS SQL Server (бизнес-логика и обработка данных) и Bootstrap 4 (стилизация и кастомизация вывода).
Техническая документация по платформе Falcon Space
Что вы можете делать в кабинете разработчика:
-
создавать новые страницы;
-
создавать, редактировать формы, таблицы, графики, дашборды и другие компоненты;
-
осуществлять диагностику на уровне базы данных;
-
управлять пользователями, изменять состав ролей системы;
-
менять бизнес-логику существующих страниц в личных кабинетах;
-
анализировать поведение пользователей через логи системы.
Про деньги
Важно отметить, что система не принимает непосредственно платежи от клиента (это можно дополнительно внедрить через интеграцию платежных шлюзов, например, Cloud Payments или YoCassa). В системе лишь ведется учет оплат, а также начисление баллов за оплаты и списание бонусов в счет оплаты заказов.
Оплата может быть произведена через расчетный счет, и затем менеджер отмечает факт оплаты на странице заказа. Т.е. система только хранит информацию о финансах, но сами финансы не проходят через сайт.
Универсальность
Данное решение мы делаем универсальным. Оно не привязано к какой-либо конкретной отрасли.
По необходимости вы можете кастомизировать решение под свою отрасль, например, добавить дополнительные специфичные поля в услуги.
Что входит в решение сервиса услуг
Ключевые части решения, которое мы предлагаем:
-
Сама коробка Falcon Space. Falcon Space — это веб-платформа для создания бизнес-приложений, а не конкретное решение под бизнес задачу.
-
Решение Falcon Rent. Это надстройка базовых функций учета аренды объектов с возможностью развивать под свои нужды. Решение можно дальше развивать и адаптировать под себя.
-
Настроенный хостинг (или сервер VPS), домен, SSL. Мы можем настроить приложение на вашем сервере Windows Server, либо разместить на хостинге (например, на Reg.ru, тариф win-0).
Точки расширения
Важный момент — мы исходим из того, что любое коробочное решение можно и нужно доводить под себя. Поэтому мы внедряем базовый вариант и через проектную работу дорабатываем его до нужного состояния.
Любое решение на Falcon Space содержит несколько точек расширения:
-
можно добавить новую роль, если требуется;
-
можно создавать новые объекты учета (по сути новые таблицы в базе данных);
-
можно создавать новые страницы с формами, таблицами;
-
можно менять бизнес-логику существующих страниц можно менять внешний вид страниц, настраивать стилизацию проекта. Можно интегрироваться с внешними системами через универсальный API.
Все это позволяет с уверенностью сказать, что можно реализовать на решении Falcon Space практически все, что угодно. В крайних случаях создаются дополнительные компоненты под проект.
Основная идеология платформы — взять готовое решение и адаптировать/развивать под свои потребности.
Сколько стоит решение
По стоимости решения вы можете найти информацию на странице Готового решения личных кабинетов клиента компании. Но учитывайте, что в любом случае потребуются какие-то доработки под ваши нужды и адаптацию под вашу бизнес-логику проекта.
Что можно сделать чтобы получить первичную оценку проекта в целом с учетом доработок?
-
Посмотреть наше демо.
-
Определиться, что вы хотите дополнительно внедрить в программу сверх того, что есть в демо и описать документом. Можно сделать Концепцию веб-проекта.
-
На основании вашего документа мы составим КП на доводку нашего демо под ваши потребности.
Чем меньше первая версия для внедрения — тем меньше бюджет, быстрее будет реализован проект, и тем быстрее заказы начнут обрабатываться по новому процессу через личные кабинеты.
Старайтесь убрать все второстепенное из первой версии своего продукта. В дальнейшем решение можно будет постепенно развивать на основе реально возникающих потребностей.
Важно. Большая просьба — не описывать на словах, что вам необходимо доработать. Опишите это документом (концепция) — так будут лучше учтены детали проекта и будет точнее оценка.
Как выглядит процесс работы?
Чем мы занимаемся и не занимаемся:
-
Мы — разработчики платформы Falcon Space. Мы регулярно улучшаем платформу и создаем на ней различные бизнес-решения.
-
Мы обеспечиваем всю техническую сторону на проекте: сопровождаем проект, настраиваем хостинг, сервер, создаем новые функционалы под проект.
-
Мы не занимаемся дизайном.
-
Мы не занимаемся продвижением, поисковой оптимизацией и рекламой.
-
Мы не пишем тексты для клиентских проектов. Мы не переводчики.
-
Мы реализуем ваше видение проекта в виде веб-приложения.
Делаете ли вы мобильное приложение под Android, IOS?
Если говорить о нативных мобильных приложениях (те, что устанавливаются через AppStore и Google Play) — мы их не делаем. Наша платформа полностью адаптивна под мобильные устройства.
Также Falcon Space поддерживает технологию PWA. Это практически стирает разницу между мобильным приложением и веб-сайтом:
-
можно создать иконку на экране телефона и запускать его как приложение.
-
есть функции геолокации, доступ к камере и некоторые другие функции.
Более подробно преимущества PWA рассмотрены в нашей статье «Адаптивный сайт или мобильное приложение».
Главные минусы мобильных нативных приложений:
-
дорого поддерживать и развивать (3 разных разработчики — сайт, IOS, Android);
-
сложно стимулировать клиентов ставить приложения на телефон (засорение памяти телефона, риски взлома);
-
сложно и долго обновлять (одобрение в appstore и play market, обновление программы на телефонах).
Демо сайта обработки заказов клиентов через личные кабинеты
Смотреть демо личного кабинета клиента и менеджера на точке. При заходе на демо вы регистрируетесь через формы как новый клиент или новый менеждер и попадаете в соответствующий личный кабинет.
Если у вас возникли вопросы по созданию личных кабинетов на сайте для клиентов, напишите нам на Whotsapp
Обновление Апрель 2022. Мы постепенно добавляем новые возможности в решение Falcon Service:
-
появились отдельные лендинги для точек, где клиент может самостоятельно регистрироваться
-
добавлена возможность вести расходы по точкам. Менеджер точки и супервизор добавляет расходы по категориям.
-
добавлены финансовые инструменты, такие как ABC анализ клиентов (показывает кто формирует выручку), а также отчет о движении денежных средств отдельно по каждой точке.
-
улучшена система настроек для супервизора. Все ключевые настройки теперь находятся в одном месте.
-
улучшен вид вывода денежных средств (знаки разрядов, вывод валюты, цвет).
-
внедрена возможность пополнения баланса клиентом через платежный шлюз Cloud Payments
Решение постепенно обрастает новыми возможностями. Если у вас есть идеи, что еще полезного можно добавить в решение, напишите пожалуйста в чат справа внизу.
Источник
Tutorial to create a login system using HTML, PHP, and MySQL
This is a tutorial for creating a login system with the help of HTML, PHP, and MySQL. Your website needs to be dynamic and your visitors need to have instant access to it. Therefore, they want to log in as many times as possible. The login authentication system is very common for any web application. It allows registered users to access the website and members-only features. It is also helpful when we want to store information for users. It covers everything from shopping sites, educational sites, and membership sites, etc.
This tutorial is covered in 4 parts.
Table of Contents
1) Building a Signup system
In this part, We will create a signup system that allows users to create a new account to the system. Our first step is to create a HTML registration form. The form is pretty simple to create. It only asks for a name, email, password, and confirm password. Email addresses will be unique for every user. Multiple accounts for the same email address are not allowed. It will show an error message to the users who try to create multiple accounts with the same email address.
Step 1: Creating Registration Form in HTML
We will create a PHP file named register.php with the following code in it. This is a simple HTML form with some basic validation. If you are not familiar with HTML then you can get it from many online sites who give ready-made html5 login form templates.
The output of the above HTML form will look like this.
All the input fields are required by adding the «required» attribute which is the default HTML attribute. The use of type=»email» will validate the email address provided by users and gives an error if the email address is not valid. For the registration form, we have used bootstrap for rapid development. If you want to save your time on HTML code you can always use some free html5 templates for your project.
Step 2: Creating the MySQL Database Table
You will need to create a new database with any suitable name you want. After that please execute the below SQL query to create the user’s table inside your newly created MySQL database.
Step 3: Creating Database Configuration File
Now, we have created the users table. Let’s create a new PHP file named config.php to connect with the MySQL database. Paste the following code in the config.php file and change the database name to whatever you choose while creating the database.
Step 4: Creating a Session File
Let’s create a file named session.php. In this file, we will start the session and check if a user is already logged in, if yes then we will redirect the user to welcome.php file.
Step 5: Create Registration Form in PHP
Finally, it’s time to create a PHP code that allows users to register their accounts into the system. This PHP code will alert users with an error if any user is already registered with the same email address.
Replace the following code in the register.php file.
Once user click on submit button it will check if $_SERVER[«REQUEST_METHOD»] == «POST» and $_POST[‘submit’] variable has been set. For security concerns, we always suggest not to store the password as plain text in the database. We have used password_hash() function which creates a new password hash using a strong one-way hashing algorithm.
The above PHP script will validate that no user is registered with the same email address and also validate password. After validation is confirmed we store the user-provided information in the users’ table and alert the user that registration was successful.
2) Building a Login System
In this part, we will create a login form to allow users to access the restricted area of the system. In our case, the restricted area is a welcome page which we will cover in the next part.
Step 1: Creating a Login Form in HTML
Below is the Login Form in HTML. Paste it in a file named login.php
The output of the above code will look like this
Step 2: Creating a Login System in PHP
After creating the login form in HTML, we will write a code to validate login credentials. On form submit we will check that the email and password are filled. If they filled then we will execute a SELECT query to find the record in a database on the basis of email and password. If any record found, then we will store the «userID» in session and the user is redirected to the welcome.php file, otherwise, the user is alerted with an error message.
Let’s replace the following code in the login.php file.
3) Creating a Welcome Page
Below is the code for the welcome.php file. Users will be redirected to this page after a successful login process. We have added some code at the top of the page to check if the user is not logged in, then redirect the user to the login page.
Let’s create a welcome.php file and paste the following code in it.
4) The Logout script
Finally, Let’s create a logout.php file with the following code in it.
Once the user clicks on the Log Out link, the above script, will be called to destroy the session and redirect user to the login.php file.
Conclusion
In this tutorial, I explained how you can create a Login System using HTML, PHP and MySQL. Once you understand how simple it is to create a login system you can add other features like reset password, forgot password, verify email address, edit user’s profile, etc.
Под личным кабинетом понимается место, где пользователь может редактировать данные своего профиля. Давайте сделаем страницу account.php , зайдя на которую пользователь увидит форму для редактирования данных своего профиля (кроме логина и пароля, их следует обрабатывать особым образом).
Обратите внимание на то, что id пользователя мы не передаем GET параметром — мы сделаем так, чтобы каждый пользователь на странице account.php видел данные своего профиля, а не чужого.
Для этого следует при авторизации пользователя мы должны в сессию записать id этого пользователя, вот так:
Затем по заходу на страницу account.php мы будем делать SELECT запрос, который будет доставать из БД пользователя с id из сессии:
Данные пользователя мы должны показать в форме для редактирования. Пусть, к примеру, это будут имя и фамилия пользователя:
После нажатия на кнопку отправки формы мы должны будем сделать запрос на обновление юзера:
Как сделать личный кабинет на сайте php
Так получается что мой сайт mzcoding.com 3й раз меняет домен и движок и всегда при запуске нового сайта я обновлял статью по написанию Личного кабинета на PHP! В далеком 2010 это был простой ЛК на PHP 5.0, в 2014 это был ЛК 2.0 где мы обновили версию языка и код и добавили несколько плюшек. И вот настал 3й раз в этой и следующей статье мы напишем полноценный кабинет пользователя с регистрацией, авторизацией и базовым ЛК с модерацией! Разработку мы будем вести с применением PHP7 и Bootstrap 4, а так-же с применением некоторых компонентов symfony.
Первым делом создадим каталог с наименованием lk, далее откроем терминал по адресу данной папки и введем:
У вас должен быть глобально установлен composer, что это такое и как это сделать можно прочесть тут.
Далее composer просит ввести наименование пакета! Я назову его mzcoding/lk. Далее будут еще несколько пунктов описание, автор (можете указать их на свое усмотрение). Опция Minimum Stability Укажите dev. Далее оставляйте значения по умолчанию!
В конце у вас спросят, хотите ли вы установить какие либо зависимости? Вводим no. В итоге будет создан файл composer.json со следующим содержимым:
Шаг 2 — Настройка зависимостей
Теперь установим необходимые нам в работе библиотеки, первым делом установим http компоненты от symfony. Введем в терминале:
После установки данного пакета, установим еще один, это будет контейнер зависимостей DI. В качестве контейнера будем использовать библиотеку от разработчиков symfony, pimple
Для установки выполним:
Давайте взглянем на наш файл composer.json. Если все верно в секции require увидим что-то подобное:
Версии библиотек могут отличаться!
Давайте сразу после секции require, добавим секцию autoload, там мы укажем где composer может искать файлы нашего приложения и автоматически их подключать, для всех этих файлов мы укажем единое пространство имен. Итоговый вариант файла composer.json должен выглядеть следующим образом:
Так-же давайте сразу создадим все необходимые каталоги.
app — Содержит все файлы/каталоги отвечающие за логику нашего приложения.
assets — Список js/css/img файлов.
config — Файлы конфигурации приложения.
helpers — Каталог с файлом helper.php который хранит вспомогательные функции.
Шаг 3 — Создаем структуру проекта
Все наши приготовления готовы! Теперь создадим точку входа нашего проекта, в корне проекта создадим файл index.php со следующим содержимым:
Давайте разберемся, что мы делаем в данном файле.
Первым делом мы инициализируем сессию, думаю тут все понятно. Далее мы подключаем наши зависимости:
Подтягиваем конфигурацию из файла конфига и устанавливаем глобальную константу на текущий каталог.
Далее мы открываем конструкцию try-catch тем самым отлаживая возникшие выше в коде исключительные ситуации. Обратите внимание в данном примере мы создали свой тип исключений LkException.
В блоке try мы инициализируем (получаем) все запросы (requests), а так-же инициализируем контейнер зависимостей (DI).
Далее мы добавляем в данный контейнер, конфигурацию проекта:
Экземпляр класса Session (данный класс опишем немного позже)
Обратите внимание на конструкцию добавления. Мы используем метод factory нашего контейнера, что позволяет нам получать новый экземпляр объекта данного класса каждый раз при его обращении, что соответственно позволит нам постоянно перегружать сессию при каждом запросе.
Далее мы передаем в наш контейнер подключение к БД (с помощью PDO). В нашем случае мы присваиваем переменной контейнера, анонимную функцию, которая подключается к базе и возвращает объект PDO.
В качестве примера мы используем БД PostgreSql.
И в завершении мы передаем текущий процесс в другой метод, а именно вызываем метод:
Тут мы вызываем метод init класса Router предварительно передав наш инициализированный контейнер в конструктор класса.
Что-ж далее нам нужно создать класс Router, который примет управление текущим процессом.
Создадим файл Router.php в каталоге app:
Тут все просто, при каждом запросе мы будем передавать наименование контроллера и метода (action) которые будут вызваны. Допустим мы хотим создать новый контакт, url на форму создания нового контакта может выглядеть следующим образом:
http://localhost:8000/index.php?c=contact&a=create
Система увидев такой код, вызовет метод create() у класса ContactController.php.
Теперь давайте опилим вспомогательный класс сессий, который мы использовали выше! Этот класс просто представляет собой обертку над глобальным массивом сессий. Создадим каталог Classes и добавим туда новый файл Session.php.
Шаг 4: Контроллеры и модели
Теперь добавим дамп таблицы для пользователей которые будут регистрироваться/авторизовываться!
Теперь давайте опишем систему аутентификации! Начнем с модели Создадим в каталоге Models базовую модель Model.php:
Думаю здесь все понятно из комментариев, мы просто описываем базовые методы для всех моделей!
Давайте начнем с пользователей и создадим модель Users:
Когда у нас описана модель мы можем приступить к логики приложения и сделать систему регистрации/авторизации пользователей!
Первым делом как и с моделями мы создадим базовый контроллер, для этого добавим каталог Controllers и добавим в него файл BaseController.php:
Конструктор данного контроллера принимает все пришедшие зависимости (например данные формы и любые другие данные сервера или пользовательского ввода)
Метод getConfig() возвращает наш файл конфигурации, а метод view() отвечает за вывод файлов представления и передачу параметров в них.
Далее давайте добавим файлы контроллеров отвечающих за регистрацию и авторизацию пользователей!
Добавим еще один контроллер RegisterController.php:
Теперь посмотрим как будет выглядеть представление, по факту это просто форма регистрации register.phtml:
И следом добавим контроллер авторизации LoginController.php
Форма входа будет выглядеть следующим образом login.phtml:
Далее сразу-же создадим и опишем контроллер отвечающий за вывод ЛК AccountController.php.
И так-же посмотрим на въюху account.php:
Шаг 5 — Заключительный
Если вы будете внимательны, то увидите, что мы используем глобальные функции (так называемые хелперы) по типу _hpswd или dbhelper, давайте опишем файл helpers.php
Модели стран, регионов и городов, а так-же логику администратора вы можете описать сами или найти в репозитории проекта.
Личный кабинет пользователя часто делают в интернет-магазинах, так как с ним удобнее заказывать товары. В REG.Site сделать личный кабинет и форму авторизации для входа в него можно 2 способами:
- Выбрать готовый шаблон интернет-магазина с личным кабинетом.
- Использовать плагин.
Способ 1. Выбрать подходящий шаблон
Самый простой способ — выбрать один из десятка наших шаблонов для интернет-магазина с возможностью создания личного кабинета. Вам останется только поработать над внешним видом страниц, чтобы он соответствовал вашему бренду.
Способ 2. Использовать плагин Ultimate Member
Кроме внутренних инструментов REG.Site, для создания личного кабинета можно использовать плагины. Мы рекомендуем плагин Ultimate Member. Расскажем, как с помощью него создать личный кабинет пользователя.
- Перейдите в админку WordPress.
- Установите плагин Ultimate Member. Для этого перейдите Плагины ― Добавить новый
- Найдите плагин Ultimate Member и нажмите Установить:
- Нажмите Активировать:
- Теперь можно переходить к настройкам личного кабинета. Перейдите в Ultimate Member ― Настройки. Перед вами появится 6 вкладок. Подробнее рассмотрим каждую из них.
Общее
Внутри этой вкладки есть ещё 4 вкладки.
Страницы. Вы указываете, какие страницы сайта нужны для системы личных кабинетов: страница регистрации, авторизации, восстановления пароля, профиля пользователя и др. Плагин автоматически добавит эти страницы в список глобальных блоков Divi. Для настройки внешнего вида этих страниц нужно будет перейти в «Глобальные блоки» и создать страницы из списка существующих страниц.
Пользователи. Укажите настройки, которые касаются отображения пользователя. Здесь можно указать, каким образом будет формироваться личная ссылка профиля пользователя, как будет отображаться имя пользователя, какой длины должен быть пароль и т. п.
Учётная запись. Позволяет настроить отображение и нюансы работы учётной записи. Также позволяет добавлять или убирать функциональные возможности пользователей.
Загрузки. Чтобы файлы пользователей не занимали много места на вашем хостинге, поставьте ограничения на размер загружаемых фото и файлов.
Доступ
Здесь две вкладки: ограничение содержания и прочее.
Во вкладке «Ограничение содержания» можно закрыть доступ к сайту для неавторизованных пользователей, а также настроить сообщение, которое увидят пользователи, у которых нет доступа к ресурсу.
Во вкладке «Прочее» настраиваются требования к восстановлению пароля и чёрный список пользователей.
Email
В этой вкладке настраиваются уведомления через электронную почту: приветственное письмо, уведомление о смене пароля, удалении учётной записи и другом. Чтобы перейти к настройкам текста письма, рядом с нужным уведомлением нажмите на значок шестерёнки:
В конце страницы нужно указать email, откуда должны приходить письма, и имя отправителя, которое должно появляться у пользователя в письме.
Внешний вид
Здесь есть 4 вкладки: профиль, меню профиля, форма регистрации, форма входа. Во вкладках настраивается размер окон, иконки профиля, меню профиля в личном кабинете, необходимые кнопки.
Прочее
Исходя из названия понятно, что в этой вкладке собраны все настройки, которые логически не вписались в настройки на предыдущих вкладках. Здесь есть настройки отображения звёздочек на обязательных полях при заполнении анкеты, кэширование данных пользователя, удаление всех данных пользователей при удалении плагина и другие настройки.
В последней вкладке «Информация об установке» нет никаких настроек. Здесь дана вся информация об установке плагина. Также этот файл можно скачать.
- Далее нужно настроить внешний вид форм регистрации, профиля и входа. Это можно сделать во вкладке Ultimate Member ― Формы:
- Во вкладке «Список участников» вы можете настроить списки подписчиков по разным параметрам.
- После настройки плагина нужно вставить форму регистрации на страницу. Для этого во вкладке «Формы» справа есть блок Шорткод. Скопируйте его.
- Перейдите на страницу, где пользователь должен видеть окно регистрации. Если вы создаёте страницу для восстановления пароля, страницу профиля и т. п., создайте страницу в «Глобальных блоках» и настройте её внешний вид:
- Выберите модуль «Код» и вставьте в поле шорткод, который вы скопировали в шаге 8:
Готово, теперь на сайте есть созданная вами страница регистрации. То же самое нужно сделать с формой входа и формой профиля (начиная с шага 8):
Функция интернет-магазина в REG.Site реализована с помощью плагина WooCommerce. Чтобы в профиле были вкладки с заказами, статусом товара, историей заказов и т. д., мы рекомендуем установить платное расширение в Ultimate Member для WooCommerce. Чтобы установить его, перейдите в Ultimate Member ― Расширения. Найдите нужное расширение и нажмите Получите это дополнение. Вы перейдёте на страницу покупки дополнения.
Личный кабинет на сайте – это неотъемлемый атрибут любого пользователя, который хочет получить доступ к полной информации. Разберемся, как создать личный кабинет на сайте, и зачем он нужен.
Аккаунт при создании личного кабинета интернет-магазина дает следующие преимущества:
- Просмотр расписания событий и последних новостей портала.
- Подключение к сервисам, оформление услуг.
- Обращения в техническую поддержку.
- Вопросы в чате.
- Проверка баланса, бонусов и акций.
- Просмотр статуса и истории заказов.
Владельцам сайта личные кабинеты удобны по следующим причинам:
- Сбор данных о пользователях.
- Слежение за активностью.
- Интеграция внутренней CRM, чтобы следить за заказами, оплатой и личной информацией.
- Повышение качества обслуживания и лояльности аудитории.
- Общение с пользователями через единый чат.
Безопасность
Для того, чтобы каждый пользователь смог понять, зачем нужно проходить процесс регистрации и создание личного кабинета на сайте для полноценного интернет-магазина, нужно максимально точно расписать действия, чтобы каждый человек разобрался в том, насколько важно иметь свой собственный профиль. Также нужно убедить клиентов в полной конфиденциальности личных данных.
Существует несколько рекомендаций, которые помогут создателям сайта грамотно составить форму регистрации:
- Делайте каждое поле обязательным, поскольку необязательные все равно никто заполнять не станет.
- Автоматически логиньте каждого нового пользователя после того, как он завершит регистрацию.
- Правило для рунета: предупреждайте пользователей о том, что он указывает пароль кириллицей. Возможно, это сделано случайно, так как человек забыл переключить раскладку.
- Позаботьтесь о сохранности личной информации пользователей. Для этого помогите им создать надежный пароль. Он должен состоять не только из слов, но и цифр, а также символов.
- Строго следуйте политике конфиденциальности.
Пользовательский путь
Многие создатели сайта задаются вопросом: «Как сделать личный кабинет для интернет-магазина максимально удобным и комфортным?». В таком случае им необходимо следовать определенным правилам, чтобы сделать аккаунт привычным:
- Оставить возможность сохранять пароль. Он должен храниться в зашифрованном виде. Для этого понадобится: PBKDF2 или DCRYPT. Нужно разрешить клиентам пользоваться любыми символами и длиной пароля, ведь он все равно защищен криптографией. Многие люди не запоминают пароли, а записывать небезопасно. К тому же бумажка часто теряется. Поэтому сохраненный пароль является хорошим решением.
- Нужно разрешить авторизоваться с помощью социальных сетей. Это намного быстрее, чем при помощи адреса электронной почты или номера телефона. К тому же все данные заполняются автоматически. Пользователю не нужно ничего вписывать и подтверждать регистрацию. Да и пароль не придется придумывать и запоминать.
- Использовать 2-ступенчатую верификацию. Несмотря на то, что смс-сообщение имеет много слабых мест, этот вариант является для пользователя удобным. К тому же во много раз защитит аккаунт.
- Разделить концепт авторизации личного аккаунта и пользователя. Последнее не включает в себя электронное письмо, номер мобильного телефона или ID. Пользователь на сайте – это набор личной информации и опыт использования портала.
- Разрешить нескольким ID присоединиться к одному и тому же аккаунту. Это делается для того, чтобы пользователю была понятна работа с сайтом. Например, он может во время входа выбрать авторизацию через Гугл, не зная, что тем самым создает второй профиль.
- Разрешить удалять профиль и указанные данные.
Таким образом, создатели сайта облегчат работу пользователям сервиса в создании личного кабинета.
Как сделать личный кабинет на сайте
Для того чтобы понять, как сделать личный кабинет на каком-либо сайте для организации интернет-магазина, нужно выполнить несколько простых действий:
- Войти на главную страницу сайта. Обычно там имеется кнопка «Регистрация». Ее и нужно нажать. После этого появится окно с формой для заполнения информации.
- Чаще всего в форме нужно указать следующее: имя, фамилию, отчество, дату рождения, город проживания, адрес электронной почты или контактный номер телефона. Если сервис связан с денежными операциями, то потребуется ввод паспортных данных. Переживать за то, что информация будет разглашена, не нужно, поскольку каждый сайт придерживается политики конфиденциальности. Администраторы ценят пользователей, поэтому не используют их данные в корыстных целях и не передают третьим лицам.
- Далее необходимо будет придумать пароль. Он должен быть надежным и в то же время запоминающимся. Стоит использовать не только буквы, но и цифры, и символы. Для того, чтобы не запоминать пароль, стоит разрешить сохранить его браузеру. Тогда при каждом новом входе данные будут вводиться автоматически.
- После идет поле для повторного ввода пароля. Это необходимо, чтобы человек убедился в том, что правильно ввел шифр.
- Дальше сайт часто предлагает ознакомиться с пользовательским соглашением, в котором прописаны права и правила пользования ресурсом. Эту информацию нужно внимательно изучить, после чего внизу страницы поставить галочку. Это значит, что пользователь ознакомился с правилами и согласился им следовать.
- Стоит перепроверить введенные данные перед тем, как отправлять.
- Некоторые пользователи интересуются тем, что нужно, чтобы создать личный кабинет. Для этого используется адрес электронной почты или номер телефона. После того, как были заполнены регистрационные данные, туда отправляется код подтверждения. Его нужно будет ввести в специальную форму. Если письмо на почту вдруг не пришло, то нужно проверить папки «Все письма» и «Спам». Таким образом, можно создать личный кабинет интернет-магазина.
Статьи
В целях облегчения взаимодействия между поставщиками и оптовыми покупателями создан личный кабинет дилера. С помощью онлайн-сервиса бизнесмены могут в любой момент узнать остатки товаров на складе, а также уточнить цены, оформить заказ.
С развитием современных технологий в медицинских организациях возникает необходимость взаимодействия с пациентами онлайн. С помощью личного кабинета каждый пациент получает доступ к своей истории болезни и точным рекомендациям врача.
Личный кабинет – раздел сайта, дающий доступ клиенту к интересующим разделам, отображающий персонализированную информацию. Разберем подробнее процесс разработки ЛК.
На сегодняшний день все больше официальных сайтов организаций предлагают пользователям завести личный аккаунт. Только после этого человек получает полный функционал портала.
Личный кабинет партнера позволяет клиентам контролировать все сферы своего бизнеса в одном месте.
Личный кабинет поставщика
Предлагаем разработку личного кабинета для поставщиков вашей компании. Внедрим систему управления партиями, поставками и описаниями товаров.
Личный кабинет для записи
Предлагаем создание личного кабинета для записи на мероприятия, назначения визитов к специалистам, продажи билетов на события.
Разработка личных кабинетов
Заказать разработку и внедрение личных кабинетов на сайт. Предлагаем комплекс услуг по автоматизации B2B-закупок и поставок, документооборота, торгов, заказов, логистики. Предоставляем удобные сервисы для вашей коммерческой службы, склада, логистики.
Cetera.Spaces — конструктор личных кабинетов
Cetera.Spaces — конструктор для быстрого развертывания и кастомизации личных кабинетов в интернете. Автоматизирует взаимоотношения с клиентами, партнерами, дилерами, предоставляет непосредственный доступ пользователей к информации, организовывает документооборот, сбор заявок и заказов. Позволяет реализовывать как информационные, так и e-Commerce проекты.
20 апреля 2021
Поделиться в соц. сетях:
Разработка личного кабинета пользователя для сайта, в котором он сможет взаимодействовать с компанией через свой интерфейс. Зачем нужен личный кабинет клиентам. Как создать свой клиентский сервис
В статье разберем вопрос создания личного кабинета для клиентов, партнеров или сотрудников, а также покажем одно из наших решений этой задачи.
Разработка личного кабинета пользователя для сайта — это будущий тренд в развитии CRM систем.
Если вы планируете создавать личные кабинеты для своих клиентов, эта статья поможет лучше понять что может быть в личном кабинете, какие преимущества это дает для бизнеса, а также посмотреть наше демо решение — сервис личных кабинетов для клиентов и сотрудников Falcon Service.
Вероятно, у вас уже есть пул постоянных клиентов, и вы задумываетесь об оптимизации обслуживания клиентов. Система личных кабинетов для клиентов в вашем бизнесе поможет решить эту задачу.
В этой статье мы рассмотрим, что такое клиентский сервис, что он дает бизнесу, какие задачи решает, из чего состоит. Также мы покажем наш вариант реализации подобного клиентского сервиса на примере Falcon Resort — кабинет туриста/гостя на курорте/отеле.
После прочтения статьи у вас будет полное понимание по процессу разработки клиентского сервиса в виде сайта.
Смотрите статью Как создать систему личных кабинетов для сотрудников в случае, если вы планируете делать сервис для внутренних нужд, а не клиентов.
Что такое клиентский сервис на сайте. Система личного кабинета клиента
Ваш бизнес обслуживает клиентов. Продажи могут проводиться по телефону или при личной встрече, счета,акты передаваться вручную или через почту.
Выбор и заказ услуг клиентом проводится через некоего менеджера по продажам.
Для подобных задач можно сделать личный кабинет клиента в вашей экосистеме.
Представьте, клиент заходит в свой кабинет, видит персональные цены в каталоге, имеет некий дисконт, видит историю своих заказов и может скачать любые документы по ним. Также он получает различные важные уведомления по своим заказам, ему «падают» в кабинет различные спец предложения, сгенерированные специально под него.
Звучит неплохо, не правда ли? Т.е. по сути, это некий свой «угол» клиента в вашем «бизнес-доме».
Личный кабинет клиента — его «угол» в вашем бизнесе
Зачем нужна система личных кабинетов для сайта бизнесу?
- Это повышает лояльность клиента. Если у меня есть 4000 баллов в вашем бизнесе, пойду ли я к конкурентам (при прочих равных)?
- Это уменьшает издержки на обслуживание клиента.
- Уменьшается человеческий фактор. Клиент сам выбирает и заказывает, а затем сам отслеживает заказ.
- Не нужно держать большой колл-центр для разъяснения банальных вопросов покупателей. Теперь они самостоятельно могут смотреть все в личном кабинете.
- Это дает постоянный контакт с покупателем. Email письма компаний отправляются в спам. Телемаркетинг только раздражает потребителя. Через личный кабинет вы неявно продвигаете дополнительные услуги и предложения.
- Находясь на вашей «территории» клиент более благосклонно будет воспринимать любые предложения от вас.
- Уменьшит риски воровства и угона клиента. Если все проходит через систему, то гораздо сложнее недобросовестному сотруднику договориться с клиентом о работе в обход фирмы.
- Также клиентский сервис позволяет частично решить потерю клиента, которого пытается переманить ваш бывший продавец. Клиент теперь не завязан на личность вашего продавца, он взаимодействует с компанией через личный кабинет.
Для бизнеса клиентский сервис в виде кабинета делает клиента ближе и доступнее
Зачем нужна система личных кабинетов для клиентов?
- Это позволяет экономить. Персональные акции, накопительные скидки.
- Это дает информацию. Человек может получить оперативно всю необходимую информацию по вашим услугам и объектам без лишних разговоров с оператором (например, если для банка — это информация о ближайших банкоматах).
- Это упрощает заказы. Клиент минимизирует издержки на своем взаимодействии с вами. Чем проще покупать — тем ниже шансы, что он сойдет с дистанции на пути заказа у вас.
Из чего состоит клиентский кабинет
Все вертится вокруг заказов. Именно за этим пришел потребитель. Практически каждая часть клиентского сервиса так или иначе завязана на механизм заказов.
Клиент выбирает необходимые услуги и продукцию и создает заказ. Это может сопровождаться оплатой онлайн заказа. Также может быть интеграция с другими системами (например, калькулятор транспортных систем).
Клиент может посмотреть, что он раньше заказывал. Также в деталях изучить состояние по каждому заказу, может связаться с менеджером по заказу.
Каждый заказ — это новые баллы в копилке клиента. Баллы можно обменять на продукцию (а это увеличение среднего чека и повторных покупок). Баллы могут давать некий статус в системе, что увеличивает лояльность клиента.
Если вы действительно можете делать хорошие спец предложения, то для клиента это будет еще одним поводом пользоваться личным кабинетом. При этом вы можете создавать некие клубы (как Ikea Family), для которых будет действовать специальные скидки. Это глубже втягивает клиента в вашу систему. Клубы могут сегментировать вашу аудиторию (молодые мамы, семейные, пенсионеры и т.д.) и направлять на них специальный контент и предложения.
Дорога к обеду ложка. Важно вовремя уведомлять человека о важных для него событиях. «Ваш заказ готов», «Заказ доставлен по такому-то адресу», «Появилось свободное место к мастеру» и т.д. Уведомления могут быть пуш или отправляться в мессенджер. Более старомодный вариант — на почту или СМС. В вашей системе реализованы пуш-уведомления, Телеграм, email и СМС.
Клиент должен по максимуму знать о вашем бизнесе и его услугах. Наверняка, у вас бывало так, что вы приезжаете на курорт, и только на 6й день узнаете, что здесь оказывается чуть подальше есть бесплатный теннисный корт. Личный кабинет решал бы эту проблему. Человек по приезду мог бы сразу посмотреть всю информацию: что предлагает отель, что есть поблизости, что сколько стоит.
Очень важна оперативная связь и контакт с клиентом
Для человека важно иметь возможность быстро задать вопрос, получить информацию и двигаться дальше.
Телефон для обратной связи — плохой вариант! Почему? Нужна оперативность ответа. Если клиенту не отвечают хотя бы 30 секунд, то это уже негатив.
Если же на сайте будет возможность написать в чат менеджеру, то клиент напишет и пойдет по своим делам. Ожидание ответа по чату у нас инстинктивно может быть больше. Если ответите сразу — очень хорошо. Если в течение часа — тоже неплохо!
Для клиента очень важно, чтобы вы были у него «под рукой». Есть вопрос — сразу задал вам через свой кабинет. Кабинет также поможет вам сразу получить всю полноту информации о клиенте: кто он, что он заказывал, на сколько он заказывал, в каких клубах состоит, какая у него скидка.
Если он просто звонит вам на телефон, то вам придется по CRM по номеру выискивать очень оперативно информацию и обрабатывать ее, параллельно общаясь с клиентом. Если менеджер от природы не очень быстрый, то для клиента создается впечатление тугодума (он же не знает, что менеджер параллельно ищет о нем информацию). Если это чат, то это проблема решается. Вы можете начать общение по чату, и пока клиент пишет, вы можете спокойно изучать информацию по нему и прорабатывать, что можно предложить.
Создание сервиса клиента на примере курорта. Наше демо
Представьте ситуацию, вы приезжаете на курорт. На рецепции говорят на английском, а у вас с этим не очень. Вам что-то говорят на ломаном русском и поясняют, что дальше делать. Вы понимаете 20% из сказанного, что-то заполняете, находясь в состоянии глубокого транса.
Далее вас ведут в ваш номер, и только тут вы немного приходите в себя и начинаете осматриваться. Вам дают некий буклет, где красивые картинки, практически нет интересующей вас информации. Задать вопрос тоже проблематично, т.к. есть трудность перевода на английский язык и еще большая трудность распознавания, что вам ответили.
А теперь отмотаем назад.
Вы приезжаете в отель. Вы не знаете языка. Вам дают бумажку на вашем языке, где написаны адрес сайта, ваш логин, пароль (и данные wifi). Вы с мобильного заходите, выбираете язык и видите приветствие на своем языке и общую вводную информацию по шагам.
Допустим вы прошли регистрацию на рецепции. В номере вы можете подробнее изучить, что есть в отеле, какие тут распорядки, когда будет обед и танцы.
Вы можете посмотреть какие есть экскурсии и мероприятия, а также забронировать участие в них.
Хочется заказать в номер шампанское? Идем в раздел услуги и смотрим что есть:
Более того вы можете узнать, что входит в бесплатное обслуживание, а за что надо будет доплатить (лучше знать это заранее, чтобы потом не было конфуза). Есть свободная минутка, чтобы посмотреть информацию об отеле и что находится вокруг? Конечно есть. Телефон у человека с собой практически всегда на курорте (у некоторых даже в море).
Вы видите какие есть активности есть на курорте (обсуждения, переписки). Также вы можете напрямую пообщаться с кем-то из посетителей курорта.
Также вы можете задать свой вопрос (на своем языке или англ языке). Самое важное, вас здесь никто не торопит. Вы спокойно можете сформулировать, что вам нужно, а также обработать ответ оператора.
Если вы уже не первый раз в этом отеле, то вы можете посмотреть свои предыдущие пребывания, что вы заказывали и т.д.
Посмотреть демо кабинета посетителя курорта можно здесь resort.web-automation.ru
Что входит в решение личного кабинета
Ключевые части решения Falcon Resort, которое мы предлагаем:
- Сама коробка Falcon Space. Falcon Space — это скорее платформа для создания бизнес-приложений, а не конкретное решение под бизнес задачу.
- Решение Falcon Resort. Это надстройка базовых функций с возможностью развивать под свои нужды. Решение можно дальше развивать и адаптировать под себя.
- Настроенный хостинг (или сервер VPS), домен, SSL. Мы можем настроить приложение на вашем сервере Windows Server, либо разместить на хостинге Re.ru (тариф win 0 — этого более чем достаточно).
Относительно быстро можно запустить базовую часть системы, а затем постепенно ее развивать и адаптировать под свои нужды.
Решение можно менять и адаптировать под себя
Точки расширения для личных кабинетов
Любое коробочное решение можно и нужно доводить под себя. Поэтому мы внедряем базовое решение и через проектную работу дорабатываем решение до нужного состояния.
Решение содержит несколько точек расширения:
- можно менять внешний вид страниц, настраивать стилизацию проекта (фирменные цвета, логотип, шрифты).
- можно менять бизнес-логику существующих страниц (например, изменить процесс адаптации туриста в системе)
- можно создавать новые объекты учета (разделять типы туристов, создавать клубы по интересам, добавлять опросы, фотографии и т.д.)
- можно интегрироваться с внешними системами через универсальный API (например, с системами отзывов о пребывании на курорте).
Сколько стоит создание онлайн сервиса? Установить личный кабинет на сайт
Базовая стоимость решения Falcon Resort указана на странице решение для клиентского сервиса отеля или курорта
Очень вероятно, что вам потребуется кастомизация под себя и создание новых модулей для вашей специфики. В этом случае необходимо делать проект по доводке решения под ваши реалии.
Что можно сделать чтобы получить первичную оценку подобного проекта?
- Посмотреть демо
- Определить, что бы вы хотели доработать сверх того, что есть в решении
- Определиться с дополнительными интеграциями с внешними системами (1С или др.)
Как выглядит процесс работы над созданием личных кабинетов?
Процесс работы над проектом описан здесь Работа над веб-проектом
Что еще необходимо учесть в своем проекте
- Дизайн.
Главную страницу можно сделать в виде лендинга, на котором будет приветствие посетителей вашего курорта. В целом, наша система уже по умолчанию имеет хороший лаконичный дизайн. Можно настраивать его под себя — цвета, размеры, шрифт и т.д. Система имеет полностью адаптивный интерфейс, что позволяет работать в личном кабинете с телефона или планшета.
- Объем.
Чем меньше первая версия для внедрения, тем меньше бюджет, быстрее будет реализован проект, и тем оперативнее вы получите обратную связь от потребителя. Старайтесь убрать все второстепенное из первой версии своего продукта. Далее все это можно будет развивать на основе обратной связи от пользователей.
Работа в личном кабинете через телефон
99% пользователей будут использовать смартфон.
Если говорить о нативных мобильных приложениях (те, что устанавливаются через AppStore и Google Play) — мы их не делаем. Наша платформа полностью адаптивна под мобильные устройства. Также Falcon Space поддерживает технологию PWA. Это практически стирает разницу между мобильным приложением и веб-сайтом: можно создать иконку на экране телефона и запускать его как приложение, есть функции геолокации, доступ к камере и некоторые другие функции.
Преимущества PWA
- Это значительно дешевле, чем делать по сути три приложения: веб сайт, IOS и Android. Бюджет сокращается в разы.
- Быстрее можно вносить изменения. В нативном приложении для обновления необходимо, чтобы пользователь переустановил приложение на своем телефоне. На PWA изменения будут мгновенно применяться у всех пользователей, т.к. данные запрашиваются с сервера.
- Нет ненужной прокладки в виде AppStore. Долгая модерация, возможность отказа в публикации. PWA проще себе установить на телефон.
- Просто клик на кнопке (на IOS чуть сложнее — Share/Add to my homescreen).
- Сложно заставить пользователя себе что-то ставить на телефон по соображениям безопасности, занимаемого места на телефоне.
То, что вашему туристу не нужно ставить мобильное приложение на телефон — скорее плюс, чем минус, т.к. никому не хочется засорять свой телефон временным приложением (которое он планирует использовать только две недели).
Смотреть демо решения по личным кабинетам для клиента
Пройдите, пожалуйста, по ссылке демо для ознакомления с нашим решением клиентского сервиса для курорта resort.web-automation.ru
Если у вас возникли вопросы, пожалуйста, напишите нам на Whatsapp
Если вы интересуетесь темой создания CRM, посмотрите статью то, как мы создавали свою CRM.
Система личных кабинетов для клиентов к существующему сайту
Если у вас уже есть сайт, вы можете создать кабинет клиента на поддомене вашего домена.
Т.е. ваш основной сайт будет на домене (например, site.ru), а личный кабинет клиента и вся бизнес-логика по обслуживанию клиентов может обрабатываться в приложении на базе нашей платформы Falcon Space на поддомене (например, cabinet.site.ru).
При этом можно организовать плотную интеграцию с вашей существующей системой в плане передачи информации из базы данных вашего сайта.
Создать личный кабинет клиента. Стоимость разработки личного кабинета
Цена разработки личного кабинета для сотрудников компании или клиентов будет сильно зависеть от функциональности кабинета, т.к. какие возможности должен предоставлять личный кабинет для вашего клиента.
Предлагаем такой путь: создание концепции проекта -> оценка бюджета в виде КП -> поэтапная работа над проектом с постепенным наращиванием возможностей в кабинете.
Создавайте концепт, присылайте нам, и мы сделаем первичную оценку вашего проекта.
Видео по деморешению клиентского сервиса Resort