WordPress admin sahəsində vizual redaktoru, rəng sxemi seçimini və digər detalları silirik. Vizual redaktoru, rəng sxemi seçimini və WordPress idarəetmə sahəsindəki digər detalları silirik Koda dəyişin

Ümumi məsələlər

S: Profiler server fəaliyyətini göstərir, lakin bütün sorğuları və sessiyaları göstərmir.

A: Sessiyaları çəkməyə başlamaq üçün Başlat düyməsini klikləməyi unutmayın.

S: MySQL-ə qoşulmaq mümkün idi, lakin Sessiyalar göstərilmir.

A: Neor Profile SQL proxy server kimi işləyir. Bu o deməkdir ki, yalnız profilçidən keçən seanslar göstərilə bilər. Tətbiqiniz (və ya saytınız) adi MySQL serveri kimi profilçiyə qoşula bilməlidir. Profiler yalnız daxil olan TCP bağlantılarından istifadə edir. Sonra nəticəni Sessiyalar sekmesinde görəcəksiniz.

S: Niyə bəzi sessiyalarda sorğular sıfır vaxta malikdir?

A: Sıfır vaxtı olan sorğular heç bir gecikmə olmadan çox sürətlidir. Bu cür sorğular DBMS tərəfindən yaddaşda saxlanıla bilər və ya çox tez yerinə yetirilə bilər, məsələn, güclü serveriniz və yaxşı optimallaşdırılmış cədvəliniz varsa.

S: Seansda vaxt və müddət baxımından % nə deməkdir?

A:"Vaxt %" ümumi sessiyanın icra müddətinin faizidir. "Duration %" sessiyadakı ən uzun sorğunun bir hissəsidir (ən uzun sorğuya nisbət).

S: Mən JetProfiler istifadə edirəm və onu qurmaq daha asandır.

A: JetProfiler məlumatı ondan alır MySQL serverləri"Statusu göstər" əmri vasitəsilə və diskret işlədiyi üçün serverdəki bütün məlumatları əldə edə bilmir. Neor Profile SQL tamamilə bütün verilənlər bazası sorğularını göstərir. Və bu, sorğu axınını profilçi vasitəsilə yönləndirmək üçün tətbiqinizi konfiqurasiya etməyi tələb edir.

S: SQL sekmesindəki Profil düyməsi nəticə göstərmir

A: SQL redaktorunda profilləşdirmə funksiyası 5.0.37 versiyasından MySQL İcma Serverinə əlavə edilmiş PROFILES GÖSTER əmri vasitəsilə işləyir. MySQL serverinizin versiyasını yoxlayın.

S: Profiler konsolunu etmək mümkündürmü?

A: Konsol üçün bir dəstə DBMS və quyruq qeydlərindən və ya kifayət qədər az olan xüsusi konsol alətlərindən istifadə edin. Neor Profile SQL, tərtibatçının sistemində yerləşdirilməsi üçün nəzərdə tutulmuş pəncərə ƏS proqramıdır.

S: Profiler işləyir, amma nədənsə əsas statistika qrafikini göstərmir?

A:Əsas qrafik əsas server üçün SHOW STATUS əmrindən istifadə edir. Bu əmri serverdə işə salmaq icazəniz olmaya bilər. Bu əmr üçün icazələrin olduğundan əmin olun.

S: Quraşdırıcını səssiz rejimdə necə işə salmaq olar?

A: sqlprofiler-4.1.1.exe /S /D:C:Proqram Faylları (x86)Neor Profile SQL

Windows

S: Profiler bağlantısını necə yoxlamaq olar?

A: Profilerə qoşulmaq üçün MySQL konsol müştərisindən istifadə edin. Sessiyanızı Sessiyalar sekmesinde görürsünüzsə, bu, hər şeyin düzgün qurulduğunu bildirir.
Misal üçün:
Sonra edin sadə SQLəmr:
cədvəlləri göstərmək;
Profilerdəki Sessiyalar tabında nə baş verdiyinə baxın.

linux

S: Localhost vasitəsilə qoşulmaq mümkün deyil.

A: Linux localhost-u soket bağlantısı ilə əlaqələndirməyə çalışır, lakin Neor Profile SQL yalnız TCP bağlantıları ilə işləyir. Profilerdə server ünvanını localhost yerinə 127.0.0.1 olaraq təyin edin. Tətbiqinizin parametrlərində də eyni şeyi edin.
Misal üçün:
mysql --host=127.0.0.1 --user=LOGIN --password=PASSWORD --port=4040

