Insertar clave de Akismet desde el wp-config.php

Logo AkismetAkismet es un plugin de WordPress y es un modelo de negocio que me encanta en sí mismo. Ofrece un servicio básico para los que usamos blogs: aislar el spam de forma inteligente, y hay que pagarlo o no, depende para qué lo usemos, haciendo del Software Libre un modelo económico viable, amable y a la vez justo.

Pero bueno, dejando de lado esas consideraciones, hoy os comento cómo meter la clave API de Akismet que conseguís al registraros, para poder usar el servicio.

Probablemente todos conozcáis el método por el cuál introduces la clave API en el escritorio de WordPress. Este método tiene tres problemas, de menor a mayor importancia:

  • Es más lento que el que os voy a inscribir.
  • Es muy pesado si tenemos una red WordPress con muchos blogs (hay que replicar uno a uno).
  • En algunas instalaciones, sobre todo de WordPress Network, el interfaz gráfico de usuario para meter la clave está deshabilitado por un problema técnico que aparece por restricción de permisos. Es un bug y hay varios tickets al respecto.

¿Cuál es la idea que os planteo? Introducirlo directamente en vuestro wp-config.php, exactamente así:

Leer más » 2 Comentarios

Eliminar enlaces de una cadena en PHP

En alguna ocasión, mostrando un extracto o por cualquier otra razón, a lo mejor necesitáis eliminar los enlaces de una cadena que manejáis en PHP. Para esta labor, podemos usar el siguiente código, que se basa en el uso de una expresión regular:

$cadena = preg_replace('/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i', '', $cadena);

Con esto tendríamos la  cadena sin enlaces: HTTP, HTTPS, FTP o FILE, si queréis podéis ampliar la primera parte de la expresión regular para incluir más posibilidades. read more

Leer más » 1 Comentario

¿Por qué no debemos usar require_once en PHP? ¿Qué soluciones tengo?

Cuando desarrollamos es muy frecuente que necesitemos leer código de otros ficheros, los lenguajes y las tecnología difieren en la forma, pero es algo básico y común a todos ellos (salvo excepciones). En PHP una forma cómoda de hacerlo es con require_once o include_once.

¿Por qué cómoda? Porque incluimos ficheros sin preocuparnos de si ya han sido incluidos. PHP lo hace por nosotros.

¿Qué problema hay? PHP al buscar si han sido incluidos o no, consume una cantidad de recursos y de tiempo de ejecución que siempre que podamos, debemos ahorrárnoslo.

¿Qué soluciones hay frente a este problema? Voy a detallar algunas de ellas, pero seguro que tú conoces alguna más que te funciona.

Usar un framework o un CMS

Si usas un entorno de este tipo, probablemente él te dote de funciones similares en funcionalidad que esquivan este problema. Por ejemplo en WordPress uso mucho get_template_part.

Indicar mediante define si se ha incluido o no

La idea sería algo así:

if (!defined('MiFichero')) {
    require('MiFichero');
    define('MiFicherp', 1);
}

De esta forma, con esta bandera, ya tenemos siempre presentes si está incluido o no (podemos hacer una función con ese código para reutilizarlo).

Leer más » 6 Comentarios

Cómo censurar palabras en PHP

En función de nuestro propósito es posible que en algún caso necesitemos controlar las palabras que se escriben. Es muy común el caso de los foros, incluso supongo que para los gestores de contenido orientados a foros proveen alguna extensión para realizar esta tarea.

Bien, lo que vamos a hacer simplemente es reformatear una cadena de texto que puede contener palabras obscenas o malsonantes por otras de menos vulgares con el lenguaje PHP. Con el siguiente ejemplo lo entenderéis perfectamente:

<?php
function censurar($texto){

   $buscar = array(
   '/puta/i',
   '/joder/i',
   '/gilipollas/i'
   );
   $reemplazar = array(
   'preciosa',
   'recorcholis',
   'bonito'
   );
   return preg_replace($buscar,$reemplazar,$texto);
}

$texto = 'joder! Me cago en tu puta madre gilipollas';
echo censurar($texto);
?>

Obteniendo como resultado: 

Leer más » 3 Comentarios

Instalar soporte PHP-GD en un servidor Apache

Siguiendo un poco el hilo de mis últimas entradas dónde se propone eliminar PostgreSQL del arranque o explicamos cómo configurar la interfaz de red por consola, entre otras configuraciones sobre un servidor, vamos a ver cómo instalar soporte PHP-GD en un servidor Apache.

Para ello, abrimos un terminal. Nos logueamos como superusuario, o a través del comando sudo, lanzamos las siguientes instrucciones:

root@6581-Server:~# apt-get install php5-gd

Se instalará junto con las dependencias:

