Frameworks

[PHP] Usando el modulo de autenticación Kohana A1

Kohana A1, es un modulo de kohana el cual nos permite implementar de una forma efectiva, potente y clara, un sistema de autenticación, de una forma fácil y sencilla.

Antes de empezar a usarlo es importante considerar que el modulo usa la el constructor crypt de PHP pero usando como hash CRYPT_BLOWFISH, esto no afecta si estas usando PHP 5.3, pero si tienes este inconveniente al final del post pondré como solucionarlo(o cambiarte de hosting a uno mas actualizado).

Vamos a ver como usarlo para hacer un login.

Requisitos:

  • Kohana 3.2
  • Kohana A1 module
  • Kohana ORM
  • Kohana Database

Como dicen los requisitos para usar A1 debemos de estar conectados a una base de datos, también debemos de tener un modulo que abstraiga dicha base de datos, para esto podemos usar Kohana ORM, Automodeler, Jelly, Sprig o entre otros, si estamos haciendo pruebas yo recomiendo usar Kohana ORM, y ya en base a sus requerimientos y necesidades usar el que mas les agrade.

Instalamos kohana de modo que quede en http://localhost/kohana1/ ,creamos una base de datos yo la llamare, “system” y le pondré como datos de conexión ultra-seguros user:root password:root, recuerden activar el modulo database y ORM.

Y posteriormente nos toca, agregar el siguiente código SQL a nuestra base de datos, obviamente lo pueden modificar a su gusto, aunque de momento dejémoslo así.

 CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`email` varchar(127) NOT NULL,
`username` varchar(32) NOT NULL DEFAULT '',
`password` char(80) NOT NULL,
          `token` char(80) NOT NULL DEFAULT '',
`logins` int(10) UNSIGNED NOT NULL DEFAULT '0',
`last_login` int(10) UNSIGNED,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
view raw users.sql This Gist brought to you by GitHub.

Ahora procedemos a bajar el modulo A1, que esta aquí: https://github.com/Wouterrr/A1/

Y lo ponemos en nuestro carpeta modules nombrando a la carpeta A1 de modo que quedara asi “modules/A1″.Dentro de dicha “modules/A1″ hay una carpeta config y dentro de ella un archivo llamado a1.php, bien este archivo es el archivo de configuración del modulo Kohana A1, de igual forma que se hace con todos los módulos hay que copiar este archivo a “application/config/” para poder editarlo y que no afecte directamente al modulo.

El archivo se ve de la siguiente forma:

<?php

return array(

'driver' => 'ORM', // orm/jelly/mango/sprig
'user_model' => 'user',
'cost' => 12, // Bcrypt Cost - any number between 4 and 31 -> higher = stronger hash

'cookie' => array(
'key' => 'a1_{name}_autologin',
'lifetime' => 1209600, // two weeks
),

'columns' => array(
'username' => 'username',
'password' => 'password',
'token' => 'token',
//'last_login'=> 'last_login', // (optional)
//'logins' => 'logins' // (optional)
),

'session' => array(
'type' => 'native' // native or database
)
);

view raw a1.php This Gist brought to you by GitHub.

Aquí pongo la descripción de cada elemento:

  • driver: EL ORM que usara (ORM,jelly,mango,sprig[se pueden agregar mas pero hay que modificar el modulo o extenderlo])
  • user_model: tabla(modelo) que se usara ‘user’
  • cost: fuerza (tamaño de la clave) entre 4 y 31, lo ideal es 12, si ponen un numero muy grande tomar en cuenta que consumirá mas recursos.
  • cookie: los datos de la cookie que generara a1, para hacer el login(nombre y duración)
  • columns: aquí le estamos asignando a los items de A1, las columnas de la base de datos, es decir si en su base de datos el nombre de usuarios están en el campo nombre, tendrán que poner ‘username’ => ‘nombre’, modificando lo que esta en el array, los campos opcionales de momento no los usaremos, aunque cabe señalar que solo guardan información extra.
  • session: Aquí es donde definimos el tipo de sesión, de momento y regularmente bastara con dejarlo como esta, si su aplicación correrá en varios servidores conviene ponerlo en modo database(aunque en este caso hay que hacer un par de cosas mas, espero postear pronto sobre esto)
  • .

