Премахваме визуалния редактор, избора на цветова схема и други подробности в административната област на WordPress. Премахваме визуалния редактор, избора на цветова схема и други детайли в административния панел на WordPress Промяна на кода

Общи въпроси

Q:Профайлърът показва активността на сървъра, но не показва всички заявки и сесии.

A:Не забравяйте да щракнете върху бутона Старт, за да започнете да записвате сесии.

Q:Беше възможно да се свържете с MySQL, но сесиите не се показват.

A: Neor Profile SQL работи като прокси сървър. Това означава, че могат да се показват само сесии, преминаващи през профилиращия инструмент. Вашето приложение (или сайт) трябва да може да се свързва с профилиращия като нормален MySQL сървър. Профайлърът използва само TCP входящи връзки. И тогава ще видите резултата в раздела Сесии.

Q:Защо заявките са с нулево време в някои сесии?

A:Заявките с нулево време са изключително бързи, без забавяне. Такива заявки могат да бъдат кеширани от СУБД или изпълнени много бързо, например, ако имате мощен сървър и добре оптимизирани таблици.

Q:Какво означава % във времето и продължителността на една сесия?

A:„Време %“ е процент от общото време за изпълнение на сесията. „Продължителност %“ е част от най-дългата заявка в сесията (съотношение към най-дългата заявка).

Q:Използвам JetProfiler и е по-лесен за настройка.

A: JetProfiler получава информация от MySQL сървъричрез командата "покажи статус" и не може да получи цялата информация на сървъра, тъй като работи дискретно. Neor Profile SQL показва абсолютно всички заявки към база данни. И това изисква конфигуриране на вашето приложение за маршрутизиране на потока от заявки през профилиращия инструмент.

Q:Бутонът за профил в раздела SQL не показва резултат

A:Функцията за профилиране в SQL редактора работи чрез командата SHOW PROFILES, която е добавена към MySQL Community Server от версия 5.0.37. Проверете вашата версия на MySQL сървъра.

Q:Възможно ли е да се направи конзолата за профайлър?

A:За конзолата използвайте куп СУБД и опашни регистрационни файлове или специални конзолни инструменти, от които има доста. Neor Profile SQL е приложение за Windows OS, което е предназначено да бъде хоствано в системата на разработчика.

Q:Профайлърът работи, но по някаква причина не показва основната графика на статистиката?

A:Основната графика използва командата SHOW STATUS за главния сървър. Може да нямате разрешение да изпълните тази команда на сървъра. Уверете се, че имате разрешения за тази команда.

Q:Как да стартирам инсталатора в безшумен режим?

A: sqlprofiler-4.1.1.exe /S /D:C:Програмни файлове (x86)Neor профил SQL

Windows

Q:Как да проверя връзката на профайлъра?

A:Използвайте MySQL конзолния клиент, за да се свържете с профилиращия. Ако видите вашата сесия в раздела Сесии, това означава, че всичко е настроено правилно.
Например:
Тогава направете прост SQLкоманда:
показване на маси;
И вижте какво се случи в раздела Сесии в профила.

linux

Q:Не може да се свърже чрез localhost.

A: Linux се опитва да свърже localhost със сокет връзка, но Neor Profile SQL работи само с TCP връзки. Задайте адреса на сървъра в програмата за профилиране на 127.0.0.1 вместо localhost. Направете същото в настройките на вашето приложение.
Например:
mysql --host=127.0.0.1 --user=ВХОД --password=ПАРОЛА --port=4040

Q:Не може да се свърже с 127.0.0.1.

A:Проверете типа връзка във вашето приложение. Можете също така да използвате типа връзка с локален сокет, който не изисква стойност на порт.

Q:Как да инсталирам Neor Profile SQL под OpenSUSE?

A:В момента поддържаме само пакета DEB, който работи под Ubuntu, Debian и съвместими Linux дистрибуции. Можете сами да направите RPM файл и да помогнете.

Q:Защо не мога да прихвана Sysbench заявки?

A:Профайлърът използва само TCP входящи връзки. Стартирайте Sysbench с параметри на хост и порт:
sysbench --test=oltp --mysql-хост=127.0.0.1 --mysql-порт=4040--mysql-user=root --mysql-password=подготвяне на парола

MacOS X

Q:Профайлърът не може да се свърже с MAMP MySQL сървъра.

