Vi tar bort den visuella redigeraren, val av färgschema och andra detaljer i WordPress-administratörsområdet. Vi tar bort den visuella redigeraren, valet av färgschema och andra detaljer i WordPress adminpanel Ändra till koden

Allmänna problem

F: Profileraren visar serveraktivitet, men visar inte alla förfrågningar och sessioner.

A: Glöm inte att klicka på Start-knappen för att börja spela in sessioner.

F: Det gick att ansluta till MySQL, men sessioner visas inte.

A: Neor Profile SQL fungerar som en proxyserver. Detta innebär att endast sessioner som går genom profileraren kan visas. Din applikation (eller webbplats) bör kunna ansluta till profileraren som en vanlig MySQL-server. Profileraren använder endast inkommande TCP-anslutningar. Och sedan kommer du att se resultatet på fliken Sessioner.

F: Varför är förfrågningar med noll tid i vissa sessioner?

A: Förfrågningar med noll tid är extremt snabba utan förseningar. Sådana frågor kan cachelagras av DBMS eller exekveras mycket snabbt, till exempel om du har en kraftfull server och väloptimerade tabeller.

F: Vad betyder % i tid och varaktighet i en session?

A:"Tid %" är en procentandel av den totala sessionskörningstiden. "Duration %" är en bråkdel av den längsta begäran i sessionen (förhållande till den längsta begäran).

F: Jag använder JetProfiler och det är lättare att ställa in.

A: JetProfiler får information från MySQL-servrar genom kommandot "visa status" och kan inte få all information på servern, eftersom det fungerar diskret. Neor Profile SQL visar absolut alla databasfrågor. Och det kräver att du konfigurerar din applikation för att dirigera förfrågningsflödet genom profileraren.

F: Profilknappen i SQL-fliken visar inte resultatet

A: Profileringsfunktionen i SQL-editorn fungerar genom kommandot SHOW PROFILES, som har lagts till i MySQL Community Server sedan version 5.0.37. Kontrollera din version av MySQL-servern.

F:Är det möjligt att göra profilkonsolen?

A: För konsolen, använd ett gäng DBMS och tail logs, eller speciella konsolverktyg, som det finns en hel del av. Neor Profile SQL är en Windows OS-applikation som är avsedd att finnas på en utvecklares system.

F: Profileraren fungerar, men av någon anledning visar den inte huvudstatistikgrafen?

A: Huvudgrafen använder kommandot SHOW STATUS för huvudservern. Du kanske inte har behörighet att köra det här kommandot på servern. Se till att du har behörighet för detta kommando.

F: Hur kör man installationsprogrammet i tyst läge?

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

Windows

F: Hur kontrollerar man profileranslutningen?

A: Använd MySQL-konsolklienten för att ansluta till profileraren. Om du ser din session på fliken Sessioner betyder det att allt är korrekt inställt.
Till exempel:
Gör sedan enkel SQL kommando:
visa tabeller;
Och se vad som hände på fliken Sessioner i profileraren.

linux

F: Kan inte ansluta via localhost.

A: Linux försöker associera localhost med en socket-anslutning, men Neor Profile SQL fungerar bara med TCP-anslutningar. Ställ in serveradressen i profileraren till 127.0.0.1 istället för localhost. Gör samma sak i inställningarna för din applikation.
Till exempel:
mysql --host=127.0.0.1 --användare=LOGGA IN --lösenord=LÖSENORD --port=4040

F: Kan inte ansluta till 127.0.0.1.

A: Kontrollera anslutningstypen i din applikation. Du kan också använda den lokala sockets anslutningstyp, som inte kräver ett portvärde.

F: Hur installerar jag Neor Profile SQL under OpenSUSE?

A: För närvarande stöder vi endast DEB-paketet som körs under Ubuntu, Debian och är kompatibelt Linux-distributioner. Du kan göra en RPM-fil på egen hand och hjälpa till.

F: Varför kan jag inte avlyssna Sysbench-förfrågningar?

A: Profileraren använder endast inkommande TCP-anslutningar. Kör Sysbench med värd- och portparametrar:
sysbench --test=oltp --mysql-host=127.0.0.1 --mysql-port=4040--mysql-user=root --mysql-password=lösenord förbereda

MacOS X