No se les olvide activar le modulo en el bootstrap, el cual en la sección módulos debería verse así:

Leer más

[Kohana PHP] EL QueryBuilder de Kohana PHP Parte I, Uso de DB::Query()

El framework Kohana PHP, aparte de poseer un interesante y muy completo ORM, tiene otra opción que nos permite mejorar nuestras consultas a la base de datos.

Este se llama QueryBuilder, el cual como su nombre lo indica es un constructor de consultas.

En el post anterior, comente como usar el ORM de kohana, el cual como vemos nos ahorra mucho trabajo y nos permite hacer consultas complejas mediante el uso de la orientación a objetos, sin embargo no todo es tan maravilloso como suena, una de las cosas mas contraproducentes que tiene este y la mayoría de ORM’s es la siguiente.

Ejemplo de lo que sucede al hacer una consulta usando el ORM


//Consulta ORM
$result = ORM::factory('users')->find_all();

//Consulta generada
$sql = 'select * from users';

Como vemos por default, nos esta haciendo un select *, esta consulta puede afectar seriamente nuestro rendimiento cuando nuestra tabla contiene muchos registro o muchos campos, además de que cuando tenemos tablas con un campo ambiguo, hacer funcionar bien el ORM puede darnos varios dolores de cabeza.

Los desarrolladores de kohana, antes de lanzar el ORM, crearon un constructor de consultas, el cual nos da toda la potencia de el lenguaje SQL, pero usando técnicas de orientación a objetos usando PHP.

Para usarla lo haremos configurando todo lo necesario como lo hicimos en el post anterior, y crearemos los querys de la siguiente forma.

* Uso de método estático DB::query()


//Sintaxis
$query = DB::query(integer $type,String $sql);

Esta es una de las herramientas mas completas que tenemos dentro del QueryBuilder, básicamente es un método estático en donde recibe dos parámetros, el primero de tipo integer que en realidad es una constante de la clase Database, en donde le indicamos que tipo de consulta haremos( select, delete, insert, update), veamos su equivalencia.


Database::SELECT;  // corresponde a 1
Database::INSERT;  // corresponde a 2
Database::UPDATE;  // corresponde a 3
Database::DELETE;  // corresponde a 4

El segundo parámetro es string donde indicamos la consulta que necesitemos hacer la cual puede incluir algunas variables las cuales estarán indicadas mediante dos puntos y el nombre de variable, el cual no tiene nada que ver con las variables de PHP, y posteriormente se le puede indicar el valor de dicha variable mediante el método param, parameters o bind.

Veamos como quedarí­a una consulta normal


$user = 'ajaxman';

//Nótese la variable :user

$query = DB::query(Database::SELECT, 'SELECT id,username FROM users WHERE username = :user');

//Asignación de la variable :user a variable PHP $user.

$query->param(':user',$user);

/***  Ejemplo de como seria en modo normal de PHP y MySQL ***/

$query = 'SELECT id,username FROM users WHERE username = '.$user;

Pero aun no tenemos terminada nuestra consulta, para que se ejecute debemos especificarlo explícitamente mediante el método execute.
Veamos algunos ejemplos de como usar lo que hemos visto en un query complejo y algunas variantes de como hacer esto.

Leer más

[Kohana - PHP] 12 consejos útiles para desarrollar con kohana PHP

Pues hoy les voy a mostrar, algunos consejos sobre el Framework kohana PHP, que les servirán mucho al momento de iniciarse en con este software, quizá algunos lo usen de otro modo y sea mejor, pero yo voy a poner como lo he usado y como me ha resultado de utilidad, así que si hay algo que no les funcione con kohana quizá deberían a darle un vistazo a este POST, aquí vienen:

1.- Kohana PHP