Reading package lists… Done
Building dependency tree
Reading state information… Done
The following extra packages will be installed:
libgd2-xpm
Suggested packages:
libgd-tools
The following packages will be REMOVED:
libgd2-noxpm
The following NEW packages will be installed:
libgd2-xpm php5-gd
0 upgraded, 2 newly installed, […]

Automáticamente debería de haberse reiniciado el servidor para que los cambios surtan efecto, pero si no ha sido así, simplemente invocamos:

root@6581-Server:~# /etc/init.d/apache2 restart

Y finalmente. ¿Cómo comprobar que nuestra instalación de PHP ya soporta PHP-GD?

php5 -i | grep -i –color gd

Leer más » 1 Comentario

[PHP] Convertir segundos en una cadena de tiempo

Me hizo falta hace poco, son de estas cosas que haces una vez y puedes usarla 3 veces a lo largo de tu vida. Los comúnmente conocidos como desarrollos no rentables. En este caso sí lo fue, y como podéis ver por el código no perdí más de 20 minutos en elaborarlo.

Es posible que se os dé el caso y queráis ahorrar vuestro precioso tiempo. Si lo que queréis es simplemente convertir unos segundos en un timestamp en PHP os bastará con crearos en vuestro fichero de funciones:

<?php
function segundosToCadena($segs){
$cadena = ”;
if($segs >= 86400) {
$dias = floor($segs/86400);
$segs = $segs%86400;
$cadena = $dias.’ día’;
if($dias != 1) $cadena .= ‘s’;
if($segs >= 0) $cadena .= ‘, ‘;
}

Leer más » 2 Comentarios

Bloquear una dirección IP con PHP

Sea por comodidad, por manejo o porque no tenemos otra (e.g. no podemos editar la configuración nuestro servidor con htaccess) para bloquear una dirección IP podemos usar PHP con éste propósito.

Para ello, incluiremos dentro de nuestro archivo PHP el siguiente código. Lo ubicaremos en la parte superior, antes de realizar ningún retorno por la salida estándar.

<?
$bloqueo[0]=”167.127.31.5″;
$bloqueo[1]=”167.127.31.5″;
$bloqueo[2]=”167.127.31.5″;
// De esta manera con cuantas como deseemos

if (in_array($_SERVER[‘REMOTE_ADDR’],$bloqueo)) header(“HTTP/1.1 403 Forbidden”);
?>

Leer más » 3 Comentarios

“Could not create the index.html file” en tinthumb.php

Logo Timthumbtimthumb es un pequeño script PHP que nos permite de forma simple mediante parámetros GET, redimensionar, recortar o hacer zoom sobre imágenes. Por esta utilidad, ha sido usado ampliamente en temas WordPress y en otros muchos sitios. Aunque tiene cierta fama por su seguridad (por sus fallos, a priori todos ya resueltos), su uso conlleva alguna problemática de vez en cuando.

Uno de los errores que pueden aparecernos es el que ilustra el título de esta entrada: “Could not create the index.html file” y que puede aparecer sólo o en compañía de otros errores típicos que en otra ocasión trataremos. read more

Leer más » 1 Comentario

Fatal error: Allowed memory size of N bytes exhausted en PHP

Uno de los mayores problemas de usar WordPress, es que a pesar de ser un sistema bastante ligero, llega un momento en el que como no tengamos cuidado, puede llegar a ocupar muchos recursos. De cómo aligerar WordPress, he hablado y hablaré (de forma presencial por cierto en la próxima WordPress Meetup Córdoba que es ya mismo) pero esta no es la idea de esta entrada.

La idea de esta entrada es: no puedo aligerar WordPress por cualquier razón (no hay más que aligerar, falta de tiempo…) y el espacio que direcciona de memoria RAM se ha agotado. El indicativo de este problema es un mensaje que dice lo siguiente:

Fatal error: Allowed memory size of N bytes exhausted en PHP

La solución, intentar ampliar la memoria que tenemos disponible para PHP y por lo tanto para WordPress. ¿Cómo? Iremos intentando cada una de estas acciones.

Dentro de php.ini

Si tienes acceso al php.ini global o en su defecto, tienes un php.ini disponible en tu cuenta compartida, busca la línea:

memory_limit = 32M;

Y sustitúyela por esta otra:

memory_limit = 64M;

Leer más » 3 Comentarios

Instalar servidor LAMP – Apache, MySQL y PHP – en Ubuntu Linux 12.04 LTS Precise Pangolin

La versión 12.04 LTS de Ubuntu tiene un amplio soporte y resulta muy interesante para usuarios particulares y, sobre todo, empresas instalar un servidor LAMP en dicha distribución. Tener 5 años de soporte extendido da una seguridad y estabilidad más que considerable con respecto a otras versiones de Ubuntu. En esta versión instalarlo es aún más fácil que en otras versiones como la 11.04 ó 11.10.

Leer más » 10 Comentarios