944 063 154

Blog

Etiqueta: PHP

Configuración rápida de Virtual Host en Apache

Publicado enSistemas TI

LAMP, es una infraestructura de internet open source compuesta por Apache + PHP + MySQL. Es por ello que, si has decidido pasarte a LAMP, cuando finalices la instalación; es posible que te veas en la necesidad de crear alojamientos virtuales, o virtual hosts, para todos tus dominios. El servidor web Apache acostumbra a guardar todos los archivos de configuración de los Virtual Host en una ruta como la siguiente: /etc/apache2/vhosts.d/ . Por ello, en el caso de que no hayas configurado ninguno, verás allí una serie de plantillas; si quieres que puedes usarlas como base para la configuración. Una de ellas va unida a la instalación de un certificado SSL y la otra no requiere de un certificado de seguridad.

Configurar Virtual Host en Apache

Para que entenderlo te sea mucho más sencillo, vamos con un ejemplo. En él, vamos a crear un archivo de configuración en nombre de Linube; para ello, utilizaremos la distribución de Linux OpenSuse.

En primer lugar, tendremos que movernos al directorio de configuración que se encuentra dentro del virtual host. Algo que podremos hacer de la siguiente manera; recurriendo para ellos a unas sencillas líneas de código:

cd /etc/apache2/vhosts.d

A continuación, deberemos copiar la plantilla que nos proporciona Apache a un nuevo archivo. De esta forma, podremos configurar el servidor web como nosotros queramos. Debería ser algo similar a esto:

cp vhost.template linube.conf

Seguidamente, tendremos que hacer lo mismo en la otra distribución. Lo habitual es recurrir a una ruta de aspecto similar a esta /var/www/vhosts/

mkdir -p /srv/www/vhosts/linube/

Llegados a este punto, es importante tener en cuenta que el archivo de configuración siempre debe terminar con el sufijo «.conf». De no ser así, Apache no podrá leerlo; y, por tanto, no será posible la creación de los alojamientos virtuales que necesitamos para alojar nuestros dominios.

Cuando ya esté creado el host, deberemos editarlo y sustituir el dominio de ejemplo que proporciona la aplicación, «dummy-host.example.com», por el dominio nuestro. Además, también deberemos modificar las rutas, que en nuestro ejemplo es la siguiente /srv/www/vhosts/linube/. Asimismo, tenemos que asegurarnos, sobre todo, que se establece correctamente el DocumentRoot y que la ruta del directorio tiene un aspecto similar a esta:  <Directory «/srv/www/vhosts/dummy-host.example.com»>.

Por último, bastará con reiniciar Apache para que se apliquen correctamente todos los cambios que hemos introducido. La acción de reiniciar un servidor es la forma más común de asegurarnos de que se apliquen los cambios introducidos en su configuración. Para ello, realizaremos lo siguiente:

/etc/init.d/apache2 restart

Con esto, ya habremos acabado de configurar un Virtual Host en Apache para nuestros dominios.

Instalar extensión php-memcached en Suse Linux

Publicado enDesarrollo y Programación

PHP-memcached es un sistema que permite almacenar datos en la memoria RAM para no tener que solicitar todos los datos a un servidor externo. Esta información puede solicitarse utilizando las librerías de los diferentes lenguajes de programación a través de cadenas hash. Así, no será necesario tener que buscar en la base de datos, ya que la todos los datos necesarios estarán disponibles en esta memoria. De esta forma, las solicitudes se sirven en un período de tiempo mucho menor que si los datos tuvieran que solicitarse a otro agente.

Aunque este tutorial está escrito pensando en una distribución Suse y openSuse, los pasos a realizar se pueden aplicar a otras distribuciones; como por ejemplo Debian 9 o Debian 10. Antes de empezar, tenemos que elegir entre dos opciones: php-memcached o php-memcache. Ambos sistemas funcionan igual en la capa de programación PHP, pero cada uno tiene sus particularidades:

  • Php-memcache. De las dos opciones, esta es la más antigua. Una extensión de PHP que se caracteriza por no requerir de librerías adicionales.
  • Php-memcached. Desarrollada por Andrei Zmievski (desarrollador del core de PHP), es la extensión más nueva de las dos a elegir. A diferencia de la anterior, php-memcached sí requiere de una librería adicional: libmemcached. En nuestro caso hemos optado por esta opción, el hecho de que Andrei sea el responsable de su desarrollo nos da más confianza.

* Nota: recuerda que si usas symfony 1.2 o inferior, debes usar la extensión más antigua, php-memcache; ya que la otra opción no es compatible.

Instalando php-memcached

Para comenzar con la instalación de php-memcached, primero deberemos descargar la extensión libmemcached. Cuando la descarga haya finalizado, hay que compilarla. Algo que puedes hacer con las siguientes líneas de código:


