Archivo

Entradas Etiquetadas ‘CodeIgniter’

XtraUpload, un “Megaupload” en CodeIgniter

Sábado, 21 de Marzo de 2009

Vía Webmastelibre me entero de que existe un software gratuito creado en CodeIgniter que nos permite fácilmente crear nuestro propio sistema de “uploads” de archivos, que ahora están de moda los típicos “Rapidshare”, “MegaUpload”, etc..

Si mas no es interesante echarle un vistazo a estas herramientas, ya que así podemos ver como están hechas las aplicaciones reales puesto que aquí normalmente trabajamos sobre tutoriales de ejemplos simples de aplicaciones.

XtraUpload, que asi se llama la aplición está escrito en PHP usando, como ya hemos dicho, el Framework de CodeIgniter. Tiene todas las caracteristicas que te esperarías para este tipo de paginas:

  • Control de usuarios, tanto gratuitos como “Premium”.
  • Usuarios Premium tienen opciones interesantes adicionales.
  • Puedes especificar tipos de fichero, tamaños y en general configurar la aplicación a tu gusto.
  • Permite pagos con PayPal y otros.

Lo interesante tambien de estas aplicaciones es indagar un poco en el codigo y ver como hacen determinadas cosas, como utilizan ciertas librerias, tanto de CodeIgniter como creadas por ellos mismos. Yo os recomiendo que echeis un vistazo de:

  • Como está hecho todo el tema de verificación de usuarios (login, etc..)
  • Todo lo referente a las descargas de archivos, control deMB bajados, y otras caracteristicas
  • Como hacen para conectar con las pasarelas de pagos de PayPal, 2CheckOut, MoneyBrokers, StormPay y eGold.
  • Upload, como lo gestionan, como lo controlan, etc.
  • Como funcionan con los templates y themes.

Yo la verdad que le he pegado un vistazo y he encontrado muchas cosas interesantes, y esta es otra manera de aprender.

Lagarto Aplicaciones reales, CodeIgniter , , , , , , , , , , , ,

Usando ‘Hooks’ en CodeIgniter

Martes, 17 de Marzo de 2009

Muchas veces nos encontraremos, al programar nuestras aplicaciones, que necesitamos realizar una tarea en todas las paginas por igual, en un mismo momento. Hay una solución para eso, muy muy mala, que es hacer un copy&paste del código en todas las paginas (si.. si.. quien no ha hecho eso alguna vez…).

Por suerte CodeIgniter nos trae de la mano una buena herramienta llamada ‘Hooks’ o ganchos, que simplemente nos permite hacer eso, ejecutar determinadas funciones en un determinado momento.

El “determinado momento”, básicamente puede ser:

  • pre_system: al principio de la ejecución del sistema, sin haber cargado básicamente nada.
  • pre_controller: ejecutar antes de cargar el controlador, una vez cargadas las librerías y todo el systema básico.
  • post_controller_constructor: justo se ejecutar tras el constructor del controlador pero antes de cualquier función.
  • post_controller: se ejecutará una vez lo haya hecho el controlador.
  • display_override: esto es para sobrescribir la función que nos muestra la pagina finalizada en el navegador.
  • cache_override: lo mismo pero para la función de cache, nos permite sobreescrivirla.
  • scaffolding_override: para crear nuestro propio scaffolding.
  • post_system: ejecutará el código al final de todos los procedimientos.

En la user_guide de Codeigniter podréis encontrar esta información más extendida.

Bien, para que quede más claro, vamos a ver un ejemplo. En este caso supondremos que estamos trabajando en una página web multilenguaje. Y queremos crear un ‘hook’ que nos lea una variable de sesión que contiene el idioma que hay seleccionada y con eso nos cargue el idioma especificado (para los que no sepáis como funciona la “language class”, echarle un vistazo en la guía).
Leer más…

Lagarto CodeIgniter, Programación web , , , , , , ,

Extender Helpers en CodeIgniter

Lunes, 16 de Marzo de 2009

Los ‘Helpers‘ de CodeIgniter son básicamente pequeñas librerías con 4 o 5 funciones que nos dan funcionalidades que nos ayudan con los problemas típicos al crear webs. A medida que vayamos experimentando y avanzando con la programación de una web nos encontraremos con que necesitamos añadir nuevas funcionalidades a los helpers existentes o a veces modificar las que ya están hechas.

Podemos pensar en ir a la carpeta “system” ahí buscar el helper y modificarlo. Si, se puede hacer pero es una manera muy “guarra” de proceder, básicamente por dos razones:

  • Nos actualizan el CodeIgniter y coincide que modifican ese helper, vamos a tener un problema.
  • Queremos reutilizar código, es muy engorroso ir haciendo copy&paste de funciones de algunos helpers.

Leer más…

Lagarto CodeIgniter, Programación web , , , , ,

Generar imagenes dinámicamente en CodeIgniter