Es un framework escrito en PHP para acelerar el desarrollo de aplicaciones web, originalmente basado en CodeIgniter pero reescrito desde cero.

2.- Las ventajas de kohana PHP

Bueno son muchas, aquí pondré algunas

  • Extremadamente ligero
  • PHP 5 Estricto
  • OOP
  • Arquitectura HMVC
  • Curva de aprendizaje fácil, pero extensa
  • Se puede usar con Doctrine ORM, Smarty, Twig y hasta con tus propias clases sin problemas.
  • IDE – Trabaja muy bien con Netbeans.

3.- Las versiones de Kohana PHP

Kohana surgió como un fork de Codeigniter(CI) tratando de mejorarlo, y la versión 2.x es basado en CI y actualmente hay soporte para la misma y es manejada por Jeremy Bush( aka zombor).

Sin embargo la versión que uso y recomiendo en las 3.x, mas específicamente la 3.1.3.1, la cual también es estable, la recomiendo por que esta reescrita desde cero pensando en puro PHP5 Y OOP, , es mas fácil de usar, y con muchas mejoras a nivel código, de la versión 3.0 y 3.1.1, hubo cambios algo fuertes y puede que tu código no funcione bien.

En resumen usa la versión 3.1.3.1 y evitate problemas.

4.-Instalando Kohana PHP

Tengo aquí un post que menciona como instalar Kohana PHP, que no es mas que descomprimir, ver si tenemos todos los requisitos y ya.

Además de eso recomiendo que su servidor tenga soporte para .htaccess y el modulo ModRewrite instalado y en ese archivo comenta esta linea, ya que puede generarte problemas con la ubicación de tu kohana


# Installation directory
#RewriteBase /

5.-  Configura tus rutas dentro del bootstrap

Configura tus rutas dentro del archivo Bootstrap, por default viene configurada una ruta que se llama default la cual apunta al controlador welcome, elimina ese archivo y configura tus rutas o ponlo para que apunte al controlador por default de tu proyecto

Leer más

[Kohana - PHP] Lanzamiento de Kohana 3.1 “Merle” y como hacer el upgrade

Pues apenas me vengo enterando de que los desarrolladores de Kohana han liberado el día 7 de Febrero la versión 3.1 del Framework Kohana llamada “merle“.

Pues obviamente hay muchos que queremos tener nuestro Framework actualizado, entonces pues me dispuse a migrar un website de la versión 3.0.9 a la 3.0.x.

Las instrucciones de migrar son fáciles, regularmente se basa en reemplazar el directorio system de nuestra aplicación, pero esta nueva versión incorpora muchos cambios los cuales, hacen la migración un poco mas complicada.

El mismo sitio de kohana nos avisa de los siguientes cambios:


//Versión 3.0.x

$this->request->response = 'foo';

//Versión 3.1
$this->response->body('foo');

//Cambios en la clase Request de propiedades a métodos

//Versión 3.0.x  ===>    Versión 3.1
Request::$controller ==> Request::controller()
Request::$action ==> Request::action()
Request::$directory ==> Request::directory()
Request::$uri ==> Request::uri()

Todos lo puntos son marcados aquí
http://kohanaframework.org/3.1/guide/kohana/upgrading.

Ahora bien, a mi los que mas me interesaron, son importantes y no vienen aqui son los siguientes.

Request


//Versión 3.0.x

Request::instance();

El método estático anterior nos devolvía el singleton de nuestra solicitud con dicho método estático podiamos obtener parámetros y una de las cosas para lo que yo la utilizaba era para la creación de mi Breadcrumb.


//Version 3.1

Request::current();

//o

Request::initial();

Aquí como vemos tenemos dos opciones, y se elimino instance, las dos son iguales salvo por un detalle, si usamos HMVC, initial contendrá la información de la petición inicial, es decir si desde un controlador estamos invocando a un Request::factory(), ese sera inital y el factory invocado sera current cuando estemos programando dentro del factory.

Leer más

[Framework Kohana 3] Instalando y configurando Kohana 3 #Ko3