wget http://download.tangent.org/libmemcached-0.35.tar.gz

tar -xvf libmemcached-0.35.tar.gz

cd libmemcached-0.35/

/configure

make

make install

Al terminar la compilación, tenemos que bajar la extensión php-memcached del sitio web pecl; no sin antes instalar las librerías de desarrollo de PHP, de otra forma no será posible compilar dicha extensión.

#instalamos las librerías de desarrollo de php
zypper install php5-devel

#ahora nos bajamos la extensión de pecl
wget http://pecl.php.net/get/memcached-1.0.0.tgz
cd memcached-1.0.0/

#hacemos un phpize para generar el configurador
phpize

#compilamos
/configure
make
make install

Por último, con todas las descargas previas finalizadas, debemos crear el archivo /etc/php5/conf.d/memcached.ini; en ese archivo deberemos indicar lo siguiente para que PHP pueda activar de forma correcta esta extensión:

extension=memcached.so

Como en la gran mayoría de cambios que se realicen en un servidor web, para disponer de esta extensión habilitada es necesario reiniciar el servidor. Cuando el sistema se encienda nuevamente, php-memcached ya estará instalado y verás cómo mejora el rendimiento de tu web gracias a su uso.

Instalar LAMP (Linux+Apache2+MySQL5+PHP5) en openSuse 11.2

Publicado enSistemas TI

LAMP es el acrónimo formado por algunas de las herramientas más importantes y utilizadas en estos momentos para la creación de sitios web. Este completo sistema de infraestructura de internet está compuesto por el sistema operativo Linux, el servidor web Apache, MySQL como gestor de bases de datos y PHP como lenguaje de programación. Un conjunto de tecnologías que permiten desarrollar todo tipo de sitios web sin necesidad de más herramientas.

Como herramienta en sí misma, LAMP, concentra todas las ventajas del software de código abierto. Además, el uso de LAMP proporciona todos los conocimientos necesarios para desplegar cualquier tipo de aplicación web. Desde la puesta en marcha de un servidor Apache al desarrollo de la aplicación, así como de su posterior instalación en el servidor.

Así, puedes utilizar LAMP en diferentes distribuciones Linux, como por ejemplo openSUSE, una de las distribuciones más utilizadas del software libre. OpenSUSE permite, entre otras cosas, realizar desarrollos totalmente personalizados y posibilita el mantenimiento de nuevos sistemas operativos basados en Linux.

Instalación de LAMP en openSUSE

1. En primer lugar, deberás instalar los paquetes necesarios para poder obtener LAMP. Es decir, necesitarás contar con tres elementos: el servidor web Apache, el languaje de programación PHP y el gestor de bases de datos MySQL. Para ello, puedes ejecutar el siguiente código y realizar la petición a través de Bash:


# zypper install apache2 php5 mysql

2. Una vez los paquetes hayan sido descargados, el siguiente paso es levantar tanto Apache como MySQL. Para poder hacerlo, puedes recurrir nuevamente a Bash; escribiendo el siguiente fragmento de código cada uno de los elementos comenzará a ejecutarse.


# rcapache2 start
# rcmysql start

3. A continuación, será necesario crear una configuración segura en la que poder realizar la instalación de MySQL como sistema de gestión de bases de datos. Algo que, una vez más, es posible hacer a través de Bash.


# mysql_secure_installation

En este punto de la instalación, se nos pedirá que generemos una clave para el usuario root de MySQL. Entonces, deberemos eliminar cada uno de los usuarios anónimos creados por defecto y también la base de datos ‘test’ que también que el sistema crea de forma predeterminada. Todo ello sin olvidarnos de deshabilitar el login remoto con privilegios de root. De otra forma, la instalación no se podrá realizar de manera correcta.

4. Una vez MySQL haya sido instalado, abriremos el puerto 80. Este es el puerto por defecto que permite que HTTP pueda ejecutarse. Además, este puerto permite que se comuniquen entre sí el servidor web y el cliente haciendo posible que la información pueda entrar y salir del firewall.


# SuSEfirewall2 open EXT TCP http

# SuSEfirewall2 stop

# SuSEfirewall2 start

5. Llegados a este punto, solo nos queda comprobar que todas las aplicaciones que hemos ido instalado en los pasos anteriores funcionan de forma correcta. Para ello, basta con que ejecutemos las siguientes líneas de código:


# touch /srv/www/htdocs/phpinfo.php
# echo '<php phpinfo()>' > /srv/www/htdocs/phpinfo.php