S: 127.0.0.1-ə qoşulmaq mümkün deyil.

A: Tətbiqinizdə əlaqə növünü yoxlayın. Siz həmçinin port dəyəri tələb etməyən yerli rozetka qoşulma növündən istifadə edə bilərsiniz.

S: OpenSUSE altında Neor Profile SQL-i necə quraşdırmaq olar?

A: Hazırda biz yalnız Ubuntu, Debian və uyğun olan DEB paketini dəstəkləyirik Linux paylamaları. Siz özünüz RPM faylı yarada və kömək edə bilərsiniz.

S: Niyə mən Sysbench sorğularına müdaxilə edə bilmirəm?

A: Profiler yalnız daxil olan TCP bağlantılarından istifadə edir. Sysbench-i host və port parametrləri ilə işə salın:
sysbench --test=oltp --mysql-host=127.0.0.1 --mysql-port=4040--mysql-user=root --mysql-password=parol hazırlayın

MacOS X

S: Profiler MAMP MySQL serverinə qoşula bilmir.

A: Problem şəbəkə bağlantısı MySQL konfiqurasiyasında:

  1. MAMR
    Pulsuz versiya– standart MySQL konfiqurasiyasını qovluğa kopyalayın
    /Proqramlar/MAMP/conf/my.cnf
    Pro versiyası - FILE - EDIT - MySQL şablon menyusunu açın
  2. my.cnf konfiqurasiyasında keçid şəbəkə xəttini çıxarın
  3. profilçi parametrlərində DB host ünvanını localhost-dan 127.0.0.1-ə dəyişin

Skriptinizdə MySQL portunun dəyişdirilməsi

Neor Profile SQL-də standart port 4040-dır. SQL sorğularını toplamaq üçün skriptinizdə hostun və port 3306-nın defolt MySQL əlaqə dəyərlərini dəyişdirməlisiniz. Aşağıda bunun necə ediləcəyinə dair nümunələr verilmişdir.

string connStr = " server=127.0.0.1;port=4040; verilənlər bazası=YOUR_DATABASE;user=YOUR_USER;parol=YOUR_PASSWORD;";
http://dev.mysql.com/doc/refman/5.1/en/connector-net-tutorials-intro.html


Populyar CMS-də port dəyişikliyi

Wordpress

Fayl: wp-config.php
Kod: müəyyən ("DB_HOST", "localhost :4040 ");

PrestaShop

Fayl: config/settings.inc.php
Kod: müəyyən ("_DB_SERVER_", "localhost :4040 ");

açıq araba

Fayl: config.php
Kod: müəyyən ("DB_HOSTNAME", "localhost :4040 ");

Mən artıq WordPress istifadəçilərini yazdım (linkə baxın). Ancaq hər hansı bir alət kimi (balyozdan başqa) Adminimize mükəmməl deyil və hər şeyi tamamilə silə bilməz, baxmayaraq ki, bu yalnız Vorpress proqramçılarının sayəsindədir.

Bu yazı kortəbii olaraq doğuldu, Zərbə qonağına təşəkkür edə bilərsiniz. Onun sualının mahiyyəti aşağıdakılardan ibarət idi (daha doğrusu, bir sıra suallar):

1. Necə gizlətmək olar "Seçim Rəng sxemi" istifadəçi üçün?

2. "Hotkeys" və "Gizlətmək üçün necə vizual redaktor» WordPress İdarə Panelində?

Mən birbaşa mətləbə keçəcəyəm. Bu üsulla istifadəçinin profilində və digər səhifələrdə də istənilən elementi gizlədə bilərsiniz. Ən asan yol ekran faylını redaktə etməkdir!

"Profil" üçün - bu bir fayldır user-edit.php qovluğunda olan wp-admin. Onu çox diqqətlə redaktə etməlisiniz, əks halda təcrübələriniz üçün yaxşı ödəyə bilərsiniz.

Həll (vahid):

1. Faylı kompüterinizə yükləyin və onun surətini çıxarın (diqqətlə ....)

2. Bizə lazım olan məlumatı göstərmək üçün cavabdeh olan Html kodunu axtarırıq.

3. Diqqətlə onu şərh edin və onu əvəz etməklə “yükləyin”.

İndi məşq edin (User-edit.php-ni redaktə edin):

Düzünü desəm, eksperimental saytda WP-nin hansı versiyası olduğunu xatırlamıram, amma mütləq 2.8.2-dən aşağı deyil.