Viernes, 13 de Marzo de 2009

A veces nos puede interesar crear imágenes dinámicamente a partir de alguna que ya tengamos alojada en nuestro servidor, a continuación veremos como hacerlo con la ayuda de CodeIgniter.

Una imagen generada dinámicamente puede tener varias ventajas como por ejemplo:

  • Podemos controlar fácilmente cuanta gente la esta viendo
  • Restringir la visión de esta a los usuarios que queramos
  • Evitar que los usuarios tengan acceso a la imagen original
  • Poder generar una imagen del tamaño que queramos según convenga
  • Generar thumbnails, o modificaciones de la imagen original sin tener que generar copias

Esta ultima ventaja también nos trae a la desventaja, según lo que queramos, ya que al generar una imagen dinámicamente en PHP lo que estamos haciendo es aligerar la carga en el disco duro pero augmentar el tamaño del procesamiento, con lo que estamos cargando al servidor. Leer más…

Lagarto CodeIgniter, Programación web , , , , , ,

Empezamos con CakePHP

Sábado, 27 de Diciembre de 2008

 

Bueno creo que ya van bastantes artículos sobre CodeIgniter, al menos -creo yo- para dar una base bastante buena a gente que empiece con él para que se pueda desenvolver en aplicaciones complejas. No es que me haya cansado o algo parecido, pero por razones de trabajo ahora tengo que “aprender” a usar otro framework de PHP, en este caso el agraciado es CakePHP.

En un primer vistazo puedo ver como tiene cosas muy parecidas a CodeIgniter (claro los dos son frameworks que siguen el modelo MVC) pero este es mucho mas estricto en ese tema.

Así que he pensado, porque no compartir con los lectores mi camino de aprendizaje de este nuevo framework, porque a veces es la mejor manera de aprender, con alguien que mas o menos esta a tu mismo nivel y que tiene los mismo problemas o dificultados a la hora de enfrentarse a este framework.

Por lo que de ahora en adelante creo que intentare focalizar algo mas en CakePHP, que la verdad que tiene mas “tela” que CI y es bueno saber un poco de todo para no encontrarte sorpresa en un futuro ¿no?

 

 

Enlaces: CakePHP

Lagarto CakePHP , , ,

Subidor de Imagenes (Segunda parte): Base de datos y vistas

Jueves, 18 de Septiembre de 2008

Como siempre, el taller para esta aplicación ira enfocado a conseguir una idea o noción básica sobre el tema, es decir yo os doy una base para que podáis trabajarla y ampliarla según vuestras necesidades.

Dicho esto empezaremos creando la tabla de la base de datos que necesitaremos, como he dicho todo muy simplificado. Necesitaremos un campo que nos diga el nombre de la imagen, otro de ID, uno de fecha y otro de IP para saber desde donde nos suben esas imágenes, por si hubiese abuso esta sería una buena medida de controlarlo.

CREATE TABLE IF NOT EXISTS `imagenes` (
  `id` int(11) NOT NULL auto_increment,
  `imagen` char(255) NOT NULL,
  `fecha` int(11) NOT NULL,
  `ip` char(20) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

Como veis es todo bastante simple. Podríais añadir campos como el nombre original de la imagen (dado que vamos a modificar su nombre por un hash), tamaño, en caso de que lo hagáis con usuarios pues la ID del usuario y un largo etcétera.

Después de crear la base de datos necesitaremos tener las vistas, es decir lo que el usuario verá. Primero crearemos el formulario para subir la imagen, muy simple, con un simple campo de archivo para que nos suban la imagen.

<fieldset>
	<legend>Subir imagen</legend>
	<form action="index.php/imagenes/index/do" method="post" enctype="multipart/form-data">
		<label for="imagen">Imagen</label>
        <input type="file" name="imagen" id="imagen" />
        <br />
        <label></label>
        <input type="submit" value="Subir" />
	</form>
</fieldset>

Luego crearemos la vista donde se informara al usuario del éxito al subir su fichero y la típica información como podría ser el link, el código para los foros (BBCode) para incluir la imagen con su miniatura, etc..

<p><strong>Tu imagen se ha subido correctamente!</strong></p>
<p>
	<strong>Link de tu imagen</strong>
    <br />
    <a href="<?=base_url();?>uploads/< ?=$file_name?>">< ?=base_url();?>uploads/< ?=$file_name?></a>
</p>
<p>
	<strong>Para foro</strong>
    <br />
    <textarea cols="50" rows="5">[url=< ?=base_url();?>uploads/< ?=$file_name?>][img]< ?=base_url();?>uploads/< ?=$file_name?>[/img][/url]</textarea>
</p>
<p>
	<strong>Para foro con miniatura</strong>
    <br />
    <a href="<?=base_url();?>uploads/< ?=$file_name?>"><img src="<?=base_url();?/>uploads/< ?=$raw_name?>_thumb< ?=$file_ext?>" /></a>
    <br />
    <textarea cols="50" rows="5">[url=< ?=base_url();?>uploads/< ?=$file_name?>][img]< ?=base_url();?>uploads/< ?=$raw_name?>_thumb< ?=$file_ext?>[/img][/url]</textarea>
</p>

Como veréis, uso algunas variables como $file_name que son un array de variables que nos devolverá la función de UPLOAD (subir el fichero) de la librería de CodeIgniter, por el momento os lo creéis y lo veremos en el siguiente artículo. Aun así si queréis ver que variables se nos devuelven y como funciona por encima la librería podéis verlo aquí.

Hasta la siguiente parte ;)