Finalmente, deberemos acceder desde el navegador a http://ipserver/phpinfo.php. En este paso es necesario prestar atención y confirmar que las versiones más recientes de PHP y MySQL aparecen como instaladas. El uso de las últimas versiones estables de lenguajes de programación y servicios añaden seguridad a los servidores y aplicaciones, además de aumentar el número de funcionalidades.

Enviar correo con Gmail en PHP usando swift mailer 4

Publicado enDesarrollo y Programación

SwiftMailer es probablemente la mejor librería para enviar correos mediante smtp y sendmail que existe para php. Escrita en 2005 por Fabien Potencier, CEO de Sensio Labs y Lead developer del framework Symfony para php. Inicialmente, SwiftMailer formaba parte de un proyecto académico. Un desarrollo que posibilitaba el envío de correos recurriendo al protocolo SMTP (Simple Mail Transfer Protocol). Desde entonces, la librería ha estado en continua evolución, hasta llegar a convertirse en la biblioteca de complementos que conocemos en la actualidad.

Características de SwiftMailer

Al igual que muchos otros proyectos de código abierto, el desarrollo de SwiftMailer no hubiera sido posible sin la ayuda de la comunidad. SwiftMailer, además, permite enviar correos electrónicos directamente desde tu aplicación en PHP a cualquier servidor SMTP. Por lo que puedes utilizarlo para enviar al servicio de correo de Google: Gmail. Entre sus principales ventajas se encuentran su facilidad de configuración o la potencia de la librería. Usando esta librería, podrás enviar correos multimedia y consumir menos recursos.  En el caso de envío a gmail, además, podrás elegir el protocolo criptográfico: SSL o TLS.

SwiftMailer Gmail: enviando correo con SMTP

El siguiente código nos permite enviar correo usando el servidor smtp de gmail con esta herramienta:


 $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com',
                                               465,
                                               'ssl')
             >setUsername('usuario@gmail.com')
             >setPassword('tu contraseña');

 //Creamos el mailer pasándole el transport con la configuración de gmail
 $mailer = Swift_Mailer::newInstance($transport);

 //Creamos el mensaje
 $message = Swift_Message::newInstance($subject)
             >setFrom(array('tuemail@blackslot.gov' >'Blackslot'))
             >setTo($to_addresses)
             >setBody($body);

 //Enviamos
 $result = $mailer->send($message);

No podíamos terminar este artículo sin mencionar algún que otro plugin; aquellas pequeñas porciones de código que aumentan la funcionalidad de nuestra librería. Plugins para la aplicación de correo Swift Mailer:

  • AntiFlood plugin: la mayoría de los servidores SMTP están limitados en cuanto a cantidad de envío de mensajes. Este complemento permite administrar una gran cantidad de emails manteniéndose dentro de esos límites.
  • Decorator plugin: ¿necesitas enviar el mismo mensaje a múltiples destinatarios con ligeras variaciones en el cuerpo del mensaje? Decorator es la solución para permitir esas sutiles diferencias.
  • Logger plugin: su objetivo es identificar el porqué de que un servidor rechace direcciones o cualquier otro problema derivado del uso. En resumen, ayuda con la depuración en el proceso de envío.
  • Throttler plugin: a veces, el servidor SMTP tiene restricciones que limitan la velocidad en el envío de correos. Throttler consigue ejecutar Swift Mailer a una velocidad limitada.

Y, ¿si existen errores en el envío de emails? Consulta nuestro artículo para saber más acerca de los errores SMTP más habituales.

Extraer elementos de una lista HTML y exportarlos con PHP

Publicado enDesarrollo y Programación

Puede que en algún momento de nuestras apasionantes vidas como desarrolladores web nos interese extraer el contenido de cada uno de los elementos de una lista HTML. Algo que habitualmente suele ir encabezado por <li>,<option> o similares. También puede que queramos almacenar esa información en un array que nos permita utilizarlos a lo largo de nuestra aplicación en cualquier otro momento.

Una lista HTML no es más que un párrafo en el que se recogen secuencias de artículos estructurados. Es decir, parte del código de la página web ordenado y agrupado según diferentes criterios. El lenguaje de marcado HTML define tres tipos de listas, la lista ordenada, la no ordenada y la lista de definiciones. Pero, para exportar estas listas a un array con PHP, no importa cuál sea el tipo de la lista. Puesto que el método que vamos a emplear a continuación es igualmente válido para cualquiera de los tres tipos de listas.

Cómo exportar una lista HTML

Para pasar la lista en HTML a un array en PHP, hemos escrito la función preg_replace de PHP. Esta función hace precisamente eso, buscar una expresión regular y sustituirla por otra diferente. Además, esta función permite no sólo sustituir funciones, sino también caracteres y cadenas en una cadena de texto. El uso de preg_replace() es de gran utilidad para eliminar espacios en blanco en el código de la web; además de corregir faltas de ortografía como acentos o editar caracteres especiales y saltos de línea. También es de gran utilidad para la creación de URLs amigables que mejoren en posicionamiento SEO de la página web. Vamos, que prácticamente resulta imprescindible tener acceso a esta información.