Əvvəlcə faylı PC-yə endirdim və Chrome Code Viewer proqramından istifadə edərək kodun özünə baxdım və lazım olan kodu Notepad++ proqramında tapdım.

(hər tərəfdən iki tire "-")

1. "Vizual redaktoru" gizlədin

Koda dəyişin:

—>

ps: kopyalamayın verilmiş kod, və evdə dəyişiklik - səhvlərin ehtimalı yüksəkdir !!!

2. "Rəng sxeminin seçimi"ni gizlədin.

Siz, ümid edirəm, kodlar arasındakı fərqi gördünüz - cəmi 7 simvol əlavə edildi. Bu elementi gizlətmək üçün axtarırıq əgər (count($_wp_admin_css_colors) > 1) və sətir altında şərh yazın əvvəl

3. "Qaynar düymələri" gizlədin.

İkinci dərsdə daha iki dərs yazacağıq və ssenarinin daxili hissəsini tamamilə bitirəcəyik.

Plan

Bu dərslik seriyasının məqsədi istifadəçilərə qeydiyyatdan keçmək, daxil olmaq, sistemdən çıxmaq və parametrləri dəyişmək imkanı verən sadə proqram yaratmaqdır. İstifadəçi haqqında bütün məlumatları ehtiva edəcək sinif User adlanacaq və User.class.php faylında müəyyən ediləcək. Giriş/çıxış üçün cavabdeh olacaq sinif UserTools (UserTools.class.php) adlanacaq.

Bir az sinfin adlandırılması haqqında

Düzgün ton sinif fayllarını sinfin özü ilə eyni adla adlandırmaqdır. Beləliklə, sinif qovluğundakı hər bir faylın məqsədini müəyyən etmək asandır.

Sinif fayl adının sonuna .class və ya .inc əlavə etmək də adi haldır. Beləliklə, biz faylın məqsədini aydın şəkildə müəyyən edirik və bu fayllara girişi məhdudlaşdırmaq üçün .htaccess-dən istifadə edə bilərik.

İstifadəçi sinfi (User.class.php)

Bu sinif hər bir istifadəçini müəyyənləşdirəcək. Bu proqram böyüdükcə "İstifadəçi" anlayışı əhəmiyyətli dərəcədə dəyişə bilər. Xoşbəxtlikdən, OOP proqramlaşdırması əlavə istifadəçi atributları əlavə etməyi asanlaşdırır.

Konstruktor

Bu sinifdə konstruktordan istifadə edəcəyik - bu, sinfin növbəti nüsxəsi yaradılan zaman avtomatik olaraq çağırılan funksiyadır. Bu, layihə yaradıldıqdan sonra bəzi atributları avtomatik dərc etməyə imkan verir. Bu sinifdə konstruktor tək bir arqument götürəcək: verilənlər bazamızdakı istifadəçilər cədvəlindən bir sıra ehtiva edən assosiativ massiv.

