Eliminamos el editor visual, la selección de combinación de colores y otros detalles en el área de administración de WordPress. Crear un perfil de usuario registrado Ocultar “teclas de acceso rápido”

En la segunda lección escribiremos dos clases más y terminaremos por completo la parte interna del guión.

Plan

El objetivo de esta serie de tutoriales es crear una aplicación sencilla que permita a los usuarios registrarse, iniciar sesión, cerrar sesión y cambiar configuraciones. La clase que contendrá toda la información sobre el usuario se llamará Usuario y estará definida en el archivo User.class.php. La clase que será responsable de la entrada/salida se llamará UserTools (UserTools.class.php).

Un poco sobre los nombres de las clases.

La etiqueta adecuada es nombrar los archivos que describen una clase con el mismo nombre que la clase misma. Esto facilita determinar el propósito de cada archivo en la carpeta de clases.

También es común agregar .class o .inc al final del nombre del archivo de clase. De esta manera definimos claramente el propósito del archivo y podemos usar .htaccess para restringir el acceso a estos archivos.

Clase de usuario (Usuario.class.php)

Esta clase definirá a cada usuario. A medida que esta aplicación crezca, la definición de "Usuario" puede cambiar significativamente. Afortunadamente, la programación orientada a objetos facilita la adición de atributos de usuario adicionales.

Constructor

En esta clase usaremos un constructor: esta es una función que se llama automáticamente al crear la siguiente copia de la clase. Esto nos permite publicar automáticamente algunos atributos después de crear el proyecto. En esta clase, el constructor tomará un único argumento: una matriz asociativa que contiene una fila de la tabla de usuarios de nuestra base de datos.