Para recurrir a la función preg_replace, deberemos ejecutar un código similar al que mostramos a continuación:


function li2Array($html,$elemento="li"){

  $a = array("/<".$elemento.">(.*?)</".$elemento.">/is");
  $b = array("$1 <explode>");

  $html  = preg_replace($a, $b, $html);
  $array = explode("<explode>",$html);

  return $array;

}

Así, una vez enviada la petición, el resultado que devolverá la función será un array con toda la información que contuviera dicha lista en HTML. De esta forma, podremos utilizar esa información en cualquier otra aplicación recurriendo a PHP. Extrayendo la información del HTML evitamos tener que volver a introducirla de forma manual. Además, al ser compatible con PHP podremos utilizar esos datos en cualquier otra herramienta que sea compatible con PHP.

De esta forma cualquier modificación que vaya a realizarse en el código de la web será mucho más sencilla. Asimismo, el código será más limpio y ordenado y será más fácil actualizarlo a las nuevas versiones de PHP.

Y, como siempre, ¡mantente informado sobre PHP y mucho más en el mejor blog sobre programación!

Solución al error HTTP/1.1: 417 en PHP con cURL

Publicado enDesarrollo y Programación

Es habitual que cada vez que desarrollamos con PHP como lenguaje de programación hagamos uso de la librería cURL para poder hacer peticiones de tipo HTTP POST. Y a su vez, en cada uno de estos intentos, también es muy común que se produzcan algunos errores en la conexión. Como ejemplo de ello, podemos encontrarnos algunos errores cuando traremos de mostrar las cabeceras de respuesta. Algo similar a esto: «HTTP/1.1 417 Expectation Failed Connection: close Content-Length: 0«. Este error se produce cuando la solicitud de HTTP POST no puede procesarse. Esto, generalmente, se debe a que la sintaxis bien de PHP o bien de cURL, o incluso la sintaxis de ambas, no es correctas.

Cómo solucionar el error HTTP/1.1: 417

Una forma de solucionar este problema es enviar el campo Expect, una extensión que nos permite interactuar con diferentes procesos utilizando para ello PTY, un tipo de programación específica que permite la realización de determinadas tareas. Además, una buena utilización del campo expect favorece una interfaz más visual y sencilla que hará que la programación sea mucho más cómoda. Pero, volviendo al error HTTP/1.1., para que podamos corregirlo tendremos que enviarlo vacío dentro de las cabeceras HTTP de la petición que estamos a punto de realizar. Algo como lo que te mostramos en el siguiente ejemplo:


$ch = curl_init();

//metemos el campo expect en la cabeceras

curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers = array( "Expect:"));

En otras ocaciones, puede producirse un error HTTP/1.1 si se está intentando utilizar una cuenta IUSR como si de un dominio se tratase. Entonces, aparecerá el error ya que el controlador de dominios no puede ser capaz de autenticar la cuenta. Un error que resulta muy evidente ya que la cuenta IUSR no se trata de un dominio; sino que más bien está relacionada con el servidor web. Si este es tu caso tendrás que editar las cuentas que se muestran; así podrás leer el nombre de dominio de forma correcta.

Como siempre, no dudes en pasarte por nuestro blog para consultar las posibles dudas que te surjan en relación a cualquiera de nuestros servicios. Pero también puedes leernos para enterarte de las últimas novedades tecnológicas que van sucediéndose. En este espacio encontrarás información relacionada con el futuro de las aplicaciones móviles: Progressive Web App (PWA), todo lo referente a la tecnología cloud, nuestra especialidad como proveedores de servicios de internet, incluso la nueva versión de HTTP. Y todo lo que aún está por venir y que, a buen seguro, contribuirá a mejorar y revolucionar la informática.

Cómo activar o deshabilitar Safe Mode en nuestro panel

Publicado enSistemas TI

El Safe Mode o modo a prueba de fallos, es un modo de acceso usado por algunos sistemas operativos como Microsoft Windows, Mac OS X y otros dispositivos electrónicos. Aunque el nombre de Safe Mode no es correcto, puesto que no asegura al 100% el correcto funcionamiento del sistema operativo; si es una gran aproximación a esa operatividad casi total del SO.

En cuanto al Safe Mode, tenemos que tener en cuenta que un dispositivo que se encuentra en modo seguro tendrá unas funcionalidades reducidas. Es decir, es posible que algunas de sus funciones no estén disponibles en el Safe Mode del sistema operativo. Aún así, el equipo podrá funcionar con normalidad; ya que el sistema operativo en este modo permite aislar problemas ocasionados por componentes que no forman parte del sistema operativo base. Componentes que, por lo tanto, apenas deberían tener influencia en el comportamiento del ordenador.