F: Profileraren kan inte ansluta till MAMP MySQL-servern.

A: Problem nätverksanslutning i MySQL-konfiguration:

  1. MAMR
    Gratis version– kopiera standard MySQL-konfigurationen till mappen
    /Applications/MAMP/conf/my.cnf
    Pro version - öppna menyn FIL - REDIGERA - MySQL-mall
  2. i my.cnf config ta bort skip-nätverksraden
  3. i profilinställningar ändra DB-värdadressen från localhost till 127.0.0.1

Ändra MySQL-porten i ditt skript

I Neor Profile SQL är standardporten 4040. För att samla in SQL-frågor måste du ändra standard MySQL-anslutningsvärden för värden och port 3306 i ditt skript. Nedan finns exempel på hur du gör detta.

sträng connStr = " server=127.0.0.1;port=4040; database=DIN_DATABASE;användare=DIN_ANVÄNDARE;lösenord=DITT_LÖSENORD;";
http://dev.mysql.com/doc/refman/5.1/en/connector-net-tutorials-intro.html


Portbyte i populära CMS

Wordpress

Fil: wp-config.php
Kod: define("DB_HOST", "localhost :4040 ");

PrestaShop

Fil: config/settings.inc.php
Kod: define("_DB_SERVER_", "localhost :4040 ");

öppen vagn

Fil:config.php
Kod: define("DB_HOSTNAME", "localhost :4040 ");

Jag har redan skrivit WordPress-användare (titta på länken). Men som alla verktyg (förutom en slägga), är Adminimize inte perfekt och det kan inte ta bort allt helt, även om detta bara är tack vare Vorpress-programmerarna.

Det här inlägget föddes spontant, du kan tacka Blow-gästen. Kärnan i hans fråga var följande (snarare en serie frågor):

1. Hur man döljer "Choice färgschema"för användaren?

2. Hur man döljer "Snabbtangenter" och " visuell redaktör» i WordPress Dashboard?

Jag kommer direkt till saken. Med den här metoden kan du dölja alla element för användaren i hans profil och även på andra sidor. Det enklaste sättet är att redigera visningsfilen!

För "Profil" - detta är en fil user-edit.php, som finns i mappen wp-admin. Du måste redigera den mycket noggrant, annars kan du betala bra för dina experiment.

Lösning (enhetlig):

1. Ladda ner filen till din PC och gör en kopia av den (försiktigt ....)

2. Vi letar efter HTML-koden som är ansvarig för att visa den information vi behöver.

3. Kommentera det noggrant och "ladda upp" det igen med en ersättare.

Öva nu (redigera User-edit.php):

Ärligt talat kommer jag inte ihåg vilken version av WP jag har på experimentwebbplatsen, men definitivt inte lägre än 2.8.2.

Först laddade jag ner filen på en PC och tittade på själva koden med hjälp av Chrome Code Viewer och hittade koden jag behövde i Notepad++.

(streck två på varje sida "-")

1. Göm "Visuell redigerare"

Ändra till kod:

—>

ps: kopiera inte given kod, och ändra hemma - sannolikheten för fel är hög !!!

2. Dölj "Val av färgschema".

Du, hoppas jag, märkte skillnaden mellan koderna - totalt 7 tecken lades till. För att dölja detta föremål letar vi efter if (count($_wp_admin_css_colors) > 1) och kommentera under raden all kod mellan innan

3. Göm "Snabbtangenterna".

I den andra lektionen kommer vi att skriva ytterligare två klasser och avsluta den interna delen av manuset helt.

Planen

Målet med denna handledningsserie är att skapa en enkel applikation som låter användare registrera sig, logga in, logga ut och ändra inställningar. Klassen som kommer att innehålla all information om användaren kommer att kallas User och den kommer att definieras i User.class.php-filen. Klassen som kommer att ansvara för in-/utgången kommer att heta UserTools (UserTools.class.php).

Lite om klassnamn

Den korrekta tonen är att namnge klassfiler med samma namn som själva klassen. På så sätt är det lätt att avgöra syftet med varje fil i klassmappen.

Det är också vanligt att lägga till .class eller .inc i slutet av klassfilnamnet. Därför definierar vi tydligt syftet med filen och kan använda .htaccess för att begränsa åtkomsten till dessa filer.

