Odstránime vizuálny editor, výber farebnej schémy a ďalšie podrobnosti v oblasti správy WordPress. Odstránime vizuálny editor, výber farebnej schémy a ďalšie podrobnosti v administračnom paneli WordPress Skryť „Klávesové skratky“

Túto lekciu by som rád venoval vytvoreniu osobného profilu pre registrovaných používateľov (dodatok k lekcii Vytvorenie registrácie používateľov na stránke). Teraz si používatelia budú môcť pridať svoj avatar, zmeniť svoje meno a priezvisko, pridať svoje bydlisko a narodeniny. Na tento účel stôl používateľov Pridajme niekoľko polí:

Teraz si vytvoríme profilovú stránku profil.php a pridajte na stránku index.php odkaz naň

ozvena"
Môj profil"; Teraz kód samotnej stránky profile.php

Profil<?php echo $login; ?>

Profil



"; echo" ".$array["name_user"]." ".$array["priezvisko"]."
"; switch ($array["birthdate_month"])(//Premeňte číslo mesiaca na veľkosť písmen "1" : $month = "January"; break; case "2" : $month = "February"; break; prípad " 3" : $mesiac = "marec"; prestávka; prípad "4" : $mesiac = "apríl"; prestávka; prípad "5" : $mesiac = "máj"; prestávka; prípad "6" : $mesiac = "jún"; prestávka; prípad "7" : $mesiac = "júl"; prestávka; prípad "8" : $mesiac = "august"; prestávka; prípad "9" : $mesiac = "september"; prestávka; prípad " 10" : $month = "október"; prestávka; prípad "11" : $mesiac = "november"; prestávka; prípad "12" : $month = "december"; prestávka; ) echo "Dátum registrácie: ".$array [" reg_date"]."
"; echo "Sex: ".$array["sex"]."
"; echo "Narodeniny: ".$array["birthdate_day"]." ".$mesiac." ".$array["birthdate_year"]."
"; echo "Krajina: ".$array["krajina"]."
"; echo "Mesto: ".$array["mesto"]."
"; if($_GET["id"] == $id_user)(//Iba hostiteľ môže upraviť profil echo "Upraviť profil"; ) )else( print<<Vstup:
Prihlásiť sa: heslo:
Registrácia Obnovenie hesla TU; ) ?>

Prirodzene, keď prejdete na túto stránku, uvidíme štandardného avatara noAvatar.jpg a prípadne meno a priezvisko, ak ich užívateľ uviedol pri registrácii, ostatné položky budú prázdne. Na samom konci tejto stránky je odkaz na stránku úpravy profilu. edit.php. Kód pre túto stránku je veľmi ľahký a pozostáva z formulárov na zadávanie údajov. Kvôli dosť veľkému objemu to sem nedám celé, ale dám len časť, v zdrojových súboroch to bude možné prebrať kompletne.

Všetky ostatné formuláre sú podobné a budú odkazovať na jedného handlera save_edit.php, ktorý vykoná zmeny v databáze. Má tiež pomerne veľký kód a nebudem ho sem dávať, ale poviem len niečo o tom, čo sa v ňom deje (úplný kód môžete vidieť aj v zdrojových súboroch). V prvom rade si vytvoríme avatara, ak ho používateľ samozrejme nahral, ​​inak necháme štandardného. Ak áno, potom prvá vec, ktorú urobíme, je nahranie do priečinka avatarov(mimochodom, vytvorte tento priečinok a udeľte mu práva na zápis 755) po kontrole s povolenými rozšíreniami. Potom sa vytvorí nový obrázok s formátom v závislosti od zvoleného režimu: $rezim = 1 vytvorenie štvorcového obrázka $rezim = 2 obrázok je úmerný originálu. Musíte tiež nastaviť šírku generovaného obrázka. $ w a kvalitu $ kvalita. Vytvorený obrázok uložíme pomocou funkcie vo formáte jpg imagejpeg a vygenerovať preň náhodný názov. Teraz musíme odstrániť starý obrázok a aktualizovať databázu novým. To je všetko s obrázkami.

