Ha salido a la luz la versión 5.2.1 de PHP, en la cual se solucionan bugs de seguridad, siendo recomendable que se actualice a esta versión.
Los cambios realizados se pueden ver en la release note y cabe destacar protección heap interna, mejoras en Zend Memory Manager y la extensión ZIP. PHP 5.2.1 Released!
Aunque a algunos puedan parecerle consejos obvios, no hay que olvidar que no todo el mundo que programa en PHP controla el lenguaje.
No usar register_globals: da igual que sea PHP6 o anterior, no se deberÃa usar, de todas formas, a partir de PHP6 no será posible usarlas.
No usar magic_quotes: al igual que en el punto anterior, en PHP6 desaparecerá esta opción, además de añadir de que se permita o no su uso, no se deberÃan utilizar.
No usar variables predefinidas largas: Si usas $HTTP_POST_VARS o $HTTP_GET_VAR deberás cambiarlas por las respectivas $_SERVER, $_COOKIE, $_GET, $_POST, $_FILES…
Usar preg en lugar de ereg: en el uso de expresiones regulares deberemos usar las funciones preg (compatibles con Perl).
No inicializar variables con el operador referencia: cuando hagas algo del estilo $var =& new objeto(); deberá asignarlo sin el operador referencia porque te dará un error E_STRICT.
Los comentarios anidados es algo muy común entre los foros o blogs. Realizarlo es bastante sencillo, aunque quizás hacerlo de la forma más eficiente puede tener su dificultad.
En el post que referencio, nos explican paso a paso cómo hacerlo: estructura de la BD, formulario, consultas, …
La solución es de las sencillas, se trata de que cada comentario tenga un campo que enlace con el comentario padre, y luego a la hora de recuperar los comentarios, hay que ir realizando consultas de obtención de comentarios por cada comentario padre, salvo en el primer caso que se buscan los comentarios iniciales. HOW-TO: Multi-level Comments In PHP
Php5Tube es una clase open source que permite acceder de forma sencilla a la API de Youtube, procesando la respuesta XML y devolviendo un array de datos fáciles de leer que convierte el desarrollo en algo intuitivo.
Un ejemplo de uso sería el siguiente:
//get or create youtube username
if( isset($_GET['user']) ){$youtube_user = $_GET['user'];}
else {$youtube_user = 'rickrolled';}
//create phptube object and get videos
include_once("Php5tube.php");
$php5tube = new Php5tube('Video','User','Comment');
$videos = $php5tube->getUserVideos($youtube_user);
Cuando queremos que nuestro servidor web muestre los ficheros y directorios que hay en un directorio dado (algo que se debería evitar por defecto), nos encontramos con que el diseño o la estructura no es la que deseamos.
Si queremos personalizar esta página mediante PHP podemos usar una librería que nos permite recrear la página por defecto, añadiendo otras características como lectura de zips, posiblidad de borrar ficheros y previews de imágenes y vídeos. PHP Directory Listing Script
Vía / With Tech Eyes
Últimamente estoy trabajando bastante con Gutenberg, tiene sus cosas buenas y malas. Sea como sea, es el futuro de WordPress, así que toca aprender.
Lo más interesante de todo es poder usar lo que sabía de webpack, React, HMR, … Y para practicar he hecho un plugin que permite añadir snippets de código en los posts usando los bloques de Gutenberg
Para ello uso la librería highlight.js que permite destacar código de forma sencilla. Aquí un ejemplo
// Import CSS.import'./scss/style.scss';
import'./scss/editor.scss';
import icon from'./icon';
import edit from'./edit';
import save from'./save';
import attributes from'./attributes';
import { __ } from'@wordpress/i18n'; // Import __() from wp.i18nexportconst name = 'sentidoweb/snippet';
exportconst settings = {
// Block name. Block names must be string that contains a namespace prefix. Example: my-plugin/my-custom-block.
title: __( 'Snippets editor', 'sw-snippet' ), // Block title.
icon: icon,
category: 'common', // Block category — Group blocks together based on common traits E.g. common, formatting, layout widgets, embed.
keywords: [
__( 'code', 'sw-snippet' ),
__( 'format', 'sw-snippet' ),
__( 'snippet', 'sw-snippet' ),
],
attributes,
edit,
save,
};