CodeIgniter es uno de lo los muchos frameworks PHP que existen hoy en día. Para describir qué es un framework que mejor que una definición de la Wikipedia:

En el desarrollo de software, un framework es una estructura de soporte definida en la cual otro proyecto de software puede ser organizado y desarrollado. Típicamente, un framework puede incluir soporte de programas, bibliotecas y un lenguaje interpretado entre otros software para ayudar a desarrollar y unir los diferentes componentes de un proyecto.

Lo primero que necesitamos es descargar la última versión de CodeIgniter, nosotros trabajaremos con la versión 1.6.1 que es la última hoy en día. Una vez descargada descomprimimos el archivo .rar y veremos una estructura tal que así:

[code]
/system/
/user_guide/
/index.php
/license.txt
[/code]

En la carpeta system hay todo el contenido del framework: helpers, librerías, plugins… Y lo más importante, la carpeta application que es realmente donde nuestra aplicación va a estar. Acto seguido tenemos el directorio user_guide, es la misma Guía del Usuario (en inglés) que hay en la web de CodeIgniter. A mi me parece una de las mejores guías que he leído nunca. El index.php gestiona la aplicación y el liecense.txt es la licencia, seria interesante que la leyerais.

Requisitos

  • Servidor
    • PHP 4.3.2 o superior
    • Una base de datos es lo más común en este tipo de aplicaciones, hay soporte para: MySQL (4.1+), MySQLi, MS SQL, Postgre, Oracle, SQLite y ODBC.

Instalación

La instalación de este framework es muy sencilla, y más si dejamos la configuración del mismo para otro apartado. Solo deberíamos subir los archivos a nuestro servidor (configurados) y ya estaría lista pero por motivos de seguridad, nosotros vamos a cambiar la jerarquía de los directorios. De un amigo, Víctor Román, aprendí que el acceso a la aplicación solo debería tenerla el servidor por lo que los directorios como application y system no deberían ser públicos. Para realizar esto usaremos un truco que, obviamente, podéis saltar si no os interesa o vuestro hosting no os lo permite.

Para empezar, necesitamos saber si podemos hacer una redirección de un dominio o subdominio, por ejemplo blog.ipalaus.es, a /ipalaus_es/subdominios/blog/public_html. Esto nos permitirá tener nuestros archivos del blog en un mismo directorio pero los públicos solo estarán en la carpeta public_html. Para empezar crearemos el directorio public_html en nuestra versión local y moveremos a esa misma carpeta el archivo index.php que teníamos en la raíz. Otra manía personal es poner los directorios application y system separados, porque podríamos, por ejemplo, usar siempre el mismo system para 3 o 4 aplicaciones y solo actualizar uno en vez de tener que hacerlo para cada uno… Así que movemos el application fuera de system. Debería quedarnos una jerarquía tal que así:

[code]
/application/
/public_html/
/public_html/index.php
/system/
[/code]
(El license.txt y la carpeta user_guide han sido borrados)

Ahora accedemos a editar el /public_html/index.php con cualquier editor de texto. Y editamos las siguientes lineas:

Archivo: /public_html/index.php, Línea: 26
[code lang="php"]
$system_folder = "../system";
[/code]

Archivo: /public_html/index.php, Línea: 43
[code lang="php"]
$application_folder = "../application";
[/code]

Y con esto ya tenemos configurada nuestra jerarquía. Ahora toca hacer una configuración básica del sistema.

Configuración

La configuración básica de nuestra aplicación se basará en la configuración de los archivos config.php y database.php, ambos en /application/config/. Para empezar, el config.php, lo abrimos con nuestro editor de textos favorito. Hay algunas cosas que simplemente las paso por alto, variables que no nos hacen falta para nada en una configuración básica.

Archivo: /application/config/config.php, Línea: 14
[code lang="php"]
$config['base_url'] = "http://blog.ipalaus.es/";
[/code]

La variable $config['base_url'] corresponde a la dirección que CodeIgniter interpretará como base cuando tenga que incluir ficheros o similar. Es muy importante que sea correcta. Otros ejemplos podrían ser: http://localhost/blog, http://www.ipalaus.es/

Archivo: /application/config/config.php, Línea: 26
[code lang="php"]
$config['index_page'] = "index.php";
[/code]

Esta variable la usaremos en caso de que hayamos renombrado nuestro archivo index.php (en /public_html), cosa que dudo… De todos modos, si queremos usar mod_rewrite de Apache tendremos que dejar en blanco. En otra entrada explicaré como usar mod_rewrite en CodeIgniter.

Archivo: /application/config/config.php, Línea: 57
[code lang="php"]
$config['url_suffix'] = "";
[/code]

Hay gente que tiene la “manía” de ponerle sufijos a las direcciones web… Quizá para ocultar que realmente es PHP o poner una extensión significativa. Si pusiéramos algo tipo $config['url_suffix'] = “html”;, todas las direcciones nos saldrían tipo: http://blog.ipalaus.es/entradas/codeigniter-configuracion-basica.html, siendo este archivo, PHP.

Archivo: /application/config/config.php, Línea: 69
[code lang="php"]
$config['language'] = "spanish";
[/code]

Desde la web de uno de los creadores de CodeIgniter, Derek Allard, podemos descargar el archivo de idioma spanish. Su instalación es tan sencilla como, descomprimir el fichero y mover su contenido a /application/language/spanish/. Dentro del directorio spanish deben estar los archivos .php y no ningún directorio más. Este archivo de lenguaje es, generalmente, para errores y mensajes relacionados con las librerías del framework.

Archivo: /application/config/config.php, Línea: 234-241
[code lang="php"]
$config['sess_cookie_name'] = 'blogipalaus_session';
$config['sess_expiration'] = 7200;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = FALSE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
[/code]

Esta parte es usada solo si usamos sesiones en nuestras aplicaciones… Aunque si vamos a usar PHP para programar nuestro sitio web, lo más probable es que las usemos. Lo más característico de esta parte es poder usar la base de datos para gestionar las sesiones. Si lo quisiéramos, deberíamos cambiar la variable $config['sess_use_database'] a TRUE.

Archivo: /application/config/config.php, Línea: 266
[code lang="php"]
$config['global_xss_filtering'] = TRUE;
[/code]

Activaremos el filtro de XSS por si las moscas… Nunca se sabe ;-) .

Ahora ya hemos terminado con el config.php y pasamos a la configuración de database.php que, obviamente, es más sencilla. En CodeIgniter es posible usar varios perfiles de base de datos, por si tenemos una base de datos de desarrollo y una de producción o miles de configuraciones más.

Archivo: /application/config/config.php, Línea: 40-51
[code lang="php"]
$db['default']['hostname'] = "localhost";
$db['default']['username'] = "ipalaus";
$db['default']['password'] = "ejemplo";
$db['default']['database'] = "blog";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";
[/code]

Como podéis comprobar es bien sencillo. Colocar el nombre de usuario, la base de datos, el host de la misma… Si quisiéramos usar una base de datos diferente a MySQL deberíamos cambiar el $db['default']['dbdriver'] por el deseado. A parte, es posible usar cache para las consultas MySQL… pero es algo bastante avanzado y que a usuarios de a pié no es muy necesario.

Conclusión

Espero que esta pequeña introducción a CodeIgniter, a nivel muy básico, sirva a alguien para animarse a programar usando este framework. Pretendo continuar añadiendo configuraciones y pequeños programas y ejemplos para que podáis incrementar vuestro nivel de conocimiento en CodeIgniter.

Descarga CodeIgniter en Español y semiconfigurado: CodeIgniter_1.6.1-spanish.rar