require_once "DB.class.php"; usuario de clase (público $id; público $nombre de usuario; público $contraseña hash; público $correo electrónico;
público $joinDate;
//Se llama al constructor cuando se crea un nuevo objeto.//Toma una matriz asociativa con la fila de la base de datos como argumento. función __construct($datos) ( $this->id = (isset($datos["id"])) ? $datos["id"] : ""; $this->nombre de usuario = (isset($datos[" nombre de usuario"])) ? $datos["nombre de usuario"] : ""; $this->hashedPassword = (isset($datos["contraseña"])) ? $datos["contraseña"] : ""; $this- >correo electrónico = (isset($datos["correo electrónico"])) ? $datos["correo electrónico"] : "" $this->joinDate = (isset($datos["join_date"])) $datos[" join_date "] : ""; )
función pública save($isNewUser = false) ( //crea un nuevo objeto de base de datos. $db = new DB(); //si el usuario ya está registrado y //simplemente estamos actualizando su información. if(!$isNewUser ) ( //establece la matriz de datos $data = array("username" => ""$this->username"", "password" => ""$this->hashedPassword"",
"correo electrónico" => ""$this->correo electrónico"");
//actualiza la fila en la base de datos $db->update($data, "users", "id = ".$this->id); )else ( //si el usuario se registra por primera vez. $data = array("username" => ""$this->username"", "password" => ""$this->hashedPassword"" , "email" => ""$this->email"", "join_date" => """.date("Y-m-d H:i:s",time())."""); ->insert($datos, "usuarios"); $this->joinDate = time(); ) ) ?>

Explicación

La primera parte del código, fuera de la zona de clase, asegura que la clase esté conectada a la base de datos (ya que la clase Usuario tiene una función que requiere esta clase).

En lugar de variables de la clase "protegida" (usadas en la primera lección), las definimos como "públicas". Esto significa que cualquier código fuera de la clase tiene acceso a estas variables cuando trabaja con el objeto Usuario.

El constructor toma una matriz en la que las columnas de la tabla son claves. Definimos una variable de clase usando $this->variablename. En el ejemplo de esta clase, primero verificamos si existe el valor de una determinada clave. En caso afirmativo, configuramos la variable de clase en ese valor. De lo contrario, la cadena vacía. El código utiliza la forma corta de notación si:

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

¡En este ejemplo estamos comprobando si 3 es igual a cuatro! En caso afirmativo, entonces $valor = “A”, no, $valor = “B”. En nuestro ejemplo, el resultado es $valor = “B”.

Guardamos información sobre los Usuarios en la base de datos.

La función de guardar se utiliza para realizar cambios en la tabla de la base de datos con los valores actuales en el objeto Usuario. Esta función utiliza la clase DB que creamos en la primera lección. Usando variables de clase, se establece la matriz $data. Si los datos del usuario se guardan por primera vez, entonces $isNewUser se pasa como $true (falso de forma predeterminada). Si $isNewUser = $true entonces se llama a la función insert() de la clase DB. De lo contrario, se llama a la función update(). En ambos casos, la información del objeto de usuario se guardará en la base de datos.

Clase UserTools.class.php

Esta clase contendrá funciones relacionadas con los usuarios: login(), logout(), checkUsernameExists() y get(). Pero con la ampliación de esta aplicación, podrás añadir muchas más.

//UserTools.class.php require_once "User.class.php"; require_once "DB.class.php";
clase Herramientas de usuario (
//Inicia sesión como usuario. Primero verifica si //el nombre de usuario y la contraseña coinciden con una fila en la base de datos. //Si tiene éxito, establezca las variables de sesión //y almacene el objeto de usuario dentro.
inicio de sesión de función pública ($ nombre de usuario, $ contraseña)
{
$contraseñahashed = md5($contraseña); $resultado = mysql_query("SELECCIONAR * DE usuarios DONDE nombre de usuario = "$nombre de usuario" Y contraseña = "$hashedPassword""); if(mysql_num_rows($resultado) == 1) ( $_SESSION["usuario"] = serialize(nuevo usuario(mysql_fetch_assoc($resultado))); $_SESSION["login_time"] = tiempo(); $_SESSION["logged_in "] = 1; devuelve verdadero; )de lo contrario (devuelve falso; ) )
//Cerrar sesión del usuario. Destruye las variables de sesión. cierre de sesión de función pública() ( unset($_SESSION["user"]); unset($_SESSION["login_time"]); unset($_SESSION["logged_in"]); session_destroy(); ) //Comprueba si existe un nombre de usuario. //Esto se llama durante el registro para garantizar que todos los nombres de usuario sean únicos. función pública checkUsernameExists ($nombre de usuario) ( $resultado = mysql_query("seleccione ID de usuarios donde nombre de usuario="$nombre de usuario""); if(mysql_num_rows($resultado) == 0) (devuelve falso;) de lo contrario( devuelve verdadero;)
}
//obtiene un usuario //devuelve un objeto Usuario. Toma la identificación del usuario como entrada, la función pública get($id) ( $db = new DB(); $resultado = $db->select("usuarios", "id = $id"); return nuevo Usuario($resultado );
?>

función de inicio de sesión ()

La función login() queda clara por su nombre. Toma los argumentos de usuario $nombre de usuario y $contraseña y comprueba que coincidan. Si todo coincide, crea un objeto Usuario con toda la información y lo guarda en la sesión. Tenga en cuenta que solo estamos utilizando la función PHP serialize(). Crea una versión almacenada del objeto que se puede deserializar fácilmente usando unserialize(). Además, se guardará la hora de inicio de sesión. Esto se puede utilizar más adelante para proporcionar a los usuarios información sobre la duración de la estancia en el sitio.

También puede notar que configuramos $_SESSION["logged_in"] en 1. Esto nos permite verificar fácilmente en cada página si el usuario ha iniciado sesión. Basta con marcar sólo esta variable.

función cerrar sesión ()

También una función simple. La función PHP unset() borra las variables en la memoria, mientras que session_destroy() eliminará la sesión.

función checkUsernameExists()

Cualquiera que sepa inglés entenderá fácilmente la función. Simplemente pregunta a la base de datos si se ha utilizado un inicio de sesión similar o no.

función obtener()

Esta función toma la identificación única del usuario y realiza una consulta a la base de datos utilizando la clase DB, es decir, la función select(). Tomará una matriz asociativa con una cantidad de información del usuario y creará un nuevo objeto Usuario, pasando la matriz al constructor.

¿Dónde puedo usar esto? Por ejemplo, si crea una página que necesita mostrar perfiles de usuario específicos, deberá recuperar esta información dinámicamente. Así es como puedes hacerlo: (digamos que la URL es http://www.website.com/profile.php?userID=3)

//nota: primero deberá abrir una conexión a la base de datos. //consulte la Parte 1 para obtener más información sobre cómo hacerlo. //También tendrás que asegurarte de haber incluido los archivos de clase.
$herramientas = nuevas herramientas de usuario(); $usuario = $herramientas->get($_REQUEST["ID de usuario"]); echo "Nombre de usuario: ".$usuario->nombre de usuario.""; echo "Se unió el: ".$usuario->joinDate."";

¡Fácilmente! ¿Es verdad?

El toque final del lado del servidor: global.inc.php

Se requiere global.inc.php para cada página del sitio. ¿Por qué? De esta forma colocaremos todas las operaciones habituales que necesitaremos en la página. Por ejemplo, iniciaremos session_start(). También se abrirá la conexión a la base de datos.

require_once "clases/UserTools.class.php";
require_once "clases/DB.class.php";
//conectar a la base de datos $db = new DB(); $db->conectar();
//inicializa el objeto UserTools $userTools = new UserTools(); //iniciar la sesión
inicio_sesión();
//actualiza las variables de sesión si estás conectado if(isset($_SESSION["logged_in"])) ( $user = unserialize($_SESSION["user"]); $_SESSION["user"] = serialize($userTools-> get($usuario->id) )?>

¿Qué está haciendo?

Aquí están pasando varias cosas. En primer lugar, abrimos una conexión a la base de datos.

Después de conectarnos, iniciamos la función session_start(). La función crea una sesión o continúa la actual si el usuario ya ha iniciado sesión. Dado que nuestra aplicación está diseñada para que los usuarios inicien o cierren sesión, esta función es obligatoria en cada página.

A continuación, comprobamos si el usuario ha iniciado sesión. Si es así, actualizaremos $_SESSION["user"] para reflejar la información más reciente del usuario. Por ejemplo, si un usuario cambia su correo electrónico, el anterior se almacenará en la sesión. Pero con la actualización automática esto no sucederá.

¡Esto concluye la segunda parte! Esté atento a la lección final sobre este tema mañana.

¡Mis mejores deseos!

Ya escribí sobre los usuarios de WordPress (ver el enlace). Pero como cualquier herramienta (excepto un mazo), Adminimize no es ideal y no puede eliminarlo todo por completo, aunque esto es sólo gracias a los programadores de WordPress.

Esta publicación nació de manera espontánea, puedes agradecer al invitado Blow. La esencia de su pregunta era la siguiente (más bien una serie de preguntas):

1. ¿Cómo ocultar la "Selección de combinación de colores" al usuario?

2. ¿Cómo ocultar las “Teclas de acceso rápido” y el “Editor visual” en el panel de WordPress?

Iré directo al grano. Con este método, puede ocultar cualquier elemento para el usuario en su perfil y también en otras páginas. ¡La forma más sencilla es editar el archivo de visualización!

Para “Perfil” este es un archivo usuario-edit.php, que está en la carpeta administrador de wp. Debe editarlo con mucho cuidado; de lo contrario, podrá "pagar" bien por sus experimentos.

Solución (unificada):

1. Descargue el archivo a su PC y haga una copia (segura....)

2. Buscamos el código HTML que se encarga de mostrar la información que necesitamos.

3. Coméntalo cuidadosamente y “llénalo” nuevamente con un reemplazo.

Ahora practica (editar User-edit.php):

Honestamente, no recuerdo qué versión de WP tengo en el sitio de prueba, pero definitivamente no es inferior a 2.8.2.

Primero, descargué el archivo a mi PC, miré el código usando Chrome Code Viewer y encontré el código requerido en Notepad++.

(dos guiones a cada lado “-”)

1. Ocultar el “Editor visual”

Cambiar al código:

—>

PD: no copie este código, cámbielo usted mismo: ¡¡¡existe una alta probabilidad de errores !!!

2. Oculte "Seleccionar combinación de colores".

Espero que hayas notado la diferencia entre los códigos: se agregaron un total de 7 caracteres. Para ocultar este elemento que estamos buscando si (cuenta($_wp_admin_css_colors) > 1) y comenta debajo de la línea todo el código entre antes

3. Oculte las “teclas de acceso rápido”.

Asuntos Generales

P: El generador de perfiles muestra la actividad del servidor, pero no muestra todas las solicitudes y sesiones.

A: No olvide hacer clic en el botón Iniciar para comenzar a capturar sesiones.

P: Logré conectarme a MySQL, pero no se muestran las sesiones.

A: Neor Profile SQL funciona como un servidor proxy. Esto significa que sólo se pueden mostrar las sesiones que pasan por el generador de perfiles. Su aplicación (o sitio web) debe estar conectada al generador de perfiles como si fuera un servidor MySQL normal. El generador de perfiles utiliza sólo conexiones entrantes TCP. Y luego verás el resultado en la pestaña Sesiones.

P:¿Por qué algunas sesiones tienen solicitudes con tiempo cero?

A: Las consultas de tiempo cero se ejecutan extremadamente rápido y sin latencia. Estas consultas pueden almacenarse en caché mediante el DBMS o ejecutarse muy rápidamente, por ejemplo, si tiene un servidor potente y tablas bien optimizadas.

P:¿Qué significa % en tiempo y duración en una sesión?

A:"Tiempo %" es el porcentaje del tiempo total de ejecución de la sesión. "Duración %" es el porcentaje de la solicitud más larga en la sesión (relación con la solicitud más larga).

P: Yo uso JetProfiler y es más fácil de configurar.

A: JetProfiler recibe información del servidor MySQL a través del comando "show status" y no puede obtener toda la información del servidor, ya que funciona de forma discreta. Neor Profile SQL muestra absolutamente todas las consultas a la base de datos. Y esto requiere configurar su aplicación para enrutar el flujo de solicitudes a través del generador de perfiles.

P: El botón Perfil en la pestaña SQL no muestra el resultado

A: La función de creación de perfiles en el editor SQL funciona mediante el comando MOSTRAR PERFILES, que se agregó a MySQL Community Server a partir de la versión 5.0.37. Verifique la versión de su servidor MySQL.

P:¿Es posible hacer que el generador de perfiles esté basado en la consola?

A: Para la consola, utilice una combinación de registros DBMS y cola, o herramientas especiales de consola, de las cuales hay bastantes. Neor Profile SQL es una aplicación de sistema operativo con ventana diseñada para colocarse en el sistema del desarrollador.

P:¿El generador de perfiles funciona, pero por alguna razón no muestra el gráfico de estadísticas principal?

A: El gráfico principal utiliza el comando MOSTRAR ESTADO para el servidor principal. Es posible que no tenga permiso para ejecutar este comando en el servidor. Asegúrese de tener permisos para este comando.

P:¿Cómo ejecutar el instalador en modo silencioso?

A: sqlprofiler-4.1.1.exe /S /D:C:Archivos de programa (x86)Neor Profile SQL

ventanas

P:¿Cómo comprobar la conexión del Profiler?

A: Utilice el cliente de consola MySQL para conectarse al generador de perfiles. Si ves tu sesión en la pestaña Sesiones, esto significa que todo está configurado correctamente.
Por ejemplo:
Luego ejecute un comando SQL simple:
mostrar mesas;
Y mira lo que pasó en la pestaña Sesiones del generador de perfiles.

linux

P: No puedo conectarme a través de localhost.

A: Linux intenta asociar localhost con una conexión de socket, pero Neor Profile SQL solo funciona con conexiones TCP. Establezca la dirección del servidor en el generador de perfiles en 127.0.0.1 en lugar de localhost. Puede hacer lo mismo en la configuración de su aplicación.
Por ejemplo:
mysql --host=127.0.0.1 --usuario=INICIO DE SESIÓN --contraseña=CONTRASEÑA --puerto=4040

P: No puedo conectarme a 127.0.0.1.

A: Verifique el tipo de conexión en su aplicación. También puede utilizar el tipo de conexión de socket local, que no requiere que introduzca un valor de puerto.

P:¿Cómo instalar Neor Profile SQL en OpenSUSE?

A: Actualmente solo admitimos el paquete DEB, que se ejecuta en Ubuntu, Debian y distribuciones de Linux compatibles. Puedes crear un archivo RPM tú mismo y así ayudar.

P:¿Por qué no puedo interceptar las solicitudes de Sysbench?

A: El generador de perfiles utiliza sólo conexiones entrantes TCP. Ejecute Sysbench con parámetros de host y puerto:
banco de sistemas --test=oltp --mysql-host=127.0.0.1 --mysql-puerto=4040--mysql-user=root --mysql-password=contraseña preparar

Mac OS X

P: El generador de perfiles no puede conectarse al servidor MAMP MySQL.

A: Problema de conexión de red en la configuración de MySQL:

  1. MAMR
    Versión gratuita– copiar la configuración estándar de MySQL a la carpeta
    /Aplicaciones/MAMP/conf/my.cnf
    Versión Pro– menú abierto ARCHIVO – EDITAR – Plantilla MySQL
  2. en la configuración my.cnf, elimine la línea skip-networking
  3. en la Configuración del generador de perfiles, cambie la dirección del host de la base de datos de localhost a 127.0.0.1

Cambiar el puerto MySQL en su script

En Neor Profile SQL, el puerto predeterminado es 4040. Para recopilar consultas SQL, debe cambiar los valores predeterminados para conectarse al host MySQL y el puerto 3306 en su script. A continuación se muestran ejemplos de cómo hacerlo.

cadena connStr = " servidor=127.0.0.1;puerto=4040; base de datos=TU_BASE DE DATOS;usuario=TU_USUARIO;contraseña=TU_CONTRASEÑA;";
http://dev.mysql.com/doc/refman/5.1/en/connector-net-tutorials-intro.html


Cambiar el puerto en CMS popular

Wordpress

Archivo: wp-config.php
Código: definir ("DB_HOST", "localhost :4040 ");

PrestaShop

Archivo: config/settings.inc.php
Código: definir ("_DB_SERVER_", "localhost :4040 ");

Carrito abierto

Archivo: config.php
Código: definir ("DB_HOSTNAME", "localhost :4040 ");

Me gustaría dedicar esta lección a crear un perfil personal para usuarios registrados (además de la lección Crear registro de usuario en el sitio.). Ahora los usuarios podrán agregar su avatar, cambiar su nombre y apellido, agregar su lugar de residencia y fecha de nacimiento. Para ello, en la tabla usuarios agreguemos algunos campos:

Ahora creemos una página de perfil. perfil.php y agregarlo a la pagina index.php enlace a él

Eco"
Mi perfil"; Ahora el código para la página perfil.php en sí.

Perfil<?php echo $login; ?>

Perfil



"; eco " ".$matriz["nombre_usuario"]." ".$matriz["apellido"]."
"; switch ($array["birthdate_month"])(//Convierte el número del mes en el nombre case "1" : $mes = "Enero"; break; case "2" : $mes = "Febrero"; break; caso "3" : $mes = "Marzo"; caso "4" : $mes = "abril"; caso "5" : $mes = "mayo"; "junio"; caso "7" : $mes = "julio"; caso "8" : $mes = "agosto"; caso "9" : $mes = "septiembre"; 10" : $mes = "Octubre"; descanso; caso "11" : $mes = "Noviembre"; descanso; $mes = "Diciembre"; echo "Fecha de registro: ".$array[" reg_date"]."
"; echo "Género: ".$array["sexo"]."
"; echo "Cumpleaños: ".$array["fecha_cumpleaños"]." ".$mes." ".$matriz["fecha_año_nacimiento"]."
"; echo "País: ".$array["país"]."
"; echo "Ciudad: ".$array["ciudad"]."
"; if($_GET["id"] == $id_user)(//Solo el propietario puede editar el perfil echo " Editar perfil"; ) )de lo contrario( imprimir<<Entrada:
Acceso: Contraseña:
RegistroRecuperación de contraseña AQUÍ; ) ?>

Naturalmente, al ir a esta página, veremos un avatar estándar. noAvatar.jpg y posiblemente un nombre y apellido, si el usuario los indicó durante el registro, los elementos restantes estarán vacíos. Al final de esta página hay un enlace a la página de edición de perfil. editar.php. El código de esta página es muy ligero y consta de formularios de entrada de datos. Debido al volumen bastante grande, no lo daré aquí completo, pero solo una parte; será posible obtenerlo completo en los archivos fuente;

Todos los demás formularios son similares y se referirán a un controlador. guardar_edit.php, que realizará cambios en la base de datos. También tiene un código bastante grande, y tampoco lo presentaré aquí, solo te contaré un poco sobre lo que sucede en él (también puedes encontrar el código completo en los archivos fuente). En primer lugar creamos un avatar, si el usuario lo ha subido, claro, en caso contrario dejamos el estándar. Si este es el caso, primero que nada lo descargamos a la carpeta avatares(por cierto, cree esta carpeta y otorgue permisos de escritura 755) después de verificar con las extensiones permitidas. Luego se crea una nueva imagen con un formato dependiendo del modo seleccionado: $rezim = 1 se crea una imagen cuadrada, $rezim = 2 La imagen es proporcional a la original. También necesitas establecer el ancho de la imagen creada. $w y calidad $calidad. Guardamos la imagen creada en formato jpg usando la función imagenjpeg y generar un nombre aleatorio para ello. Ahora necesitas eliminar la imagen antigua y actualizarla en la base de datos con una nueva. Eso es todo por las imágenes.

Todos los demás elementos de este archivo están destinados a actualizar datos personales sobre el usuario y son consultas simples a la base de datos para actualizar campos. Antes de actualizar se comprueba la existencia de variables entrantes y su seguridad mediante tiras de pestañas Y html caracteres especiales. Si la actualización se realiza correctamente, redirigimos inmediatamente al usuario a la página de perfil.
Ahora asegurémonos de que el usuario que inició sesión pueda ver a todos los demás usuarios registrados. Para hacer esto, creemos una página. usuario.php, que mostrará todos los usuarios en un bucle.




Arriba