A:проблем мрежова връзкав конфигурацията на MySQL:

  1. MAMR
    Безплатна версия– копирайте стандартната конфигурация на MySQL в папката
    /Applications/MAMP/conf/my.cnf
    Pro версия - отворете менюто ФАЙЛ - РЕДАКТИРАНЕ - MySQL шаблон
  2. в my.cnf config премахнете реда за прескачане на мрежата
  3. в настройките на профилиращия променете адреса на DB хост от localhost на 127.0.0.1

Промяна на MySQL порта във вашия скрипт

В Neor Profile SQL портът по подразбиране е 4040. За да събирате SQL заявки, трябва да промените стойностите на MySQL връзката по подразбиране на хоста и порта 3306 във вашия скрипт. По-долу са дадени примери как да направите това.

низ connStr = " сървър=127.0.0.1;порт=4040;база данни=ВАШАТА_БАЗА_ДАННИ;потребител=ВАШИЯ_ПОТРЕБИТЕЛ;парола=ВАШАТА_ПАРОЛА;";
http://dev.mysql.com/doc/refman/5.1/en/connector-net-tutorials-intro.html


Промяна на порт в популярната CMS

Wordpress

Файл: wp-config.php
Код: define("DB_HOST", "localhost :4040 ");

PrestaShop

Файл: config/settings.inc.php
Код: define("_DB_SERVER_", "localhost :4040 ");

opencart

Файл: config.php
Код: define("DB_HOSTNAME", "localhost :4040 ");

Вече написах потребители на WordPress (вижте връзката). Но като всеки инструмент (с изключение на ковашкия чук), Adminimize не е перфектен и не може да премахне всичко напълно, въпреки че това е само благодарение на програмистите на Vorpress.

Тази публикация се роди спонтанно, можете да благодарите на госта Blow. Същността на неговия въпрос беше следната (по-скоро поредица от въпроси):

1. Как да скриете „Избор цветова схема" за потребителя?

2. Как да скриете "Горещи клавиши" и " визуален редактор» в таблото за управление на WordPress?

Ще мина направо на въпроса. С този метод можете да скриете всякакви елементи за потребителя в неговия профил и на други страници. Най-лесният начин е да редактирате файла за показване!

За "Профил" - това е файл user-edit.php, който е в папката wp-администратор.Трябва да го редактирате много внимателно, в противен случай можете да платите добре за вашите експерименти.

Решение (унифицирано):

1. Изтеглете файла на вашия компютър и го копирайте (внимателно ....)

2. Търсим Html кода, който отговаря за извеждането на информацията, от която се нуждаем.

3. Внимателно го коментирайте и го „качете“ обратно със замяна.

Сега практикувайте (редактиране на User-edit.php):

Честно казано, не помня каква версия на WP имам на експерименталния сайт, но определено не по-ниска от 2.8.2.

Първо изтеглих файла на компютър и погледнах самия код с помощта на Chrome Code Viewer и намерих кода, който ми трябваше в Notepad++.

(тире две от всяка страна "-")

1. Скрийте „Визуалния редактор“

Промяна на код:

—>

ps: не копирай даден код, и промяна у дома - вероятността от грешки е висока !!!

2. Скрийте "Избор на цветова схема".

Надяваме се, че сте забелязали разликата между кодовете - добавени са общо 7 знака. За да скрием този елемент, ние търсим if (count($_wp_admin_css_colors) > 1)и коментирайте под реда целия код между преди

3. Скрийте "Горещите клавиши".

Във втория урок ще напишем още два класа и ще завършим напълно вътрешната част на скрипта.

Планирайте

Целта на тази поредица от уроци е да създаде просто приложение, което позволява на потребителите да се регистрират, влизат, излизат и променят настройките. Класът, който ще съдържа цялата информация за потребителя, ще се нарича User и ще бъде дефиниран във файла User.class.php. Класът, който ще отговаря за влизането/излизането ще се нарича UserTools (UserTools.class.php).

Малко за именуването на класове

Правилният тон е файловете на класа да се именуват със същото име като самия клас. По този начин е лесно да се определи целта на всеки файл в папката на класа.

Също така е обичайно да се добавят .class или .inc в края на името на файла на класа. Така ние ясно дефинираме целта на файла и можем да използваме .htaccess, за да ограничим достъпа до тези файлове.