Algunas aplicaciones o determinados gestores de contenido, como por ejemplo la plataforma WordPress, necesitan que el Safe Mode (Modo Seguro) no esté activo; para poder funcionar de forma correcta en un servidor. Para realizar este cambio requerido por WordPress, podemos recurrir al panel de control Plesk. Como verás a continuación, esto se puede controlar de una forma sencilla, sin necesidad de tocar ninguna línea de código. Así que vamos a ver cómo puedes deshabilitarlo para que tu WordPress funcione correctamente.

Activar o deshabilitar el Safe Mode

1) En primer lugar, deberás iniciar sesión en tu panel de control. Una vez dentro de tu suscripción, accede a los Ajustes de alojamiento.

ajustes de alojamiento web-activar-safe mode

2) Allí, deberás buscar el apartado de soporte para PHP; el lugar en el que puedes activar o desactivar la función php_mode.

activar-deshabilitar-Safe Mode

En este caso nos interesa desactivar el Safe Mode a fin de que WordPress pueda funcionar de la forma más correcta. Pero si en otro momento necesitas, o quieres, reactivarlo solo tendrás que seguir los mismo pasos para que tu CMS vuelva a modo seguro. Como ves, activar o desactivar Safe Mode no tiene ningún misterio. Además de ser algo que puedes hacer tú mismo y que apenas te llevará unos segundos.

Las últimas versiones de WordPress ya no requieren de la desactivación del modo seguro para funcionar; ya que no es necesario con su nueva configuración por defecto. En el caso de que tu versión de WordPress requiera de desactivar el Safe Mode, nuestra recomendación es que actualices tu PHP a una versión más reciente y, sobre todo, segura. Desde 2019, tu WordPress no debería utilizar una versión de PHP inferior a 7.1.

Si prefieres delegar en manos expertas todas las cuestiones relacionadas con la parte técnica de tu WordPress; o del servidor en el que se aloja, puedes contratar nuestro servicio de Adminstración para WordPress. Un nuevo servicio que incluye la actualización de la plataforma, la realización de copias de seguridad y monitorización proactiva. De esta forma, tu web siempre estará segura.

Mientras tanto, puedes mantenerte al día de todas las novedades del sector gracias a nuestro blog. No hay novedad informática que se nos escape.

Cargar extensión de PHP desde código en tiempo de ejecución

Publicado enDesarrollo y Programación

Las extensiones de PHP son una parte muy importante dentro del lenguaje de programación. Una extensión de PHP no es más que un ‘módulo’ que le permite al motor de PHP añadir una determinada funcionalidad. Aunque, por norma general, las extensiones que necesitas en condiciones normales vienen ligadas a la distribución de PHP que estés utilizando; es posible que por las características de proyecto necesites añadir nuevas funcionalidades. Algo que solo puedes hacer cargando esas extensiones.

Como el lenguaje en el que operan, una extensión de PHP suele estar escrita en C; y requerir de DLL para poder compilarlas o cargarlas. En este caso, si quieres cargar una extensión de PHP, puedes hacerlo de dos formas. Por un lado, puedes optar por compilar la extensión que necesites; o, por otro puedes obtenerla cargando el DLL. La opción más recomendada es mediante DLL. Pero, para ello, dicha extensión deberá primero encontrarse como fichero .dll en tu sistema. En el caso de que no la encuentres, tendrás que compilarla.

Aunque las extensiones más habituales suelen venir por defecto con el lenguaje de programación PHP, siempre puedes añadir alguna nueva. Algo que en la mayoría de los casos puedes obtener desde la PECL (Biblioteca de la Comunidad de Extensiones de PHP). Esta biblioteca no es más que un repositorio de extensiones de PHP donde se encuentran las más utilizadas. Y también el lugar en el que puedes desarrollar tus propias extensiones para PHP y compartirlas con la comunidad de desarrolladores.

Cargando una extensión de PHP

Para cargar una extensión en tiempo de ejecución en PHP podemos incluirla dentro del fichero php.ini de configuración. Para ello, deberemos recurrir a la función dl(). Lo habitual es que una extensión de PHP se escriba de la siguiente manera: «php_nombre de la extensión».dll. Y suele ser igual de habitual que dicha extensión se encuentre junto a «PHP\ext». En este caso, si quisiéramos cargar una extensión que pueda conectarse a una base de datos MySQL, deberíamos hacer lo siguiente:

if(!extension_loaded("mysql")){
  dl("php_mysql.".PHP_SHLIB_SUFFIX);
}