Para empezar con con Kohana, necesitamos tener instalado un entorno de pruebas el cual debe tener lo siguiente.

  • Apache o un servidor Web como Lighttpd
  • Php 5 o superior (de preferencia 5.3)
  • MySQL 5

Funcionando y correctamente configurado
Imaginemos que tenemos nuestro Htdocs en E:\www y que ese es nuestro htdocs.

Ahora procedamos

  • Bajaremos nuestro kohana 3
  • Para ello iremos a la siguiente pagina http://v3.kohanaphp.com/download
    Y descargaremos la versión v3.0.0 “renaissance” que es la estable de la rama 3.x
  • Lo descomprimimos y veremos dentro una carpeta que se llama kohana, y dentro de ella el framework
  • Copiamos esta carpeta kohana a nuestro Htdocs
  • Quedaría así E:\www\kohana

Ahora vayamos a nuestro dirección http://localhost/kohana y veremos lo siguiente.

kohana 3

kohana 3

Leer más

[Programación PHP]El Framework Kohana 3 el elegido

Después de varios días sin actividad, hoy platicare de varias cosas.

Pues como sabrán (x vía Twitter), no tengo pc, por ello no he posteado, y bueno tengo un proyecto entre manos el cual empezare a partir del día de hoy, pensaba hacerlo con Python con el Framework Django o en su caso con Ruby on Rails.

Y la verdad estaba pensando muy seriamente hacerlo con Django pero la verdad estoy con poco tiempo, y después de haber estado usando Kohana en el trabajo me decante por este Framework en su versión 3.0.

El proyecto es un website, pero no daré mas pistas hasta que este casi listo(pronto), lo importante es que se que quiero hacer y tengo con que hacerlo.

kohana 3

kohana 3

Pero el propósito de este post va mas haya les platicare un poco de que se trata este Framework y en medida de lo posible pondré documentación en español la cual esta un poco escasa.

Kohana es un Framework escrito en Php, el cual comenzó siendo un Fork del Framework CodeIgniter, el cual trata de ser mejor que este, esto es en su version 2.3.4

Pero en su nueva versión 3.0 el Framework fue reescrito completamente, agregando mas características importantes, como una mejor implementación de su ORM, se implemento el uso de métodos estáticos para prácticamente todo, para instalarlo se requiere PHP 5 obligatorio, entre otras mejoras.

Además de que a diferencia de Codeigniter la carpeta de la aplicación esta fuera de la del sistema, haciéndolo mas seguro.

Bien ahora a programar, les informare de los avances.

Leer más

[Manual - Codeigniter] Programando php en MVC con CodeIgniter [Parte 1]

Antes de empezar con este post, quiero ofrecer disculpas ya que no he sido constante en el blog, sin embargo cuando estén casados y esperando un bebe sabrán que hay cosas que son mas importantes jaja.
También déjenme comentarles que estoy planeando un cambio de diseño en el blog, algo que no modifique mucho la estructura pero que se vea elegante, esos son los planes a futuro, bueno ahora si pasemos al post.

A mi siempre me ha gusto programar directamente sin usar algún tipo de Framework
o algo similar (a excepción del Blog que uso WordPress), sin embargo ahora que estoy viendo como programar el proyecto empecé a buscar opciones que aligerarán mi carga de trabajo, pero a la vez que fuera muy flexible para meter código donde fuera necesario (claro de una manera ordenada).

Entonces empecé a buscar algún Framework que me satisficiera, pensé en Zend, en Smarty, Phpbb, Xtemplate, etc, sin embargo esta dudoso, como que una parte me decía que si y otra que no, entonces conocí a CodeIgniter, un Framework que si bien no es tan conocido como Zend o Symphony, si es muy potente y muy simple de usar y puede llegar a ser tan potente como los dos anteriores.

Ahora bien, me puse a investigar como instalar y como hacer mi !Hello Word!, así que aquí les pongo como le hice y como quedo.

[PASO:1]