Användarklass (User.class.php)

Denna klass kommer att definiera varje användare. När denna applikation växer kan definitionen av "användare" ändras avsevärt. Lyckligtvis gör OOP-programmering det enkelt att lägga till ytterligare användarattribut.

Konstruktör

I den här klassen kommer vi att använda konstruktorn - det här är en funktion som automatiskt anropas när nästa kopia av klassen skapas. Detta gör att vi automatiskt kan publicera vissa attribut efter att projektet har skapats. I den här klassen kommer konstruktorn att ta ett enda argument: en associativ array som innehåller en rad från användartabellen i vår databas.

require_once "db.class.php"; class User ( public $id; public $username; public $hashedPassword; public $email;
public $joinDate;
//Konstruktör anropas när ett nytt objekt skapas//Tar en associativ array med DB-raden som argument. funktion __construct($data) ( $this->id = (isset($data["id"])) ? $data["id"] : ""; $this->username = (isset($data[" användarnamn"])) ? $data["användarnamn"] : ""; $this->hashedPassword = (isset($data["lösenord"])) ? $data["lösenord"] : ""; $this- >email = (isset($data["email"])) ? $data["email"] : ""; $this->joinDate = (isset($data["join_date"])) ? $data[" join_date"] : ""; )
public function save($isNewUser = false) ( //skapa ett nytt databasobjekt. $db = new DB(); //om användaren redan är registrerad och vi //bara uppdaterar deras information. if(!$isNewUser ) ( //ställ in datamatrisen $data = array("username" => ""$this->användarnamn", "lösenord" => ""$this->hashedPassword",
"email" => ""$this->e-post"");
//uppdatera raden i databasen $db->update($data, "users", "id = ".$this->id); )else ( //om användaren registreras för första gången. $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; ) ) ?>

Förklaring

Den första delen av koden, utanför klasszonen, tillhandahåller anslutningen av klassen till databasen (eftersom det finns en funktion i klassen User som kräver denna klass).

Istället för "skyddade" klassvariabler (används i lektion 1), definierar vi dem som "offentliga". Det betyder att vilken kod som helst utanför klassen har tillgång till dessa variabler när man arbetar med User-objektet.

Konstruktorn tar en array där kolumnerna i tabellen är nycklarna. Vi definierar klassvariabeln med $this->variablename. I exemplet med denna klass kontrollerar vi först och främst om värdet på en viss nyckel finns. Om så är fallet sätter vi klassvariabeln till det värdet. Annars en tom sträng. Koden använder den korta formen av omsättningsnotationen om:

$värde = (3 == 4) ? "A" : "B";

I det här exemplet kontrollerar vi om 3 är lika med fyra! Om ja - då $value = "A", nej - $value = "B". I vårt exempel är resultatet $värde = "B".

Spara information om användare i databasen

Spara-funktionen används för att göra ändringar i databastabellen med de aktuella värdena i User-objektet. Den här funktionen använder DB-klassen vi skapade i den första handledningen. Med hjälp av klassvariabler sätts $datamatrisen. Om detta är första gången användaren lagras, skickas $isNewUser som $true (standard är false). Om $isNewUser = $true anropas funktionen insert() för DB-klassen. Annars anropas update()-funktionen. I båda fallen kommer informationen från användarobjektet att lagras i databasen.

Klass UserTools.class.php

Den här klassen kommer att innehålla funktioner relaterade till användare: login(), logout(), checkUsernameExists() och get(). Men med expansionen av denna applikation kan du lägga till många fler.

//UserTools.class.php require_once "User.class.php"; require_once "db.class.php";
klass Användarverktyg(
//Logga in användaren. Kontrollerar först om //användarnamnet och lösenordet matchar en rad i databasen. //Om det lyckas, ställ in sessionsvariablerna //och lagra användarobjektet inom.
offentlig funktionsinloggning ($användarnamn, $password)
{
$hashedPassword = md5($lösenord); $result = mysql_query("SELECT * FROM users WHERE username = "$username" AND password = "$hashedPassword""); if(mysql_num_rows($result) == 1) ( $_SESSION["user"] = serialisera(ny användare(mysql_fetch_assoc($result))); $_SESSION["login_time"] = tid(); $_SESSION["logged_in" "] = 1; return true; )else( return false; ) )
//Logga ut användaren. Förstör sessionsvariablerna. public function logout() ( unset($_SESSION["användare"]); unset($_SESSION["login_time"]); unset($_SESSION["logged_in"]); session_destroy(); ) //Kontrollera om ett användarnamn finns. //Detta anropas under registreringen för att säkerställa att alla användarnamn är unika. offentlig funktion checkUsernameExists($username) ( $result = mysql_query("välj id från användare där användarnamn="$användarnamn""); if(mysql_num_rows($result) == 0) (retur false; )else( return true;)
}
//skaffa en användare //returnerar ett användarobjekt. Tar användar-id som en offentlig ingångsfunktion get($id) ( $db = new DB(); $result = $db->select("användare", "id = $id"); returnera ny användare($result ); ) )
?>

login() funktion

Login()-funktionen är självförklarande. Den tar användarargumenten $username och $password och kontrollerar om de matchar. Om allt stämmer, skapar ett användarobjekt med all information och lagrar det i sessionen. Observera att vi endast använder PHP serialize()-funktionen. Det skapar en beständig version av objektet som enkelt kan unserializes med unserialize(). Även inloggningstiden kommer att sparas. Detta kan användas senare för att ge användarna information om hur länge deras vistelse på webbplatsen varar.

Du kanske också märker att vi sätter $_SESSION["logged_in"] till 1. Detta gör att vi enkelt kan kontrollera på varje sida om användaren är inloggad. Det räcker att bara kontrollera denna variabel.

logout() funktion

Också en enkel funktion. PHP:s unset()-funktion rensar variabler i minnet, medan session_destroy() tar bort sessionen.

checkUsernameExists() funktion

Vem kan engelska kommer lätt att förstå funktionen. Den frågar helt enkelt databasen om en sådan inloggning används eller inte.

get() funktion

Denna funktion tar ett unikt användar-ID och frågar databasen med DB-klassen, nämligen select()-funktionen. Det kommer att ta en associativ array med viss användarinformation och skapa ett nytt användarobjekt som skickar arrayen till konstruktorn.

Var kan den användas? Om du till exempel skapar en sida som behöver visa specifika användarprofiler måste du ta denna information dynamiskt. Så här kan du göra det: (låt oss säga att webbadressen är http://www.website.com/profile.php?userID=3)

//notera: du måste först öppna en databasanslutning. //se del 1 för ytterligare information om hur du gör det. //Du måste också se till att du har inkluderat klassfilerna.
$tools = new UserTools(); $user = $tools->get($_REQUEST["användar-ID"]); echo "Användarnamn: ".$user->användarnamn.""; echo "Joined On: ".$user->joinDate."";

Lätt! Sanning?

Efterbehandling på serversidan: global.inc.php

global.inc.php krävs för varje sida på webbplatsen. Varför? På så sätt kommer vi att placera alla vanliga operationer som vi behöver på sidan. Till exempel kommer vi att starta session_start(). Databasanslutningen öppnas också.

require_once "classes/UserTools.class.php";
require_once "classes/DB.class.php";
//anslut till databasen $db = new DB(); $db->anslut();
//initiera UserTools-objekt $userTools = new UserTools(); //starta sessionen
session_start();
//uppdatera sessionsvariabler om inloggad if(isset($_SESSION["logged_in"])) ( $user = unserialize($_SESSION["user"]); $_SESSION["user"] = serialize($userTools-> get($user->id)); ) ?>

Vad gör han?

Det är flera saker på gång här. Först och främst öppnar vi en anslutning till databasen.

Efter anslutning startar vi session_start()-funktionen. Funktionen skapar en session eller fortsätter den nuvarande om användaren redan är inloggad. Eftersom vår applikation är designad för användare att logga in/ut, krävs denna funktion på varje sida.

Därefter kontrollerar vi om användaren är inloggad. Om så är fallet kommer vi att uppdatera $_SESSION["användare"] för att visa den senaste användarinformationen. Till exempel, om en användare ändrar sin e-post, kommer sessionen fortfarande att lagra den gamla. Men med hjälp av automatisk uppdatering kommer detta inte att hända.

Detta avslutar den andra delen! I morgon väntar den sista lektionen om detta ämne.

Med vänliga hälsningar!