Aquí, el valor de la constante PHP_SHLIB_SUFFIX almacena la extensión que tendría una librería dependiendo el sistema operativo en el que corra nuestra aplicación.

Recuerda que, tras cargar y activar una nueva extensión de PHP, deberías reiniciar el servidor. Solo mediante un reinicio es posible confirmar que se han aplicado los cambios y comprobar que la nueva extensión cuenta con su propia sección. Es decir, que se ha cargado de una forma correcta.

Si quieres saber mucho más acerca de PHP y otros lenguajes de programación, sigue leyendo nuestro blog tecnológico y no te pierdas los artículos y novedades relacionadas con PHP como el post de cómo instalar extensión php-memcached en Suse Linux.

Ordenar arrays asociativos en otro array con PHP

Publicado enDesarrollo y Programación

Hay algunas veces en las que disponemos de un array que contiene a su vez varios arrays asociativos. Y que, a su vez, estos pueden contener más información. Como por ejemplo los datos obtenidos tras realizar una consulta a la base de datos.

Es posible que dicho array esté cacheado y que, por ello, no queramos atacar a la base de datos para ordenar esos resultados. Es decir, que queramos ordenar la información pero sin tener que modificar nada en la base de datos. En esta situación, nos vendría genial poder ordenar los arrays asociativos que contenga dicho array de alguna forma fuera de la base de datos. Todo ello en base a cada uno de los valores que contenga una de las claves de los mismos.

Todo esto, podemos verlo mucho más claro a través de un ejemplo. Pongamos que tenemos un array que contiene nombres y apellidos y queremos ordenar esa información. Para ello deberemos recurrir a un array como, por ejemplo, el siguiente:


$resultados = array(

array(

      'id' =&gt; 1,
      'nombre' =&gt; 'Enjuto',
      'apellido' =&gt; 'Mojamuto'

     ),

array(

      'id' =&gt; 2,
      'nombre'  =&gt; 'Marlo',
      'apellido'  =&gt; 'Brando'

     )

);

Funciones de PHP

Pra realizar esta misma tarea, en PHP disponemos de múltiples funciones. Entre tantas funciones destaca una: la función usort(). Esta función de PHP sirve para ordenar elementos dentro de una base de datos en base a una función de comparación. Este es un criterio que nosotros mismos podemos especificar según los resultados que nos interese obtener. Por lo que si queremos obtener diferente información, podemos ordenar los datos de la base de datos de maneras distintas.

Por ejemplo, si quisiéramos ordenar los datos contenidos en la base de datos según la clave ID, en orden descendiente; deberíamos ejecutar una función de un aspecto similar a la siguiente:


function comparar($x, $y){

          if ( $x['id'] == $y['id'] )
             return 0;
          else if ( $x['id'] &gt; $y['id'] )
             return -1;
          else
             return 1;

}

Ahora, para que usort() pueda utilizar función, deberemos llamarle e indicarle que haga la acción que queremos. De otra manera, usort() no sabrá qué es lo que tiene que hacer ni de dónde tiene que obtener esa información. Pero facilitarle las cosas a la función usort() bastará con ejecutar un código similar a este:


//si no estamos en un entorno Orientado a Objetos
usort($resultados, array('comparar'));

//si estamos en un entorno Orientado a Objetos
usort($resultados, array('nombreDeClase','comparar'));

Una vez hayas ejecutado el código que te indicamos, tus arrays estarán ordenados. Y, para ello, no habrás tenido que realizar ningún tipo de modificación en el contenido de tu base de datos.

¿Sabes cómo crear consultas select count en PHP? Para ampliar tus conocimientos sobre PHP, sigue de cerca nuestro blog tecnológico.

Validar un nombre de dominio en PHP

Publicado enDominios

Para saber si un dominio está disponible, o para poder validarlo, las expresiones regulares son una buena opción. Un tipo de expresiones que son de gran utilidad para los programadores ya que permiten detectar cualquier tipo de posibles patrones. Gracias a estas expresiones, encontrar elementos de código nos llevará un tiempo mucho menor. Pero también puedes utilizar estas expresiones regulares para cualquier otra tarea; como por ejemplo para comprobar direcciones de correo electrónico o para validar un nombre de dominio. Esta última opción puede resultarte muy útil si estás pensando en registrar un nuevo dominio para iniciar un proyecto web.

Si quieres comprobar la disponibilidad de un dominio, antes podías realizar una sencilla búsqueda en WHOIS. Un servicio que, con la nueva normativa en materia de protección de datos RGPD, ha visto reducidas unas funcionalidades que hasta hace solo unos meses eran de gran utilidad. WHOIS es una base de datos que contenía amplia información acerca de los dominios de internet. En ella podías encontrar desde el nombre del propietario, una dirección física asociada o las fechas de caducidad y renovación del dominio. Además, el WHOIS también servía como intermediario entre los registradores de dominio y los registratarios. Todo ello antes de la llegada del RGPD; en la actualidad gran parte de esa información permanece oculta. Algo similar al servicio de WHOIS privado que antes ofrecían algunos proveedores de hosting.