Všetky ostatné položky v tomto súbore sú určené na aktualizáciu osobných údajov o používateľovi a sú to jednoduché dotazy do databázy na aktualizáciu polí. Pred aktualizáciou sa skontroluje existencia prichádzajúcich premenných a ich bezpečnosť pomocou stripslashes a htmlšpeciálne znaky. Ak je aktualizácia úspešná, okamžite používateľa presmerujeme na stránku profilu.
Teraz to spravíme tak, aby prihlásený užívateľ videl všetkých ostatných registrovaných užívateľov. Za týmto účelom vytvoríme stránku user.php, ktorý bude prechádzať všetkými používateľmi.

Už som napísal používateľom WordPress (pozrite si odkaz). Ale ako každý nástroj (okrem perlíka), ani Adminimize nie je dokonalý a nedokáže úplne odstrániť všetko, hoci za to môžu len programátori Vorpress.

Tento príspevok sa zrodil spontánne, môžete poďakovať hosťovi Blow. Podstatou jeho otázky bolo toto (skôr séria otázok):

1. Ako skryť "Voľba farebná schéma"pre používateľa?

2. Ako skryť „Klávesové skratky“ a „Vizuálny editor“ v hlavnom paneli WordPress?

Prejdem rovno k veci. Touto metódou môžete používateľovi skryť ľubovoľné prvky v jeho profile a aj na iných stránkach. Najjednoduchší spôsob je upraviť súbor zobrazenia!

Pre "Profil" - toto je súbor user-edit.php, ktorý sa nachádza v priečinku wp-admin. Musíte ho upravovať veľmi opatrne, inak môžete za svoje experimenty dobre zaplatiť.

Riešenie (zjednotené):

1. Stiahnite si súbor do počítača a vytvorte si jeho kópiu (opatrne ....)

2. Hľadáme Html kód, ktorý je zodpovedný za zobrazenie informácií, ktoré potrebujeme.

3. Starostlivo ho okomentujte a „nahrajte“ ho späť s náhradou.

Teraz si precvičte (úprava User-edit.php):

Úprimne povedané, nepamätám si, akú verziu WP mám na experimentálnej stránke, ale určite nie nižšiu ako 2.8.2.

Najprv som si stiahol súbor do PC a pozrel sa na samotný kód pomocou prehliadača Chrome Code Viewer a našiel som kód, ktorý som potreboval v programe Notepad++.

(pomlčka dve na každej strane "-")

1. Skryť "Vizuálny editor"

Zmeniť na kód:

—>

ps: nekopírujte tento kód, ale zmeňte ho u vás - je vysoká pravdepodobnosť chýb !!!

2. Skryť "Výber farebnej schémy".

Dúfam, že ste si všimli rozdiel medzi kódmi - celkovo pribudlo 7 znakov. Ak chcete skryť túto položku, hľadáme if (count($_wp_admin_css_colors) > 1) a okomentujte pod riadkom celý kód medzi predtým

3. Skryte "Klávesové skratky".

V druhej lekcii napíšeme ďalšie dve triedy a kompletne dokončíme vnútornú časť skrípt.

Plán

Cieľom tejto série tutoriálov je vytvoriť jednoduchú aplikáciu, ktorá používateľom umožní registráciu, prihlásenie, odhlásenie a zmenu nastavení. Trieda, ktorá bude obsahovať všetky informácie o užívateľovi sa bude volať User a bude definovaná v súbore User.class.php. Trieda, ktorá bude zodpovedná za vstup/výstup, sa bude volať UserTools (UserTools.class.php).

Trochu o pomenovaní triedy

Správny tón je pomenovať súbory triedy rovnakým názvom ako samotná trieda. Týmto spôsobom je ľahké určiť účel každého súboru v priečinku triedy.

