Тронутый profile user php. Создание профиля зарегистрированного пользователя. Изменение порта MySQL в вашем скрипте
Пользователей WordPress я уже писал (смотрим по ссылке). Но как и всякий инструмент (кроме кувалды) Adminimize — не идеален и всё полностью он убрать не может, хотя это благодаря только программистам Ворпресса.
Данный пост родился спонтанно, можете говорить спасибо гостю Blow. Суть его вопроса заключалась в следующем (скорее серии вопросов):
1. Как скрыть «Выбор цветовой схемы» для пользователя?
2. Как скрыть «Горячие клавиши» и «Визуальный редактор» в панели WordPress?
Перейду сразу к делу. С помощью такого способа, можно скрывать любые элементы для пользователя в его профиле и на других страницах также. Способ самый простой — правка файла отображения!
Для «Профиля» — это файл user-edit.php , который лежит в папке wp-admin. Править его нужно очень осторожно, иначе можно хорошо «расплатиться» за свои эксперименты.
Решение (унифицированное):
1. Скачиваем файл к себе на ПК и делаем его копию (бережёного ….)
2. Ищем Html-код, который отвечает за вывод нужной нам информации.
3. Осторожно комментируем его и «заливаем» обратно с заменой.
Теперь практика (правка User-edit.php):
Честно, не помню какая версия у меня WP на подопытном сайте, но точно не ниже 2.8.2.
Сначало, я скачал файл на ПК и с помощью «Просмотрщика кода Chrome» посмотрел сам код, а в Notepad++ нашел нужный код.
(черточек по две с каждой стороны «-»)
1. Скрываем «Визуальный редактор»
Меняем на код:
—>
ps: не копируйте данный код, а меняйте у себя — велика вероятность ошибок!!!
2. Скрываем «Выбор цветовой схемы».
Вы, надеюсь, заметили в чем разница кодов — всего добавили 7 символов. Для скрытия этого пункта ищем if (count($_wp_admin_css_colors) > 1) и комментируем под строкой весь код между до
3. Скрываем «Горячие клавиши».
Этот урок хотелось бы посвятить созданию личного профиля для зарегистрированных пользователей (дополнение к уроку Создание регистрации пользователей на сайте). Теперь пользователи смогут добавить свой аватар, изменить имя и фамилию, добавить место проживания и день рождения. Для этого в таблицу users добавим несколько полей:
Теперь создадим страницу профиля profile.php
и добавим на странице index.php
ссылку на нее
Echo "
Мой профиль";
Теперь код самой страницы profile.php
Профиль
"; echo "".$array["name_user"]." ".$array["lastname"]."
"; switch ($array["birthdate_month"]){//Превращаем номер месяца в название case "1" : $month = "Января"; break; case "2" : $month = "Февраля"; break; case "3" : $month = "Марта"; break; case "4" : $month = "Апреля"; break; case "5" : $month = "Мая"; break; case "6" : $month = "Июня"; break; case "7" : $month = "Июля"; break; case "8" : $month = "Августа"; break; case "9" : $month = "Сентября"; break; case "10" : $month = "Октября"; break; case "11" : $month = "Ноября"; break; case "12" : $month = "Декабря"; break; } echo "Дата регистрации: ".$array["reg_date"]."
"; echo "Пол: ".$array["sex"]."
"; echo "День рождения: ".$array["birthdate_day"]." ".$month." ".$array["birthdate_year"]."
"; echo "Страна: ".$array["country"]."
"; echo "Город: ".$array["city"]."
"; if($_GET["id"] == $id_user){//Редактировать профиль может только хозяин echo "Редактировать профиль"; } }else{ print <<
РегистрацияВосстановление пароля HERE; } ?>
Естественно перейдя на эту страницу, мы увидим стандартную аватарку noAvatar.jpg и возможно имя и фамилию, если пользователь при регистрации указал их, остальные пункты будут пусты. В самом конце этой страницы есть ссылка на страницу редактирование профиля edit.php . Код этой страницы очень легок и состоит из форм для ввода данных. Из-за довольно большого объема приводить здесь полностью я его не буду, а приведу лишь часть, полностью взять его можно будет в исходных файлах.
Все остальные формы аналогичны и будут ссылаться на один обработчик save_edit.php , который и будет вносить изменения в базу данных. Он также имеет достаточно большой код, и здесь я его тоже приводить не буду, а лишь немного расскажу, что в нем происходит (полностью код вы также с можете в исходных файлах). Первым делом мы создаем аватарку, если пользователь ее загрузил конечно, в противном случае оставляем стандартную. Если это так, то первым делом мы загружаем в папку avatars (кстати, создайте эту папку и поставьте ей права на запись 755) предварительно проверив с разрешенными расширениями. Затем создается новое изображение форматом зависящее от выбранного режима: $rezim = 1 создается квадратная картинка, $rezim = 2 картинка пропорциональная исходной. Также надо задать ширину создаваемого изображения $w и качество $quality . Созданное изображение мы сохраняем в формате jpg с помощью функции imagejpeg и генерируем для него случайное имя. Теперь нужно удалить старое изображение и обновить в базе данных на новое. На этом с изображениями все.
Все остальные пункты данного файла предназначены для обновления личных данных о пользователя и представляют собой простые запросы к базе данных для обновления полей. Предварительно перед обновлением проверяется существование входящих переменных и их безопасность с помощью stripslashes
и htmlspecialchars
. Если обновление происходит успешно, то мы сразу перенаправляем пользователя на страницу профиля.
Теперь сделаем так чтобы вошедший пользователь смог видеть всех остальных зарегистрированных пользователей. Для этого создадим страницу user.php
, которая в цикле будет выводить всех пользователей.
Общие вопросы
Q: Профайлер показывает активность сервера, но не показывает всех запросов и сессий.
A: Не забудьте нажать кнопку Старт для начала захвата сессий.
Q: Удалось подключится к MySQL, но Сессии не показываются.
A: Neor Profile SQL работает как прокси сервер. Это значит что могут быть показаны только сессии проходящие через профайлер. Ваше приложение (или сайт) должен быть соединяться с профайлером как с обычным MySQL сервером. Профайлер использует только TCP входящие соединения. И тогда вы увидите результат в закладке Сессии.
Q: Почему в некоторых сессиях запросы с нулевым временем?
A: Запросы с нулевым временем выполняются крайне быстро без задержки. Такие запросы могли быть закешированы СУБД или выполняются очень быстро, например если у вас мощный сервер и хорошо оптимизированные таблицы.
Q: Что обозначает % во времени и длительности в сессии?
A: "Время %" - это доля от общего времени выполнения сессии. "Длительность %" - это доля от самого длительного запроса в сессии (соотношение к самому долгому запросу).
Q: Я использую JetProfiler и он в настройке проще.
A: JetProfiler получает информацию от MySQL сервера через команду "show status" и не может получить всю информацию на сервере, так как работает дискретно. Neor Profile SQL показывает абсолютно все запросы к базе данных. И это требует настройки вашего приложения для направления потока запросов через профайлер.
Q: Кнопка Профилировать в закладке SQL не показывает результат
A: Функция профилирования в SQL редакторе работает через команду SHOW PROFILES, которая была добавлена в MySQL Community Server начиная с версии 5.0.37. Проверьте свою версию сервера MySQL.
Q: Можно ли сделать профайлер консольным?
A: Для консоли используйте связку логов СУБД и tail, или специальные консольные инструменты, которых довольно много. Neor Profile SQL - это приложение для оконной ОС, которое предназначено для размещения на системе у разработчика.
Q: Профайлер работает, но почему то не отображает главный график статистики?
A: Главный график использует команду SHOW STATUS для основного сервера. Возможно у вас нет прав для запуска данной команды на сервере. Убедитесь в доступности прав на эту команду.
Q: Как запустить установщик в тихом режиме?
A: sqlprofiler-4.1.1.exe /S /D:C:Program Files (x86)Neor Profile SQL
Windows
Q: Как проверить соединение Профайлера?
A:
Используйте консольный клиент MySQL для соединения с профайлером. Если вы увидите свою сессию в закладке Сессии, это значит что все настроено верно.
Например:
Потом выполните простую SQL команду:
show tables;
И посмотрите что получилось в закладке Сессии в профайлере.
Linux
Q: Не могу соединиться через localhost.
A:
Linux пытается ассоциировать localhost с сокетным соединением, но Neor Profile SQL работает только с TCP соединениями.
Установите в профайлере серверный адрес 127.0.0.1 вместо localhost. Тоже самое сделаете в настройках своего приложения.
Например:
mysql --host=127.0.0.1 --user=LOGIN --password=PASSWORD --port=4040
Q: Не могу соединиться с 127.0.0.1.
A: Проверьте тип соединения в вашем приложении. Можно также воспользоваться типом соединения local socket, в котором не требуется вводить значение порта.
Q: Как установить Neor Profile SQL под OpenSUSE?
A: На сегодняшний момент мы поддерживаем только пакет DEB, который работает под Ubuntu, Debian и совместимых Linux дистрибутивах. Вы можете сделать RPM файл своими силами и помочь тем самым.
Q: Почему я не могу перехватить запросы Sysbench?
A:
Профайлер использует только TCP входящие соединения. Запускайте Sysbench с параметрами хоста и порта:
sysbench --test=oltp --mysql-host=127.0.0.1 --mysql-port=4040
--mysql-user=root --mysql-password=password prepare
Mac OS X
Q: Профайлер не может соединиться к серверу MAMP MySQL.
A: Проблема сетевого соединения в конфигурации MySQL:
- МАМР
Бесплатная версия – скопируйте стандартный MySQL конфиг в папку
/Applications/MAMP/conf/my.cnf
Pro версия – откройте меню FILE – EDIT – MySQL template - в конфигурации my.cnf удалите строку skip-networking
- в Настройках профайлера измените адрес хоста БД с localhost на 127.0.0.1
Изменение порта MySQL в вашем скрипте
В Neor Profile SQL порт по умолчанию 4040. Для сбора SQL запросов вы должны изменить в вашем скрипте стандартные значения подключения к MySQL хоста и порта 3306. Ниже приведены примеры как это сделать.
string connStr = "server=127.0.0.1;port=4040;
database=YOUR_DATABASE;user=YOUR_USER;password=YOUR_PASSWORD;";
http://dev.mysql.com/doc/refman/5.1/en/connector-net-tutorials-intro.html
Изменение порта в популярных CMS
Wordpress
File: wp-config.php
Code: define("DB_HOST", "localhost:4040
");
PrestaShop
File: config/settings.inc.php
Code: define("_DB_SERVER_", "localhost:4040
");
OpenCart
File: config.php
Code: define("DB_HOSTNAME", "localhost:4040
");