Validar dominio utilizando PHP

Pero, si lo prefieres existen otras opciones que te permitirán validar un nombre de dominio. Por ejemplo, puedes utilizar PHP; una opción muy útil si tenemos en cuenta que otras vías, como WHOIS, ya no están disponibles o no ofrecen toda la información que necesitaríamos.

Si te decantas por validar dominios utilizando PHP, tienes que tener en cuenta que deberás contar con ciertos conocimientos de código. Si este es tu caso, y para que todo sea mucho más sencillo, te recomendamos recurrir a una expresión regular. Validar un nombre de dominio en PHP a través de una de estas expresiones regulares apenas te llevará unos segundos y unas cuantas líneas de código. De esta forma, podrás saber si el dominio que quieres registrar está disponible antes de que se te adelanten.

Para validar un nombre de dominio, utiliza la siguiente expresión:


$domain = "linube.com";
$expr   = '/^(([a-z0-9]([-a-z0-9]*[a-z0-9]+)?){1,63}.)+[a-z]{2,6}/i';

if(preg_match($expr,strtolower($domain))){
  echo "el dominio es válido";
}else{
  echo "el dominio no es válido";
}

Una vez hayas ejecutado el código, obtendrás el resultado de tu petición: si el dominio es válido y, por tanto, puedes registrarlo; o si no lo es porque ya ha sido registrado con anterioridad y aún permanece activo.

Si, por el contrario, lo que quieres es migrar o transferir tu dominio, no encontrarás mejor opción que acudir a nosotros. ¡Ofrecemos precios ajustados y un servicio de calidad para tu nombre en internet!

IIS7, reglas de URL rewrite que deberías conocer

Publicado enDesarrollo y Programación

Cada vez es más importante disponer de una buena arquitectura de URLs en nuestras aplicaciones y sitios web. Arquitecturas de servicios como REST y la importancia de optimizar el SEO de cara a resultados de búsquedas; suelen ser los dos motivos más importantes para que nuestra aplicación necesite disponer de su propia estrategia de URLs coherente al contenido que se ofrece. Para realizar esta tarea, puedes recurrir a IIS7.

IIS7 (Internet Information Server) es un conjunto de servicios para servidores que utilicen Windows como sistema operativo. Una aplicación integrada en el sistema operativo que resulta muy fácil de administrar. Desde hace ya dos años, IIS goza de su propio sistema de URL rewrite nativo, lo que nos permite de una forma muy sencilla aplicar las reglas necesarias para implementar nuestra estrategia de URLs. IIS7 incluso permite crear certificados de seguridad SSL autofirmados, pero este tema lo trataremos en otro artículo.

A lo largo de los últimos años, hemos ido recopilando algunas de estas reglas. A continuación mostramos aquellas más necesarias para que tu estrategia de URLs obtenga los mejores resultados.

Eliminar la última barra «/» de la URL

Por ejemplo, si quieres eliminar la barra final de tu URL, deberías añadir unas líneas de código como las siguientes. De esta forma, aunque tu URL haya cambiado, el tráfico se redirigirá a la nueva dirección.


<rule name="Eliminar la ultima barra en la url" stopProcessing="true">

 <match url="(.*)/$" />
 <conditions>
     <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
 </conditions>
<action type="Redirect" redirectType="Permanent" url="{R:1}" />
</rule>

Agregar la última barra «/» a la URL

<rule name="Agregar la ultima barra a la url" stopProcessing="true">

 <match url="<span><span>(.*[^/])</span></>$" />
 <conditions>
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
 </conditions>

<action type="Redirect" redirectType="Permanent" url="{R:1}/" />
</rule>

Convertir toda la URL a minúsculas

<rule name="Forzar toda la url a minusculas" stopProcessing="true">

    <match url=".*[A-Z].*" ignoreCase="false" />
     <action type="Redirect" url="{ToLower:{R:0}}" redirectType="Permanent" />

</rule>

Quitar las www del hostname

<rule name="Quitar las www" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
       <add input="{HTTP_HOST}" negate="true" pattern="^linube.com$" />
   </conditions>
    <action type="Redirect" url="https://linube.com/{R:1}" redirectType="Permanent" />
</rule>

Añadir las www al hostname

<rule name="Añadir las www" stopProcessing="true">
      <match url="(.*)" />
     <conditions>
        <add input="{HTTP_HOST}" negate="true" pattern="^www.linube.com$" />
     </conditions>
    <action type="Redirect" url="https://www.linube.com/{R:1}" redirectType="Permanent" />
