Utilisateur de profil déraisonnable PHP. Nous supprimons l'éditeur visuel, choisissant une palette de couleurs et d'autres détails dans WordPress Admin. Changer le port MySQL dans votre script

J'ai écrit des utilisateurs WordPress (en regardant le lien). Mais ainsi qu'un outil (à l'exception d'un Sledgehammer) administrer - n'est pas parfait et tout ne peut pas être complètement retiré, bien que cela soit dû aux programmeurs de la Vorress.

Cet article est né spontanément, vous pouvez dire grâce au coup d'invité. L'essence de sa question était la suivante (plutôt une série de questions):

1. Comment masquer "Choisir une palette de couleurs" pour l'utilisateur?

2. Comment masquer "HOTKEYS" et "Editeur visuel" dans le panneau WordPress?

Je vais y aller tout de suite. Avec cette méthode, vous pouvez masquer tous les éléments de l'utilisateur dans son profil et sur d'autres pages également. La façon dont le plus simple est la modification du fichier d'affichage!

Pour "profil" - ceci est un fichier utilisateur-edit.php.qui réside dans le dossier wp-admin.Il est nécessaire de le modifier très soigneusement, sinon vous pouvez bien "payer" pour vos expériences.

Solution (unifiée):

1. Téléchargez le fichier sur votre PC et en faites une copie (enregistrée ....)

2. Nous recherchons un code HTML responsable de la sortie des informations dont nous avons besoin.

3. Faites un commentaire soigneusement sur celui-ci et «remplissez» avec le remplacement.