Lagarto Subidor de imagenes , , , , ,

Subidor de Imagenes (Primera parte): Planificación

Martes, 16 de Septiembre de 2008

Hay muchas veces que no se me ocurren ideas para publicar artículos de la nada, sino que cuando estoy trabajando en alguna aplicación para mí o para asuntos profesionales pienso: “anda! esto quizá le interesa a alguien que lea el blog”.

Últimamente veo que esta muy de moda páginas como ImagesHack o Photobucket que son páginas que simplemente dejan al usuario subir una imagen de su ordenador a uno de los servidores para que luego se pueda mostrar a cualquier otra persona, normalmente se suele usar para foros y sitios públicos de este tipo.

Así que todo esto me viene muy bien para introduciros dos clases muy importantes en el CodeIgniter: File Uploading Class, que es la que nos ayudará a subir la imagen, controlar todos los parámetros de esta acción y demás. La segunda clase será la Image Manipulation que nos permitirá en este caso crear un thumbnail (una imagen en miniatura) de la versión original para mejor inserción en foros y otros sitios.

La aplicación será muy sencilla y constará de dos grandes pasos:

  • Subir y tratar la imagen
  • Mostrar el link, el bbccode para los foros, etc..

Pues de momento lo dejaré aquí y el próximo articulo empezaremos con el sistema en cuestión. Si queréis venir preparados “a clase”, iros mirando esas dos librerías que son las que usaremos básicamente.

Hasta pronto.

Lagarto CodeIgniter, Subidor de imagenes , , , , ,

Sistema de Usuarios (Tercera parte): Usando la clase

Sábado, 9 de Agosto de 2008

Siguiendo la clase anterior (dónde construimos la clase Centinela), hoy toca acabar el sistema, creando la interfaz web para que los usuarios puedan registrarse, loguearse, desloguearse y acceder (o no) a secciones privadas.

Antes de empezar, deberíamos tocar algo de la configuración: ya que la clase centinela la cargaremos en la gran mayoría de veces, le diremos que nos la cargue siempre para mayor comodidad. Por lo que iremos a config/autoload.php y pondremos algo así como:

/*
| -------------------------------------------------------------------
|  Auto-load Libraries
| -------------------------------------------------------------------
| These are the classes located in the system/libraries folder
| or in your system/application/libraries folder.
|
| Prototype:
|
|	$autoload['libraries'] = array('database', 'session', 'xmlrpc');
*/

$autoload['libraries'] = array('database', 'session', 'centinela');

Una vez tenemos hecho esto, procederemos a crear las diferentes partes de la web dónde usaremos la clase.
Leer más…

Lagarto CodeIgniter, Sistema de usuarios , , , , , , , , ,

Sistema de Usuarios (Segunda parte): Clase ‘Centinela’ II

Jueves, 17 de Julio de 2008

Ahora procederemos a la parte mas importante de este tutorial dónde codificaremos las funciones de login, logout y check (comprobar), que explique a grandes rasgos como funcionarían en el articulo anterior.

Login

La función de login recibirá dos parámetros: usuario y contraseña que normalmente serán los que el usuario nos introduzca mediante un formulario. Pero también se usará para validarse automáticamente mediante las variables SESSION que tendremos almacenadas, asi siempre comprobaremos que las credenciales de los usuarios son siempre validas.

Entonces procederemos a comprobar que el usuario y la contraseña coinciden con la base de datos, si todo esta correcto crearemos las variables sesión (o las actualizaremos).

Aquí esta el código: Leer más…

Lagarto CodeIgniter, Sistema de usuarios , , , , , , ,

La guía de CodeIgniter en español

Domingo, 13 de Julio de 2008

Hoy visitando los foros de CodeIgniter.com me he enterado que un pequeño colectivo de personas hispanoparlantes iniciaron hace un tiempo la traducción de la guía de CodeIgnter al español. Estamos hablando de Pablo Martinez, Pablo Ruiz, Seppo y viktorhino que tradujeron la guía y la pasaron en un PDF que seguro que a muchos de vosotros os es de mucha utilidad.

No estoy seguro si esta la guía disponible en el formato html cómo la original, en todo caso es un gran trabajo y os felicito por ello.

[Descarga] Guía en español de CodeIgniter

Lagarto CodeIgniter , , ,