</rule>

Forzar HTTPS

<rule name="Forzar https" stopProcessing="true">

     <match url="(.*)" />
     <conditions>
        <add input="{HTTPS}" pattern="^OFF$" />
     </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
</rule>

Rechazar hotlinking a imágenes

<rule name="Rechazar hotlinking" stopProcessing="true">

     <match url=".*.(gif|jpg|png)$"/>
     <conditions>
       <add input="{HTTP_REFERER}" pattern="^$" negate="true" />
      <add input="{HTTP_REFERER}" pattern="^https://linube.com/.*$" negate="true" />
     </conditions>
     <action type="Rewrite" url="/images/gandalf_nopuedespasar.jpg" />
</rule>

WordPress

<rule name="Wordpress" stopProcessing="true">

           <match url="*" />
           <conditions>
               <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
               <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="index.php" />

</rule>

Symfony (producción)

<rule name="Symfony" stopProcessing="true">

     <match url="^(.*)$" ignoreCase="false" />
       <conditions logicalGrouping="MatchAll">
          <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
          <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
     </conditions>
    <action type="Rewrite" url="index.php" appendQueryString="true" />

</rule>

Nuevos servicios para ASP.NET MVC y PHP bajo Windows

Publicado enDesarrollo y Programación

Durante los últimos meses hemos estado preparando nuevos servicios que nosotros mismos echábamos en falta. Un nuevo servicio que permitiera albergar proyectos desarrollados con las últimas tecnologías de servidor Microsoft. Combinados con programación web con ASP.NET, más concretamente, con su nuevo framework MVC.

El framework MVC de ASP.NET

Este framework permite utilizar una filosofía de desarrollo web totalmente distinta al desarrollo con web forms tradicionales. Permitiendo desarrollar aplicaciones web de una forma ágil en pocos días con una arquitectura REST. Algo que ya vienen permitiendo frameworks de tecnologías open source como Symfony, Zend Framework, Ruby on Rails, Django entre otros.

Esto abre un amplio y esperado abanico de posibilidades a desarrolladores .NET. Desarrolladores que quieran un control más amplio sobre cada una de las partes de la arquitectura de su aplicación. A pesar de su corta historia, este framework tiene ya a sus espaldas varios casos de éxito, como es por ejemplo el de StackOverflow, una comunidad imprescindible para todo desarrollador web.

Nuestros nuevos servicios tienen soporte nativo para este framework. Además de otras características muy interesantes como bases de datos en SQL Server 2008 accesible directamente desde VisualStudio 2008 y 2010. Y que trae consigo una serie de características simplemente excepcionales frente a su versión anterior. Como puede ser soporte para Silverlight 3 que presenta formas de servir contenidos multimedia de una forma nunca  antes vista. Un módulo de rewrite nativo de IIS7 para generar URLs amigables cara al SEO de tu aplicación. Que es, además, totalmente compatible con reglas de Apache. Unos nuevos servicios que podrás integrar con las últimas versiones de muchos CMS como WordPress; y sin tener que instalar módulos como ISAPI Rewrite.

También en PHP

No nos hemos olvidado de las aplicaciones PHP, tecnología que adoramos en Linube. Y creemos que hemos conseguido el mejor alojamiento para las mismas bajo entornos Microsoft. Contamos con la última versión de PHP, la 5.3, versión a la que te invitamos a migrar cuanto antes.

Dicha versión, a fecha de escribir este post, es una regla de oro que tenemos como prioridad de mantener; y que además funciona sobre fastcgi para IIS7. IIS7 ha demostrado que es capaz de superar en rendimiento a otros servidores web, de otras plataformas, sirviendo aplicaciones web PHP de alto tráfico como es el caso de Battle Stations.

Hemos pensado también en ellos, con servicios de correo como mailEnable, que permite de una forma muy eficiente disponer, además de buzones de correo, de contactos, tareas y calendarios. Todo ellos desde una interfaz web accesible desde cualquier navegador con un look and feel muy cuidado, sincronizable con el móvil y Outlook.

Nuestro panel de control Plesk 9, especialmente adaptado para este servicio, hará de una forma fácil y cómoda toda la gestión de sus cuentas de correo, espacio web, dominios y todas esas cosas que crean «la magia» para que todo funcione como debe.

Por supuesto nos tenéis a vuestra disposición para atender vuestras dudas y si tenéis alguna idea o sugerencia. Ya sea sobre ASP.NET, ISS, Plesk o cualquier otro tema.

Y si os falta algo en estos nuevos servicios de Linube y creéis que podríamos mejorarlo de alguna forma, ¡contádnoslo!