Je tiež bežné pridať .class alebo .inc na koniec názvu súboru triedy. Preto jasne definujeme účel súboru a môžeme použiť .htaccess na obmedzenie prístupu k týmto súborom.

Trieda používateľa (User.class.php)

Táto trieda bude definovať každého používateľa. S rastom túto aplikáciu definícia „Používateľa“ sa môže výrazne zmeniť. Našťastie OOP programovanie uľahčuje pridávanie ďalších užívateľských atribútov.

Konštruktér

V tejto triede použijeme konštruktor – ide o funkciu, ktorá sa automaticky volá pri vytvorení ďalšej kópie triedy. To nám umožňuje automaticky publikovať niektoré atribúty po vytvorení projektu. V tejto triede bude konštruktor preberať jeden argument: asociatívne pole, ktoré obsahuje jeden riadok z tabuľky užívateľov v našej databáze.

require_once "db.class.php"; class User ( public $id; public $username; public $hashedPassword; public $email;
public $joinDate;
//Konštruktor sa volá pri vytvorení nového objektu//Vezme asociatívne pole s riadkom DB ako argument. function __construct($data) ( $this->id = (isset($data["id"])) ? $data["id"] : ""; $this->username = (isset($data[" username"])) ? $data["username"] : ""; $this->hashedPassword = (isset($data["heslo"])) ? $data["password"] : ""; $this- >email = (isset($data["email"])) ? $data["email"] : ""; $this->joinDate = (isset($data["join_date"])) ? $data[" pridať dátum"] : ""; )
public function save($isNewUser = false) ( //vytvorte nový databázový objekt. $db = new DB(); //ak je používateľ už zaregistrovaný a my //práve aktualizujeme jeho informácie. if(!$isNewUser ) ( //nastavenie dátového poľa $data = array("username" => ""$this->username"", "password" => ""$this->hashedPassword"",
"email" => ""$this->email"");
//aktualizácia riadku v databáze $db->update($data, "users", "id = ".$this->id); )else ( //ak je používateľ registrovaný prvýkrát. $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; ) ) ?>

Vysvetlenie

Prvá časť kódu mimo zóny triedy poskytuje pripojenie triedy k databáze (pretože v triede User je funkcia, ktorá túto triedu vyžaduje).

Namiesto „chránených“ premenných triedy (použitých v lekcii 1) ich definujeme ako „verejné“. To znamená, že akýkoľvek kód mimo triedy má pri práci s objektom User prístup k týmto premenným.

Konštruktor vezme pole, v ktorom sú kľúčmi stĺpce v tabuľke. Premennú triedy definujeme pomocou $this->variablename. V príklade tejto triedy v prvom rade skontrolujeme, či hodnota určitého kľúča existuje. Ak áno, potom nastavíme premennú triedy na túto hodnotu. V opačnom prípade prázdny reťazec. Kód používa krátku formu notácie obratu, ak:

$hodnota = (3 == 4) ? "A" : "B";

AT tento príklad skontrolujeme, či sa 3 rovná štyrom! Ak áno - potom $hodnota = "A", nie - $hodnota = "B". V našom príklade je výsledkom $value = „B“.

Ukladanie informácií o používateľoch do databázy

Funkcia uloženia sa používa na vykonanie zmien v databázovej tabuľke s aktuálnymi hodnotami v objekte používateľa. Táto funkcia používa triedu DB, ktorú sme vytvorili v prvom tutoriále. Pomocou premenných triedy sa nastaví pole $data. Ak je to prvýkrát, čo sa používateľ ukladá, potom sa $isNewUser odovzdá ako $true (predvolená hodnota je false). Ak $isNewUser = $true, potom sa zavolá funkcia insert() triedy DB. V opačnom prípade sa zavolá funkcia update(). V oboch prípadoch budú informácie z objektu používateľa uložené v databáze.

Trieda UserTools.class.php

Táto trieda bude obsahovať funkcie súvisiace s používateľmi: login(), logout(), checkUsernameExists() a get(). S rozšírením tejto aplikácie však môžete pridať oveľa viac.

//UserTools.class.php require_once "User.class.php"; require_once "db.class.php";
trieda UserTools(
//Prihlásiť používateľa. Najprv skontroluje, či sa //užívateľské meno a heslo zhodujú s riadkom v databáze. //Ak je to úspešné, nastavte premenné relácie //a uložte objekt používateľa.
verejné prihlásenie ($username, $password)
{
$hashedPassword = md5($heslo); $result = mysql_query("SELECT * FROM users WHERE username = "$username" AND password = "$hashedPassword""); if(mysql_num_rows($result) == 1) ( $_SESSION["user"] = serialize(new User(mysql_fetch_assoc($result))); $_SESSION["login_time"] = time(); $_SESSION["prihlásené_in "] = 1; return true; )else( return false; ) )
//Odhláste používateľa. Zničte premenné relácie. public function logout() ( unset($_SESSION["user"]); unset($_SESSION["login_time"]); unset($_SESSION["logged_in"]); session_destroy(); ) //Skontrolujte, či používateľské meno existuje. //Toto sa volá počas registrácie, aby sme sa uistili, že všetky používateľské mená sú jedinečné. verejná funkcia checkUsernameExists($username) ( $result = mysql_query("select id from users where username="$username""); if(mysql_num_rows($result) == 0) ( return false; )else( return true; )
}
//získať používateľa //vráti objekt používateľa. Berie ID používateľa ako vstupnú verejnú funkciu get($id) ( $db = new DB(); $result = $db->select("users", "id = $id"); return new User($result ;)))
?>

funkciu login().

Funkcia login() je samozrejmá. Berie užívateľské argumenty $username a $password a kontroluje, či sa zhodujú. Ak sa všetko zhoduje, vytvorí objekt používateľa so všetkými informáciami a uloží ho do relácie. Všimnite si, že používame iba funkciu PHP serialize(). Vytvára trvalú verziu objektu, ktorú možno jednoducho zrušiť serializáciou pomocou unserialize(). Uloží sa aj čas prihlásenia. To môže byť neskôr použité na poskytovanie informácií používateľom o dĺžke ich pobytu na stránke.

Môžete si tiež všimnúť, že nastavujeme $_SESSION["logged_in"] na 1. To nám umožňuje na každej stránke jednoducho skontrolovať, či je používateľ prihlásený. Stačí zaškrtnúť iba túto premennú.

funkciu logout().

Tiež jednoduchá funkcia. PHP funkcia unset() vymaže premenné v pamäti, zatiaľ čo session_destroy() vymaže reláciu.

funkcia checkUsernameExists().

Kto vie po anglicky, funkciu ľahko pochopí. Jednoducho sa spýta v databáze, či sa takéto prihlásenie používa alebo nie.

funkcia get().

Táto funkcia preberá jedinečné ID používateľa a dopytuje databázu pomocou triedy DB, konkrétne funkcie select(). Bude potrebné asociatívne pole s niektorými informáciami o používateľovi a vytvorí nový objekt používateľa, pričom pole odovzdá konštruktorovi.

Kde sa dá použiť? Napríklad, ak vytvoríte stránku, ktorá potrebuje zobrazovať špecifické užívateľské profily, budete musieť tieto informácie brať dynamicky. Môžete to urobiť takto: (povedzme, že adresa URL je http://www.website.com/profile.php?userID=3)

//poznámka: najprv budete musieť otvoriť pripojenie k databáze. //Ďalšie informácie o tom nájdete v časti 1. //Musíte sa tiež uistiť, že ste zahrnuli súbory triedy.
$tools = new UserTools(); $user = $tools->get($_REQUEST["userID"]); echo "Používateľské meno: ".$user->username.""; echo "Pripojené dňa: ".$user->joinDate."";

Jednoducho! pravda?

Dokončenie na strane servera: global.inc.php

global.inc.php sa vyžaduje pre každú stránku webu. prečo? Takto na stránku umiestnime všetky bežné operácie, ktoré potrebujeme. Napríklad spustíme session_start(). Otvorí sa aj pripojenie k databáze.

require_once "classes/UserTools.class.php";
require_once "classes/DB.class.php";
//pripojenie k databáze $db = new DB(); $db->connect();
//inicializácia objektu UserTools $userTools = new UserTools(); //spustenie relácie
session_start();
//obnoviť premenné relácie, ak ste prihlásení if(isset($_SESSION["logged_in"])) ( $user = unserialize($_SESSION["user"]); $_SESSION["user"] = serialize($userTools-> get($user->id)); ) ?>

Čo robí?

Deje sa tu viacero vecí. Najprv otvoríme pripojenie k databáze.

Po pripojení spustíme funkciu session_start(). Funkcia vytvorí reláciu alebo pokračuje v aktuálnej, ak je používateľ už prihlásený. Keďže naša aplikácia je určená pre používateľov na prihlásenie/odhlásenie, táto funkcia je potrebná na každej stránke.

Ďalej skontrolujeme, či je používateľ prihlásený. Ak áno, aktualizujeme $_SESSION["user"], aby sa zobrazili najnovšie informácie o používateľovi. Napríklad, ak používateľ zmení svoj e-mail, relácia bude stále uchovávať starý. Ale s pomocou automatickej aktualizácie sa to nestane.

Týmto sa končí druhá časť! Zajtra očakávajte záverečnú lekciu na túto tému.

Všetko najlepšie!

Všeobecné otázky

Otázka: Profiler zobrazuje aktivitu servera, ale nezobrazuje všetky požiadavky a relácie.

A: Nezabudnite kliknúť na tlačidlo Štart a začať zachytávať relácie.

Otázka: Bolo možné pripojiť sa k MySQL, ale relácie sa nezobrazujú.

A: Neor Profile SQL funguje ako proxy server. To znamená, že sa môžu zobraziť iba relácie prechádzajúce cez profilovač. Vaša aplikácia (alebo stránka) by mala byť schopná pripojiť sa k profileru ako bežný server MySQL. Profiler používa iba prichádzajúce pripojenia TCP. A potom uvidíte výsledok na karte Relácie.

Otázka: Prečo sú v niektorých reláciách požiadavky s nulovým časom?

A: Požiadavky s nulovým časom sú extrémne rýchle bez oneskorenia. Takéto dotazy môže DBMS uložiť do vyrovnávacej pamäte alebo vykonať veľmi rýchlo, napríklad ak máte výkonný server a dobre optimalizované tabuľky.

Otázka:Čo znamená % v čase a dĺžke trvania relácie?

A:„Čas %“ je percento z celkového času vykonania relácie. "Trvanie %" je zlomok najdlhšej požiadavky v relácii (pomer k najdlhšej požiadavke).

Otázka: Používam JetProfiler a jeho nastavenie je jednoduchšie.

A: JetProfiler prijíma informácie z MySQL servery cez príkaz "show status" a nemôže získať všetky informácie na serveri, pretože funguje diskrétne. Neor Profile SQL zobrazuje absolútne všetky databázové dotazy. A to si vyžaduje konfiguráciu vašej aplikácie tak, aby smerovala tok požiadaviek cez profilovač.

Otázka: Tlačidlo Profil na karte SQL nezobrazuje výsledok

A: Funkcia profilovania v editore SQL funguje prostredníctvom príkazu SHOW PROFILES, ktorý bol do MySQL Community Server pridaný od verzie 5.0.37. Skontrolujte svoju verziu servera MySQL.

Otázka: Je možné vyrobiť konzolu profilovača?

A: Pre konzolu použite kopu DBMS a tail logov, alebo špeciálne konzolové nástroje, ktorých je pomerne dosť. Neor Profile SQL je aplikácia operačného systému Windows, ktorá je určená na hosťovanie v systéme vývojára.

Otázka: Profiler funguje, ale z nejakého dôvodu nezobrazuje hlavný štatistický graf?

A: Hlavný graf používa príkaz SHOW STATUS pre hlavný server. Možno nemáte povolenie na spustenie tohto príkazu na serveri. Uistite sa, že máte povolenia pre tento príkaz.

Otázka: Ako spustiť inštalačný program v tichom režime?

A: sqlprofiler-4.1.1.exe /S /D:C:Program Files (x86)Neor Profile SQL

Windows

Otázka: Ako skontrolovať pripojenie profilera?

A: Na pripojenie k profileru použite klienta konzoly MySQL. Ak svoju reláciu vidíte na karte Relácie, znamená to, že všetko je nastavené správne.
Napríklad:
Potom urobte jednoduchý SQL príkaz:
zobraziť tabuľky;
A pozrite sa, čo sa stalo na karte Relácie v profileri.

linux

Otázka: Nedá sa pripojiť cez localhost.

A: Linux sa pokúša priradiť localhost k soketovému pripojeniu, ale Neor Profile SQL funguje iba s TCP pripojeniami. Nastavte adresu servera v profileri na 127.0.0.1 namiesto localhost. Urobte to isté v nastaveniach vašej aplikácie.
Napríklad:
mysql --host=127.0.0.1 --user=LOGIN --password=HESLO --port=4040

Otázka: Nedá sa pripojiť k 127.0.0.1.

A: Skontrolujte typ pripojenia vo svojej aplikácii. Môžete tiež použiť typ pripojenia lokálneho soketu, ktorý nevyžaduje hodnotu portu.

Otázka: Ako nainštalovať Neor Profile SQL pod OpenSUSE?

A: V súčasnosti podporujeme iba balík DEB, ktorý beží pod Ubuntu, Debianom a je kompatibilný Linuxové distribúcie. Môžete si vytvoriť súbor RPM sami a pomôcť.

Otázka: Prečo nemôžem zachytiť požiadavky Sysbench?

A: Profiler používa iba prichádzajúce pripojenia TCP. Spustite Sysbench s parametrami hostiteľa a portu:
sysbench --test=oltp --mysql-host=127.0.0.1 --mysql-port=4040--mysql-user=root --mysql-password=pripravte heslo

MacOS X

Otázka: Profiler sa nemôže pripojiť k serveru MAMP MySQL.

A: Problém sieťové pripojenie v konfigurácii MySQL:

  1. MAMR
    Bezplatná verzia– skopírujte štandardnú konfiguráciu MySQL do priečinka
    /Applications/MAMP/conf/my.cnf
    Verzia Pro - otvorte ponuku SÚBOR - UPRAVIŤ - Šablóna MySQL
  2. v konfigurácii my.cnf odstráňte riadok skip-networking
  3. v nastaveniach profilera zmeňte adresu hostiteľa DB z localhost na 127.0.0.1

Zmena portu MySQL vo vašom skripte

V Neor Profile SQL je predvolený port 4040. Ak chcete zhromažďovať dotazy SQL, musíte vo svojom skripte zmeniť predvolené hodnoty pripojenia MySQL hostiteľa a portu 3306. Nižšie sú uvedené príklady, ako to urobiť.

string connStr = " server=127.0.0.1;port=4040; databáza=VAŠA_DATABÁZA;používateľ=VÁŠ_POUŽÍVATEĽ;heslo=VAŠE_HESLO;";
http://dev.mysql.com/doc/refman/5.1/en/connector-net-tutorials-intro.html


Zmena portu v populárnom CMS

Wordpress

Súbor: wp-config.php
Kód: define("DB_HOST", "localhost :4040 ");

PrestaShop

Súbor: config/settings.inc.php
Kód: define("_DB_SERVER_", "localhost :4040 ");

opencart

Súbor:config.php
Kód: define("DB_HOSTNAME", "localhost :4040 ");