Потребителски клас (User.class.php)

Този клас ще дефинира всеки потребител. Тъй като това приложение расте, дефиницията на „Потребител“ може да се промени значително. За щастие, ООП програмирането улеснява добавянето на допълнителни потребителски атрибути.

Конструктор

В този клас ще използваме конструктора – това е функция, която се извиква автоматично, когато бъде създадено следващото копие на класа. Това ни позволява автоматично да публикуваме някои атрибути след създаването на проекта. В този клас конструкторът ще приеме един аргумент: асоциативен масив, който съдържа един ред от таблицата на потребителите в нашата база данни.

require_once "db.class.php"; клас Потребител ( public $id; public $username; public $hashedPassword; public $email;
публичен $joinDate;
//Конструкторът се извиква при създаване на нов обект//Взема асоциативен масив с реда на DB като аргумент. функция __construct($data) ( $this->id = (isset($data["id"])) ? $data["id"] : ""; $this->username = (isset($data[" потребителско име"])) ? $data["потребителско име"] : ""; $this->hashedPassword = (isset($data["password"])) ? $data["password"] : ""; $this- >email = (isset($data["email"])) ? $data["email"] : ""; $this->joinDate = (isset($data["join_date"])) ? $data[" дата на присъединяване"] : ""; )
публична функция save($isNewUser = false) ( //създайте нов обект на база данни. $db = new DB(); //ако потребителят вече е регистриран и ние //просто актуализираме неговата информация. if(!$isNewUser ) ( //задаване на масива от данни $data = array("username" => ""$this->username"", "password" => ""$this->hashedPassword"",
"имейл" => ""$този->имейл"");
//актуализиране на реда в базата данни $db->update($data, "users", "id = ".$this->id); )else ( //ако потребителят се регистрира за първи път. $data = array("username" => ""$this->username"", "password" => ""$this->hashedPassword"" , "email" => ""$this->email"", "join_date" => """.date("Y-m-d H:i:s",time())."""); $this-> id = $db->insert($data, "users"); $this->joinDate = time(); ) return true; ) ) ?>

Обяснение

Първата част от кода, извън зоната на класа, осигурява връзката на класа с базата данни (тъй като има функция в класа User, която изисква този клас).

Вместо „защитени“ променливи на класа (използвани в Урок 1), ние ги дефинираме като „публични“. Това означава, че всеки код извън класа има достъп до тези променливи, когато работи с обекта User.

Конструкторът взема масив, в който колоните в таблицата са ключовете. Ние дефинираме променливата на класа, използвайки $this->variablename. В примера на този клас първо проверяваме дали стойността на даден ключ съществува. Ако е така, тогава задаваме променливата на класа на тази стойност. В противен случай празен низ. Кодът използва кратката форма на обозначението на оборота, ако:

$стойност = (3 == 4)? "А" : "Б";

В този пример проверяваме дали 3 е равно на четири! Ако да - тогава $value = "A", не - $value = "B". В нашия пример резултатът е $value = “B”.

Запазване на информация за потребителите в базата данни

Функцията за запазване се използва за извършване на промени в таблицата на базата данни с текущите стойности в потребителския обект. Тази функция използва DB класа, който създадохме в първия урок. С помощта на променливи на класа се задава масивът $data. Ако това е първият път, когато потребителят се съхранява, тогава $isNewUser се предава като $true (по подразбиране е false). Ако $isNewUser = $true, тогава се извиква функцията insert() на класа DB. В противен случай се извиква функцията update(). И в двата случая информацията от потребителския обект ще се съхранява в базата данни.

Клас UserTools.class.php

Този клас ще съдържа функции, свързани с потребителите: login(), logout(), checkUsernameExists() и get(). Но с разширяването на това приложение можете да добавите много повече.

//UserTools.class.php require_once "User.class.php"; require_once "db.class.php";
клас UserTools(
//Влезте на потребителя. Първо проверява дали //потребителското име и паролата съвпадат с ред в базата данни. //Ако е успешно, настройте променливите на сесията //и запазете потребителския обект в рамките.
влизане в публична функция ($username, $password)
{
$hashedPassword = md5($парола); $result = mysql_query("SELECT * FROM users WHERE потребителско име = "$username" И парола = "$hashedPassword""); if(mysql_num_rows($result) == 1) ( $_SESSION["user"] = serialize(new User(mysql_fetch_assoc($result))); $_SESSION["login_time"] = time(); $_SESSION["logged_in "] = 1; връща истина; )else ( връща невярно; ) )
//Излизане на потребителя. Унищожете променливите на сесията. публична функция logout() ( unset($_SESSION["user"]); unset($_SESSION["login_time"]); unset($_SESSION["logged_in"]); session_destroy(); ) //Проверете дали съществува потребителско име. //Това се извиква по време на регистрация, за да се гарантира, че всички потребителски имена са уникални. публична функция checkUsernameExists($username) ( $result = mysql_query("изберете идентификатор от потребители, където потребителско име="$username""); if(mysql_num_rows($result) == 0) ( return false; )else( return true; )
}
//получаване на потребител //връща потребителски обект. Взема идентификатора на потребителя като входна публична функция get($id) ( $db = new DB(); $result = $db->select("users", "id = $id"); return new User($result );)))
?>

функция login().

Функцията login() се обяснява сама. Той взема потребителските аргументи $username и $password и проверява дали съвпадат. Ако всичко съвпада, създава потребителски обект с цялата информация и го съхранява в сесията. Обърнете внимание, че използваме само функцията PHP serialize(). Той създава постоянна версия на обекта, която може лесно да бъде десериализирана с unserialize(). Също така времето за влизане ще бъде запазено. Това може да се използва по-късно, за да се предостави на потребителите информация за продължителността на техния престой на сайта.

Може също да забележите, че задаваме $_SESSION["logged_in"] на 1. Това ни позволява лесно да проверяваме на всяка страница дали потребителят е влязъл. Достатъчно е да проверите само тази променлива.

функцията logout().

Също така проста функция. Функцията unset() на PHP изчиства променливите в паметта, докато session_destroy() ще изтрие сесията.

функция checkUsernameExists().

Който знае английски лесно ще разбере функцията. Той просто прави запитване към базата данни дали се използва такова влизане или не.

get() функция

Тази функция взема уникален потребителски идентификатор и прави запитвания към базата данни, използвайки класа на DB, а именно функцията select(). Той ще вземе асоциативен масив с малко потребителска информация и ще създаде нов потребителски обект, предавайки масива на конструктора.

Къде може да се използва? Например, ако създадете страница, която трябва да показва конкретни потребителски профили, ще трябва да вземете тази информация динамично. Ето как можете да го направите: (да приемем, че URL адресът е http://www.website.com/profile.php?userID=3)

//забележка: първо ще трябва да отворите връзка с база данни. //вижте част 1 за допълнителна информация как да направите това. //Ще трябва също така да се уверите, че сте включили файловете на класа.
$tools = нови потребителски инструменти(); $user = $tools->get($_REQUEST["userID"]); echo "Потребителско име: ".$user->username.""; echo "Присъединил се на: ".$user->joinDate."";

Лесно! Истина?

Довършителни работи от страна на сървъра: global.inc.php

global.inc.php се изисква за всяка страница от сайта. Защо? По този начин ще поставим всички обичайни операции, от които се нуждаем, на страницата. Например ще стартираме session_start(). Връзката с базата данни също ще се отвори.

require_once "classes/UserTools.class.php";
require_once "classes/DB.class.php";
//свържете се с базата данни $db = new DB(); $db->свързване();
//инициализиране на обекта на UserTools $userTools = new UserTools(); //започнете сесията
session_start();
//опресняване на променливите на сесията, ако сте влезли if(isset($_SESSION["logged_in"])) ( $user = unserialize($_SESSION["user"]); $_SESSION["user"] = serialize($userTools-> get($user->id)); ) ?>

Какво прави той?

Тук се случват няколко неща. Първо отваряме връзка към базата данни.

След свързване стартираме функцията session_start(). Функцията създава сесия или продължава текущата, ако потребителят вече е влязъл. Тъй като нашето приложение е предназначено за потребители да влизат / излизат, тази функция е необходима на всяка страница.

След това проверяваме дали потребителят е влязъл. Ако е така, ще актуализираме $_SESSION["user"], за да покаже най-новата потребителска информация. Например, ако потребител промени своя имейл, сесията ще запази стария. Но с помощта на автоматична актуализация това няма да се случи.

С това приключваме втората част! Утре очаквайте последния урок по тази тема.

Всичко най-хубаво!