require_once "db.class.php"; sinif İstifadəçisi ( ictimai $id; ictimai $username; ictimai $hashedPassword; ictimai $e-poçt;
ictimai $joinDate;
//Yeni obyekt yaradıldıqda konstruktor çağırılır//Arqument kimi DB sətri ilə assosiativ massiv götürür. funksiya __construct($data) ( $this->id = (isset($data["id"])) ? $data["id"] : ""; $this->username = (isset($data[" username"])) ? $data["username"] : ""; $this->hashedPassword = (isset($data["password"])) ? $data["password"] : ""; $this- >email = (isset($data["email"])) ? $data["email"] : ""; $this->joinDate = (isset($data["join_date"])) ? $data[" qoşulma_tarixi"] : ""; )
ictimai funksiya save($isNewUser = false) ( //yeni verilənlər bazası obyekti yaradın. $db = new DB(); //istifadəçi artıq qeydiyyatdan keçibsə və biz //sadəcə onların məlumatlarını yeniləyirik. if(!$isNewUser) ) ( //məlumat massivini təyin edin $data = array("username" => ""$this->username"", "password" => ""$this->hashedPassword"",
"email" => ""$this->e-poçt"");
//verilənlər bazasındakı sıranı yeniləyin $db->update($data, "istifadəçilər", "id = ".$this->id); )else ( //istifadəçi ilk dəfə qeydiyyatdan keçirilirsə. $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, "istifadəçilər"); $this->joinDate = time(); ) true qaytarın; ) ) ?>

İzahat

Kodun sinif zonasından kənarda olan birinci hissəsi sinfin verilənlər bazasına qoşulmasını təmin edir (çünki User sinfində bu sinfi tələb edən funksiya var).

“Qorunan” sinif dəyişənləri əvəzinə (1-ci dərsdə istifadə olunur) biz onları “ictimai” kimi müəyyən edirik. Bu o deməkdir ki, İstifadəçi obyekti ilə işləyərkən sinifdən kənar istənilən kodun bu dəyişənlərə çıxışı var.

Konstruktor cədvəldəki sütunların açar olduğu massiv götürür. Biz $this->variablename istifadə edərək sinif dəyişənini təyin edirik. Bu sinfin nümunəsində biz ilk növbədə müəyyən bir açarın dəyərinin olub olmadığını yoxlayırıq. Əgər belədirsə, onda biz sinif dəyişənini həmin qiymətə təyin edirik. Əks halda, boş bir sətir. Kod dövriyyə qeydinin qısa formasından istifadə edir, əgər:

$dəyər = (3 == 4) ? "A" : "B";

Bu nümunədə 3-ün dördə bərabər olub olmadığını yoxlayırıq! Əgər belədirsə - onda $value = "A", yox - $value = "B". Bizim nümunəmizdə nəticə $value = “B”dir.

İstifadəçilər haqqında məlumatların verilənlər bazasında saxlanması

Saxlama funksiyası İstifadəçi obyektindəki cari dəyərlərlə verilənlər bazası cədvəlinə dəyişikliklər etmək üçün istifadə olunur. Bu funksiya ilk dərslikdə yaratdığımız DB sinifindən istifadə edir. Sinif dəyişənlərindən istifadə edərək, $data massivi təyin edilir. Əgər istifadəçi ilk dəfə saxlanılırsa, onda $isNewUser $true olaraq ötürülür (defolt yanlışdır). Əgər $isNewUser = $true olarsa, DB sinifinin insert() funksiyası çağırılır. Əks halda update() funksiyası çağırılır. Hər iki halda istifadəçi obyektindən məlumatlar verilənlər bazasında saxlanılacaq.

Class UserTools.class.php

Bu sinifdə istifadəçilərlə əlaqəli funksiyalar olacaq: login(), logout(), checkUsernameExists() və get(). Ancaq bu tətbiqin genişləndirilməsi ilə siz daha çox şey əlavə edə bilərsiniz.

//UserTools.class.php require_once "User.class.php"; require_once "db.class.php";
sinif UserTools(
// İstifadəçi daxil olun. Əvvəlcə //istifadəçi adı və parolun verilənlər bazasında bir sıra ilə uyğun olub olmadığını yoxlayır. //Uğurlu olarsa, sessiya dəyişənlərini təyin edin //və istifadəçi obyektini daxilində saxlayın.
ictimai funksiyaya giriş($username, $parol)
{
$hashedPassword = md5($password); $nəticə = mysql_query("SEÇ * FROM istifadəçilərdən istifadəçi adı = "$username" AND password = "$hashedPassword""); if(mysql_num_rows($result) == 1) ( $_SESSION["user"] = serialize(yeni İstifadəçi(mysql_fetch_assoc($result))); $_SESSION["login_time"] = time(); $_SESSION["logged_in "] = 1; doğru qaytarın; )else ( yalanı qaytarın; ) )
// İstifadəçidən çıxın. Sessiya dəyişənlərini məhv edin. ictimai funksiyadan çıxış() ( unset($_SESSION["user"]); unset($_SESSION["login_time"]); unset($_SESSION["logged_in"]); session_destroy(); ) //Yoxlayın olub-olmadığını yoxlayın istifadəçi adı mövcuddur. //Bütün istifadəçi adlarının unikal olmasına əmin olmaq üçün qeydiyyat zamanı çağırılır. ictimai funksiya checkUsernameExists($username) ( $nəticə = mysql_query("istifadəçi adının olduğu istifadəçilərdən identifikatoru seçin="$username""); if(mysql_num_rows($result) == 0) ( false qaytarın; )else( doğrunu qaytarın; )
}
//istifadəçi alın //istifadəçi obyektini qaytarır. İstifadəçi id-sini giriş ictimai funksiyası kimi qəbul edir get($id) ( $db = new DB(); $result = $db->select("users", "id = $id"); new User($result) qaytarın ); ) )
?>

login() funksiyası

login() funksiyası özünü izah edir. İstifadəçi $username və $password arqumentlərini götürür və onların uyğun olub olmadığını yoxlayır. Hər şey uyğun gələrsə, bütün məlumatlarla İstifadəçi obyekti yaradır və onu sessiyada saxlayır. Qeyd edək ki, biz yalnız PHP serialize() funksiyasından istifadə edirik. O, unserialize() ilə asanlıqla sıradan çıxarıla bilən obyektin davamlı versiyasını yaradır. Həmçinin giriş vaxtı qənaət olunacaq. Bundan sonra istifadəçilərə saytda qalma müddəti haqqında məlumat vermək üçün istifadə oluna bilər.

Siz həmçinin qeyd edə bilərsiniz ki, biz $_SESSION["logged_in"] parametrini 1-ə təyin edirik. Bu, istifadəçinin daxil olub-olmadığını hər səhifədə asanlıqla yoxlamağa imkan verir. Yalnız bu dəyişəni yoxlamaq kifayətdir.

çıxış() funksiyası

Həm də sadə bir funksiya. PHP-nin unset() funksiyası yaddaşdakı dəyişənləri təmizləyir, session_destroy() isə sessiyanı silir.

checkUsernameExists() funksiyası

İngilis dilini bilən funksiyanı asanlıqla başa düşəcək. O, sadəcə olaraq verilənlər bazasına belə bir girişin istifadə edilib-edilmədiyini soruşur.

get() funksiyası

Bu funksiya unikal istifadəçi identifikatoru alır və verilənlər bazasını DB sinfindən, yəni select() funksiyasından istifadə edərək sorğulayır. O, bəzi istifadəçi məlumatı ilə assosiativ massiv götürəcək və massivi konstruktora ötürərək yeni İstifadəçi obyekti yaradacaq.

Harada istifadə etmək olar? Məsələn, xüsusi istifadəçi profillərini göstərməli olan bir səhifə yaratsanız, bu məlumatı dinamik şəkildə götürməlisiniz. Bunu belə edə bilərsiniz: (tutaq ki, URL http://www.website.com/profile.php?userID=3 olsun)

//qeyd: əvvəlcə verilənlər bazası bağlantısı açmalı olacaqsınız. //bununla bağlı əlavə məlumat üçün 1-ci hissəyə baxın. //Siz həmçinin sinif fayllarını daxil etdiyinizə əmin olmalısınız.
$tools = yeni UserTools(); $user = $tools->get($_REQUEST["userID"]); echo "İstifadəçi adı: ".$user->username.""; echo "Qoşulma tarixi: ".$user->joinDate."";

Asanlıqla! Doğrudurmu?

Server tərəfinin son toxunuşu: global.inc.php

Global.inc.php saytın hər səhifəsi üçün tələb olunur. Niyə? Bu şəkildə səhifədə bizə lazım olan bütün adi əməliyyatları yerləşdirəcəyik. Məsələn, biz session_start() funksiyasını işə salacağıq. Verilənlər bazası bağlantısı da açılacaq.

require_once "classes/UserTools.class.php";
require_once "classes/DB.class.php";
// verilənlər bazasına qoşulmaq $db = new DB(); $db->connect();
//UserTools obyektini işə salın $userTools = new UserTools(); //sessiyaya başlayın
session_start();
//girilibsə sessiya dəyişənlərini yeniləyin if(isset($_SESSION["logged_in"])) ( $user = serialize($_SESSION["user"]); $_SESSION["user"] = serialize($userTools-> get($user->id)); ) ?>

O nə edir?

Burada bir neçə şey baş verir. Əvvəlcə verilənlər bazası ilə əlaqə açırıq.

Qoşulduqdan sonra session_start() funksiyasını işə salırıq. Əgər istifadəçi artıq daxil olubsa, funksiya sessiya yaradır və ya cari sessiyanı davam etdirir. Tətbiqimiz istifadəçilərin daxil olmaq/çıxmaq üçün nəzərdə tutulduğundan, bu funksiya hər səhifədə tələb olunur.

Sonra istifadəçinin daxil olub-olmadığını yoxlayırıq. Əgər belədirsə, ən son istifadəçi məlumatını göstərmək üçün $_SESSION["user"] yeniləyəcəyik. Məsələn, istifadəçi e-poçtunu dəyişdirsə, sessiya köhnəsini hələ də saxlayacaq. Lakin avtomatik yeniləmənin köməyi ilə bu baş verməyəcək.

Bununla ikinci hissə yekunlaşır! Sabah bu mövzuda son dərsi gözləyin.

Hər vaxtınız xeyir!