Maintenant pratiquez (modifier l'utilisateur-edit.php):

Honnêtement, je ne me souviens pas de quelle version j'ai un WP sur le site expérimental, mais certainement pas inférieur à 2.8.2.

Initialement, j'ai téléchargé le fichier sur le PC et à l'aide du "Viewer de code chrome" me regarda et j'ai trouvé le code souhaité dans le bloc-notes ++.

(deux fois deux de chaque côté "-")

1. Cachez l'éditeur visuel »

Nous changeons au code:

—>

pS: Ne copiez pas ce code et changez de vous-même - la probabilité d'erreurs !!!

2. Masquer "Choisir une palette de couleurs".

J'espère que vous avez remarqué la différence de codes - tous ajoutés 7 caractères. Pour cacher cet article à la recherche de si (compte ($ _ wp_admin_csss_colors)\u003e 1)et commentaire sous la ligne tout le code entre avant que

3. Masquer les touches de raccourci.

Dans la deuxième leçon, nous écrirons deux autres classes et terminerons complètement la partie interne du script.

Plan

Le but de la série de leçons de créer une application simple permettant aux utilisateurs de s'inscrire, d'entrer, de quitter et de modifier les paramètres. Une classe qui contiendra toutes les informations utilisateur sera appelée utilisateur et il sera défini dans le fichier user.class.php. Une classe qui sera responsable de l'entrée \\ Sortie sera appelée USERTOOLS (USERTOOLS.CLASS.PHP).

Un peu sur le nom des classes

La bonne tonalité consiste à appeler des fichiers avec une description de classe comme le même nom que la classe elle-même. Il est donc facile de déterminer le but de chaque fichier dans le dossier avec des classes.

En outre, à la fin du nom du fichier de classe, add.class ou.inc. Ainsi, nous définissons clairement le but du fichier et pouvons utiliser.htaccess pour limiter l'accès à ces fichiers.

Classe des utilisateurs (user.class.php)

Cette classe définira chaque utilisateur. Avec la croissance de cette application, la définition «utilisateur» peut changer de manière significative. Heureusement, la programmation OOP facilite l'ajout d'attributs d'utilisateur supplémentaires.

Constructeur

Dans cette classe, nous utiliserons le constructeur - il s'agit d'une fonction qui est automatiquement appelée lors de la création d'une autre copie de la classe. Cela nous permet de publier automatiquement certains attributs après avoir créé un projet. Dans cette classe, le concepteur prendra le seul argument: une matrice associative contenant une rangée de la table des utilisateurs de notre base de données.

Exiger_once "db.class.php"; Utilisateur de classe (Public $ ID; Public $ Nom d'utilisateur; Public $ Hashedpassword; Public $ email;
public $ joinder;
//Le concepteur est appelé lors de la création d'un nouvel objet // prend un tableau associatif avec la rangée de DB comme argument. Fonction __Construction ($ de données) ($ this-\u003e id \u003d (Isset ($ data [id "])))? $ Data [ID"]: ""; $ this-\u003e Isset ($ US Data " ])))? $ Data ["Nom d'utilisateur"]: ""; $ ceci-\u003e hashedpassword \u003d (Data ($ données ["mot de passe]))? $ Data [" Mot de passe "]:" "; $ this-\u003e email \u003d (ISSSET ($ data ["e-mail"]))? $ Data ["Email"]: ""; $ ceci-\u003e Joindate \u003d ($ Data ["join_date])): $ Data [" join_date "]: "";)
Fonction publique Enregistrer ($ isnetwuser \u003d false) (// Créez un nouvel objet de base de données. $ DB \u003d nouveau dB (); // Si l'utilisateur est déjà enregistré et que nous "Reg // vient de mettre à jour leurs informations. Si (! $ ISNewuerer ) (// Définit le tableau de données $ $ Data \u003d Array ("Nom d'utilisateur" \u003d\u003e "" $ this-\u003e Nom d'utilisateur "", "mot de passe" \u003d\u003e "" $ this-\u003e hashedpassword "",
"Email" \u003d\u003e "" $ this-\u003e email "");
// mise à jour de la ligne dans la base de données $ DB-\u003e Mettre à jour ($ données, "utilisateurs", "id \u003d". $ This-\u003e id); ) Sinon (// si l'utilisateur est en cours d'enregistrement pour la première fois. $ Data \u003d Array ("Nom d'utilisateur" \u003d\u003e "" $ this-\u003e nom d'utilisateur "" \u003d\u003e "" $ this-\u003e hashedpassword "" , "Email" \u003d\u003e "" $ this-\u003e email "", "join_date" \u003d\u003e "" .Date ("YMD H: I: S", heure (); $ this-\u003e id \u003d $ Db-\u003e insert ($ données, "utilisateurs"); $ this-\u003e joindate \u003d heure ();) retourne vrai; ))?\u003e

Explication

La première partie du code, en dehors de la zone de classe, fournit une connexion de la classe dans la base de données (puisque la classe d'utilisateur a une fonction qui nécessite cette classe).

Au lieu de variables de classe "protégées" (utilisées dans la 1ère cours), nous les définissons comme "public". Cela signifie que tout code en dehors de la classe a accès à ces variables lorsque vous travaillez avec l'objet utilisateur.

Le concepteur prend un tableau dans lequel les colonnes de la table sont des clés. Nous spécifions une variable de classe en utilisant $ ceci-\u003e VariaBlename. Dans l'exemple de cette classe, nous vérifions d'abord si la valeur d'une clé spécifique est. Si tel est le cas, nous assimilons la variable de la classe à cette valeur. Sinon, une chaîne vide. Le code utilise une brève forme d'un chiffre d'affaires si:

$ Valeur \u003d (3 \u003d\u003d 4)? "UN B";

Dans cet exemple, nous vérifions si 3 quatre est égal à 3! Si oui, alors $ valeur \u003d "a", non - valeur $ \u003d "B". Dans notre exemple, le résultat est $ Value \u003d "B".

Nous enregistrons des informations sur les utilisateurs de la base de données

La fonction de sauvegarde est utilisée pour modifier la table de base de données avec les valeurs actuelles de l'objet utilisateur. Cette fonctionnalité utilise la classe BD, que nous avons créée dans la première leçon. À l'aide de variables de classe, un tableau de données $ est installé. Si les données utilisateur sont enregistrées pour la première fois, alors $ isnewuser est transmis en tant que $ vrai (Faux par défaut). Si $ isnewuserer \u003d $ vrai, alors la fonction Insérer () DB Class est appelée. Sinon, la fonction UPDATE () est appelée. Dans les deux cas, les informations de l'objet utilisateur seront enregistrées dans la base de données.

Userools.class.php classe classe

Cette classe contiendra des fonctions liées aux utilisateurs: connexion (), déconnexion (), checksernesernesxistes () et obtenir (). Mais avec l'extension de cette application, vous pouvez ajouter de nombreux autres autres.

//Usertools.class.php require_once "user.class.php"; Exiger_once "db.class.php";
classe USERTools (
// enregistre l'utilisateur dans. Premièrement vérifie si le nom d'utilisateur et le nom d'utilisateur et le mot de passe correspondent à une ligne de la base de données. // Si cela réussit, définissez les variables de la session // et stockez l'objet utilisateur dans.
login de fonction publique ($ nom d'utilisateur, $ mot de passe)
{
$ hashedpassword \u003d md5 (mot de passe $); $ résultat \u003d mysql_query ("Select * à partir des utilisateurs où nom d'utilisateur \u003d" $ US Nom "et mot de passe \u003d" $ hashedpassword "); Si (mysql_num_rows ($ résultat) \u003d\u003d 1) ($ _session ["utilisateur [" utilisateur] \u003d Serialize (nouvel utilisateur (mysql_fetch_assoc ($ Résultat)); $ _session ["login_time]] \u003d $ _Session [" LOGNED_IN " ] \u003d 1; retour vrai;) sinon (retour faux;))
// enregistre l'utilisateur. Détruire les variables de session. LOGOTE DE LA FONCTION PUBLIQUE () (nonset ($ _ Session ["utilisateur"]); nonset ($ _ Session ["LOGIN_TIME"]); Déset ($ _ "Session [" LOGNED_IN "]); session_destroy ();) // Pour voir si si un nom d'utilisateur existe. // Ceci s'appelle lors de l'inscription pour vous assurer que tous les noms d'utilisateur sont uniques. Fonction publique checkunameExists ($ nom d'utilisateur) ("" Select \u003d mysql_query ("Sélectionnez l'identifiant des utilisateurs où nom d'utilisateur \u003d" $ US Nom ""); if (mysql_num_rows ($ résultat) \u003d\u003d 0) (retourne false) (retourne vrai;)
}
// Obtenir un utilisateur // retourne un objet utilisateur. Prend l'identifiant des utilisateurs comme une fonction publique d'entrée obtenez ($ ID) ($ ID) ($ dB \u003d nouveau db (); $ résultat \u003d $ db-\u003e sélectionner ("Utilisateurs", "id \u003d ID"); renvoyer nouvel utilisateur ($ résultat ););))
?>

Login () Fonction

La fonction de connexion () est claire par le nom. Il prend le nom d'utilisateur $ et des arguments d'utilisateur $ mot de passe et les vérifie. Si tout correspond, crée un objet utilisateur avec toutes les informations et l'enregistre dans la session. Veuillez noter que nous utilisons uniquement la fonction PHP Serialize (). Il crée une version enregistrée de l'objet qui peut être facilement annulée à l'aide de désexservation (). En outre, le temps de connexion sera enregistré. Cela peut être utilisé à l'avenir pour fournir aux utilisateurs des informations sur la durée du séjour sur le site.

Vous pouvez également remarquer que nous avons défini $ _session ["Logged_in"] à 1. Cela nous permet de vérifier facilement sur chaque page de connexion logiquement. Il suffit de ne vérifier que cette variable.

Se déconnecter ()

Aussi une caractéristique simple. La fonction PHP nonset () efface les variables en mémoire, tandis que Session_Destroy () supprime la session.

Fonction checkuserExists ()

Qui sait que l'anglais comprendra facilement la fonction. Il demande simplement à la base de données, que la même connexion soit utilisée ou non.

Obtenir () fonction

Cette fonctionnalité prend un identifiant unique unique et fait une requête à la base de données à l'aide de la classe DB, à savoir Select () fonctions. Il faudra une matrice associative avec un certain nombre d'informations de l'utilisateur et créera un nouvel objet utilisateur, en transmettant un tableau au concepteur.

Où puis-je l'utiliser? Par exemple, si vous créez une page qui devrait afficher des profils d'utilisateur spécifiques, vous devrez prendre ces informations de manière dynamique. C'est ainsi que vous pouvez faire ceci: (Je dirai ul http://www.website.com/profile.php?userid\u003d3)

// Remarque: vous devrez d'abord ouvrir une connexion de base de données. // Voir la partie 1 pour plus d'informations sur le faire. // Vous devez également vous assurer que vous avez inclus les fichiers de classe.
$ Outils \u003d nouveau USERTOOLS (); $ Utilisateur \u003d $ outils-\u003e obtenir ($ _ exiger ["userid"]); Echo "Nom d'utilisateur:". $ Utilisateur-\u003e nom d'utilisateur. ""; Echo "Joins sur:". $ User-\u003e Joindate. "";

Facilement! Vérité?

Dernier serveur de course Partie: global.inc.php

global.inc.php est requis pour chaque page du site. Pourquoi? Ainsi, nous allons placer toutes les opérations habituelles dont nous avons besoin sur la page. Par exemple, nous allons commencer la session_start (). La connexion BD sera également ouverte.

exiger_once "classes / usserools.class.php";
exiger_once "classes / db.class.php";
// Connexion à la base de données $ DB \u003d Nouveau DB (); $ DB-\u003e Connect ();
// initialiser l'objet USERTOOLS $ USERTOOLS \u003d nouvel UserTools (); // Démarrer la session
session_start ();
// rafraîchissez les variables de session si connectées si (Isset ($ _ Session ["LOGNED_IN])) ($ utilisateur \u003d non désériorize ($ _ session [" utilisateur]); $ _Session] \u003d Serialize ($ userools- \u003e Obtenir ($ utilisateur-\u003e id));)?\u003e

Que fait-il?

Il y a quelques choses ici. Tout d'abord, nous ouvrons une connexion à la base.

Après la connexion, nous commençons la fonction session_start (). La fonction crée une session ou continue le courant si l'utilisateur est déjà connecté. Étant donné que notre application est conçue pour que les utilisateurs entrent \\ Out, cette fonctionnalité est obligatoire sur chaque page.

Ensuite, nous vérifions si l'utilisateur est logvisé. Si oui, nous mettrons à jour $ _Session ["utilisateur"] pour afficher les dernières informations sur l'utilisateur. Par exemple, si l'utilisateur change son email, un ancien sera stocké dans la session. Mais avec l'aide de la mise à jour automatique, cela ne se produira pas.

À ce sujet, la deuxième partie est arrivée à la fin! Demain attend la dernière leçon sur ce sujet.

Tous mes vœux!

Questions générales

Q: Le profileur montre l'activité du serveur, mais ne montre pas toutes les demandes et sessions.

UNE: N'oubliez pas de cliquer sur le bouton Démarrer pour commencer à capturer des sessions.

Q: Il était possible de se connecter à MySQL, mais les sessions ne sont pas affichées.

UNE: NEOR Profile SQL fonctionne comme un serveur proxy. Cela signifie que seules des séances traversant un profileur peuvent être montrées. Votre application (ou site) doit être connectée à un profileur comme avec un serveur MySQL conventionnel. Le profileur utilise uniquement les connexions entrantes TCP. Et puis vous verrez le résultat dans l'onglet Session.

Q: Pourquoi dans certaines sessions interrogées avec zéro heure?

UNE: Les demandes avec zéro heure sont extrêmement rapides sans délai. Ces demandes pourraient se produire des SDBMS ou exécutées très rapidement, par exemple, si vous avez un serveur puissant et des tables bien optimisées.

Q: Qu'est-ce que% dans le temps et la durée de la session?

UNE: "Time%" est une part du temps total de l'exécution de la session. "%" Est la part de la demande la plus longue de la session (le ratio à la demande à long terme).

Q: J'utilise JetProfiler et il est plus facile de configurer.

UNE: JetProfiler reçoit des informations de MySQL Server via la commande "Afficher l'état" et ne peut pas recevoir toutes les informations sur le serveur, car cela fonctionne discrètement. NEOR Profile SQL montre absolument toutes les demandes de la base de données. Et cela nécessite de configurer votre application pour diriger le flux de requêtes via un profileur.

Q: Le bouton de profil de l'onglet SQL ne montre pas le résultat.

UNE: La fonction de profilage de l'éditeur SQL fonctionne via la commande show profiles, qui a été ajoutée à MySQL Community Server à partir de la version 5.0.37. Vérifiez votre version du serveur MySQL.

Q: Est-il possible de faire une console de profileur?

UNE: Pour la console, utilisez le ligament de DBMS et des journaux de queue, ou des outils de console spéciaux qui sont nombreux. NEOR Profile SQL est une application pour le système d'exploitation de la fenêtre, destiné à accueillir le développeur sur le système.

Q: Profiler fonctionne, mais pour une raison quelconque ne présente pas le calendrier principal des statistiques?

UNE: L'horaire principal utilise la commande show Status pour le serveur principal. Peut-être que vous n'avez pas le droit d'exécuter cette commande sur le serveur. Assurez-vous d'avoir accès à cette commande.

Q: Comment démarrer l'installateur dans un mode silencieux?

UNE: SQLPROFILER-4.1.1.EXE / S / D: C: Fichiers de programme (X86) Profil NEOR SQL

les fenêtres

Q: Comment vérifier le profileur de connexion?

UNE: Utilisez le client de la console MySQL pour vous connecter au profileur. Si vous voyez votre session dans l'onglet Session, cela signifie que tout est configuré correctement.
Par example:
Ensuite, faites une commande SQL simple:
Afficher les tables;
Et voyez ce qui s'est passé dans la session Signet dans le profileur.

Linux.

Q: Je ne peux pas me connecter à travers localhost.

UNE: Linux essaie d'associer localhost avec une connexion à socket, mais le profil NEOR SQL fonctionne uniquement avec des connexions TCP. Installez l'adresse du serveur dans le profileur 127.0.0.1 au lieu de localhost. Faites la même chose dans les paramètres de votre application.
Par example:
mysql --Host \u003d 127.0.0.1 --User \u003d login -password \u003d mot de passe --port \u003d 4040

Q: Je ne peux pas me connecter à partir du 127.0.0.1.

UNE: Vérifiez le type de connexion dans votre application. Vous pouvez également utiliser le type de connexion de la prise locale dans lequel vous n'avez pas besoin d'entrer la valeur du port.

Q: Comment installer NEOR Profile SQL sous OpenSUSE?

UNE: À ce jour, nous ne prenons en charge que le package Deb qui fonctionne sous des distributions Linux Ubuntu, Debian et Compatible. Vous pouvez faire le fichier RPM vous-même et aider ainsi.

Q: Pourquoi ne puis-je pas intercepter les demandes Sysbench?

UNE: Le profileur utilise uniquement les connexions entrantes TCP. Exécutez Sysbench avec les paramètres d'hôte et de port:
Sysbench --Test \u003d OLTP --Mysql-host \u003d 127.0.0.1 --MySQL-Port \u003d 4040 --MYSQL-User \u003d root --MYSQL-Mot de passe \u003d mot de passe préparer

Mac OS X.

Q: Le profileur ne peut pas se connecter au serveur MAMP MySQL.

UNE: Problème de connexion réseau dans la configuration MySQL:

  1. Mamr.
    Version gratuite - Copier la configuration Standard MySQL dans le dossier
    /Applications/mamp/conf/my.cnf.
    Version pro - Ouvrez le menu Fichier - Modifier - Modèle MySQL
  2. dans la configuration My.cnf, supprimez la chaîne Skip-Networking
  3. dans les paramètres du profilé, modifiez l'adresse de l'hôte BD avec localhost sur 127.0.0.1.

Changer le port MySQL dans votre script

Dans le Profil de NEOR Port par défaut SQL 4040. Pour collecter des demandes SQL, vous devez modifier les valeurs de connexion standard à l'hôte MySQL et le port 3306 de votre script. Vous trouverez ci-dessous des exemples ci-dessous comment le faire.

chaîne Connstr \u003d " serveur \u003d 127.0.0.1; port \u003d 4040;base de données \u003d your_database; utilisateur \u003d your_user; mot de passe \u003d votre_password; ";
http://dev.mysql.com/doc/refman/5.1/fr/connector-net-Tutorials-intro.html


Changer le port dans CMS populaire

Wordpress.

Fichier: wp-config.php
Code: Définir ("db_host", "localhost :4040 ");

PrestaShop.

Fichier: config / Paramètres.inc.PHP
Code: Définir ("_ db_server_" "," localhost :4040 ");

OpenCart.

Fichier: config.php.
Code: Définir ("db_hostname", "localhost :4040 ");

Cette leçon souhaite consacrer à la création d'un profil personnel pour les utilisateurs enregistrés (ajout à la leçon de création de l'enregistrement de l'utilisateur sur le site). Les utilisateurs peuvent maintenant ajouter leur avatar, changer le nom et le nom de famille, ajouter un lieu de résidence et d'anniversaire. Pour faire cela dans la table utilisateurs. Ajoutez quelques champs:

Maintenant crée une page de profil profil.php. et ajouter sur la page index.php. Lien vers elle

Écho "
Mon profil "; maintenant le code de la page profil.php elle-même

Profil<?php echo $login; ?>

Profil



"; Écho" ". $ Array [" nom_user "]." "$ Array [" Nom "]."
"; Commutateur ($ array [" Datate de naissance "]) (// Tournez le nombre de mois dans le cas de nom" 1 ": $ mois \u003d" janvier "; casse-caisse" 2 ": $ mois \u003d" février "; Pause; cas "3": $ mois \u003d "mars"; casse-caisse "4": mois de mois \u003d "avril"; cassé; cas "5": $ mois \u003d "mai"; caisse "6": $ Mois \u003d "juin" pause; cas "7": $ mois \u003d "juillet"; casse-caisse "8": $ mois \u003d "août"; cassé "9": $ mois \u003d "septembre"; case; cas "10": $ mois \u003d "octobre"; casse-cas "11": $ mois \u003d "novembre"; casse-caisse "12": $ mois \u003d "décembre"; cassé;) écho "Date d'inscription:" $ US Array ["Reg_Date"]. "
"; Echo" Paul: "$ Array [" sexe "]."
"; Echo" Anniversaire: "$ Array [" Birthdate_daT_DATE_DATE "]." "Mois $." ". $ Array [" Birthdate_Year "]."
"Echo" Pays: ". $ Array [" Pays "]."
"; Echo" Ville: "$ Array [" Ville "]."
"; Si ($ _ obtenir [" ID "] \u003d\u003d $ ID_USER) (// modifier le profil peut seulement héberger un écho" Modifier le profil ";)) € (Imprimer<< Entrée:
Connexion: Mot de passe:
Enregistrement d'un service de mot de passe ici; )?\u003e.

Naturellement, tournant sur cette page, nous verrons l'avatar standard noavatar.jpg. Et peut-être le nom et le nom de famille, si l'utilisateur les a indiqués lors de l'enregistrement, les articles restants seront vides. À la fin de cette page, il y a un lien vers la page d'édition de profil edit.php.. Le code de cette page est très facile et consiste en des formulaires pour la saisie de données. En raison d'un volume assez important, je ne le donnerai pas complètement, mais je ne donnerai qu'une partie, il sera possible de le prendre complètement dans les fichiers source.

Toutes les autres formes sont similaires et feront référence à un gestionnaire save_edit.php.qui apportera des modifications à la base de données. Il possède également un code assez grand et ici, je ne le donnerai pas aussi, mais je ne vous dirai pas un peu que cela se passe (vous pouvez également avec le code dans les fichiers source). Tout d'abord, nous créons un avatar si l'utilisateur l'a chargé, bien sûr, sinon nous quittons la norme. Si oui, alors la première chose que nous téléchargons sur le dossier avatars. (Au fait, créez ce dossier et mettez les droits d'enregistrement 755) Pré-vérification avec les extensions autorisées. Ensuite, une nouvelle image est créée par le format en fonction du mode sélectionné: $ rezim \u003d 1 Créé une image carrée, $ rezim \u003d 2 La photo est proportionnelle à l'original. Vous devez également définir la largeur de l'image créée. $ W. et qualité $ Qualité.. Image créée Nous économisons au format JPG à l'aide de la fonction imagejpeg. Et nous générons un nom aléatoire pour lui. Maintenant, vous devez supprimer l'ancienne image et mettre à jour dans la base de données à une nouvelle. Sur cela avec des images, tout.

Tous les autres éléments de ce fichier sont conçus pour mettre à jour les données personnelles sur l'utilisateur et sont des requêtes de base de données simples pour mettre à jour les champs. Auparavant, l'existence de variables entrantes et de leur sécurité sont vérifiées avant la mise à niveau. stripslashes. et htmlspecialchars.. Si la mise à jour réussit, nous redirige immédiatement l'utilisateur sur la page de profil.
Maintenant, faites-le donc que l'utilisateur entré à l'utilisateur puisse voir tous les autres utilisateurs enregistrés. Pour ce faire, cela créera une page user.php.qui dans le cycle retirera tous les utilisateurs.