Requisitos:

  • Tener php 4 o superior instalado
  • Base de datos MySQL(soporta otras)

[PASO:2]

  • Obtenemos CodeIgniter de la siguiente URL  http://codeigniter.com/download.php
  • Lo copiamos dentro de nuestra carpeta raíz de htdocs (en Apache)
  • Hay dos carpetas una se llama system y otra user_guide, además de otros archivos

[PASO:3]

  • Ahora procederemos a configurar nuestro CodeIgniter
  • Primero abrimos el siguiente archivo system/application/config/config.php y buscamos la línea $config['base_url'] = “http://localhost/CodeIgniter/”; en donde pondremos la ruta de nuestra carpeta que acabamos de descomprimir
  • Para conectar la base de datos hay que editar el archivo system/application/config/database.php en donde dice
  • $db['default']['hostname'] = “localhost”;

    $db['default']['username'] = “”;

    $db['default']['password'] = “”;

    $db['default']['database'] = “”;

    y Ahi colocamos los valores que usamos para conectarnos a nuestra base de datos.

[PASO:4] Ahora debes de entrar a la url que pusiste y te debe de aparecer el siguiente mensaje.

[PASO:5]
Ahora si entras a system/application veras muchas carpetas, las que nos interesan son las siguientes config, controlles, views y models.
Abrimos el archivo system/application/config/routes.php en donde buscaremos lo siguiente $route['default_controller'] = “welcome”; (esta en la línea 43 aproximadamente) esta la vamos a cambiar por el nombre de nuestro controlador que vamos a usar, su sintaxis es muy simple, debe de ser el nombre del archivo donde haremos el controlador, por ejemplo si nuestro archivo controlador se llamara test.php quedara así $route['default_controller'] = “test”; si el controlador se llamara delfines.php quedaría $route['default_controller'] = “delfines”;
Nota: Es muy importante lo anterior ya que toda la sintaxis que usa CodeIgniter sigue esta estructura
Ya que lo editamos cerramos ya abrimos el controlador, por default esta el controlador welcome, el cual recordemos que estaba por default dentro de routes.php, ahora creamos nuestro controlador con el nombre que deseemos, por ejemplo biblioteca.php, (recuerden cambiar en routes.php $route['default_controller'] = “welcome”; a $route['default_controller'] = “biblioteca”; )
Abrimos nuestro controlador y escribimos lo siguiente.


class Welcome extends Controller {

function Welcome()
{

parent::Controller();

}
function index()
{
echo "Hola Mundo";
}
}

Lo que tenemos en muy simple, creamos una clase la cual extiende de Controller con lo cual obtiene todos los métodos y propiedades de un controlador genérico de CodeIgniter, vemos el método Welcome, el cual es necesario ya que tu constructor local anularia al constructor de la clase padre Controller, por lo tanto necesitamos llamarlo manualmente. en el caso de php5 podemos optar por usar.


function __construct()
{
parent::Controller();
}

Es lo mismo.

Luego tenemos el método index, el cual se ejecuta cuando entremos al index.php(después del método constructor) y le decimos que escriba “Hola mundo”, si bien esto no tiene nada de MVC, es para ver que esta funcionando deberemos entrar a

http://localhost/codeigniter/biblioteca/

Y nos deberá arrojar “Hola Mundo”

Queda pendiente el ejemplo MVC completo, cualquier duda pueden preguntar, recuerden pueden empezar a probar para que vean como funciona.

Leer más

Historico de entradas

febrero 2012
L M X J V S D
« ene    
 12345
6789101112
13141516171819
20212223242526
272829  

Ajaxman

Mi nombre es Javier, soy desarrollador web con especialización en PHP (avanzado), HTML, CSS y Javascript(Medio).

Me considero evangelizador de Kohana Framework, Mozilla Firefox y GNU/Linux Debian.

Estoy casado, y tengo dos hermosos hijos.

Todos los contenidos a menos que se exprese lo contrario estan bajo licencia Creative Commons.

Enlazanos!!

hit counters online counter