Pues otra vez aca posteando mucho trabajo y poco tiempo para postear jaja como siempre.
Solo que esta vez con buenas noticias, dare un Taller completamente gratis con el apoyo de la red Novatecas y las instalaciones de Telmexhub, el taller es sobre como empezar a programar y conocer las ventajas el Framework Kohana PHP Version 3.x.
Taller:
Requisitos:
Leer completamente [Taller-PHP] Desarrollo de Aplicaciones Web con Kohana Framework
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:
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;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 ));
Aquí pongo la descripción de cada elemento:
.
No se les olvide activar le modulo en el bootstrap, el cual en la sección módulos debería verse así:
Leer completamente [PHP] Usando el modulo de autenticación Kohana A1
PHP es un lenguaje con el cual podemos usar herramientas avanzadas de desarrollo, algunas de estas herramientas son los patrones de diseño (Design Patterns),regularmente cuando empezamos a adentrarnos a esto de los patrones de diseño, uno de los primeros patrones que empezamos a usar es el patrón singleton, el cual garantiza un único acceso a cierto clase como una base de datos la implementación que yo uso/usaba es la siguiente:
<?php
/**
*
* Clase abstracta que define los metodos que implementaran los databaseManagers
* @author Javier Lopez Lopez
* @abstract
*
*/
abstract class DatabaseManager{
abstract public function findAll();
}
/**
*
* Clase Mysql Database manager (el singleton)
* @author Javier Lopez Lopez
*
*/
class Mysql extends DatabaseManager {
private static $instance;
private function __construct(){ }
private function __clone(){ }
public static function getInstance()
{
if(!(self::$instance instanceof self))
{
self::$instance = new self;
}
return self::$instance;
}
//...MORE CODE
public function findAll()
{
//return all results
}
}
/**
* Usando el singleton
*/
class Controller {
protected $database;
public function __construct()
{
//Como se que debo de incluirlo si nunca lo solicito en la ejecución de la clase
//Ademas me limita a usar solo databasemanager de tipo MySQL
//Evita que crezca el servicio no puedo agregar mas databases;
$this->database = Mysql::getInstance();
}
public function getAll()
{
return $this->database->findAll();
}
}
//Uso
$controller = new Controller();
$controler->getAll();
//nunca sabemos que adentro lleva un clase que se llama Mysql,
//entonces puede fallar, tambien no sabemos que se necesita Databasemanager
En la primera clase tenemos la implementación del singleton, y en la segunda clase en el constructor estamos llamando al singleton, sin embargo, caemos en una mala practica, la cual si vemos Mysql::getInstance() es como si fuera una llamada a una clase estática global, la cual es como si estuviéramos usando variables globales, lo cual es totalmente desaconsejado de usar, como comentan en mundogeek por las siguientes cosas:
Extraído de: http://mundogeek.net/archivos/2011/07/12/variables-globales/
Entonces vemos que a pesar que de es posible usar Singleton no deberíamos de usarlo, solo en casos muy excepcionales, aunque es mejor buscar algún otro patrón de diseño.
Leer completamente [PHP] El patrón de diseño (o antipatrón) singleton vs Inyección de dependencias ¿Que debo usar?
Kohana PHP, es el framework que como bien saben me gusta mucho por muchas cosas, y en esta ocasión el conocer sobre kohana me ha dado una nueva experiencia, en este caso se trató de dar una platica “rápida” vía streaming a programadores PHP, principalmente de Colombia aunque claro estaba dirigida para todo el que quisiera.
La verdad me gustó mucho aunque creo que me extendí demasiado, total que terminamos en 1 hora y media, pero aun así mi temario que tenía preparado no se terminó, llegue como a la mitad, aunque trate de sentar las bases del framework y estoy en espera de que si lo solicitan puede haber una parte dos.
Iniciamos con una breve introducción de unos cuantos slides, en donde aborde conceptos básicos del framework, como POO, MVC, HMVC, Cascading Files, entre otros, posteriormente pasamos a bajar el framework he instalarlo, de ahí nos pusimos a revisar el bootstrap, y crear nuestro !Hello World!, también comentamos sobre los módulos, y activamos los módulos de Database y ORM, he hicimos un modelo y una vista para hacer consultas desde nuestro controlador.
Leer completamente [Taller-Kohana] Taller relampago de Kohana PHP en streaming
Hola los saludo a todos de nuevo, como dije alguna vez el blog siempre seguirá arriba.
Les platico un poco de que ha sido de mi durante este paro de labores(blog).
Primero lo mas importante hace 2 meses fui papa por segunda vez, en esta ocasión de una niña hermosa llamada Avril.
Mi hijo angel ya sabe usar paint(windows) y tuxpaint(Debian linux) y al parecer le gusta la informática, los números, las letras,los colores.
También hace dias cumpli 3 años de casado y feliz.
También, pasaron otras cosas como cambio de trabajo, y en lo profesional empecé a interesarme aun mas en PHP y las best practiques como refactorización, más OOP, namespaces, TDD, DRY, KISS, SOLID, DI, y hasta integración continua, si bien aun me falta mucho por aprender(y no conozco todo eso pero me gustaría) estoy esforzándome en llevar esto a la practica.
Conoci git y github(Control de versiones) y me gusta mucho usarlo, y recomendarlo.
Entonces que es lo que viene, bueno de momento, el miércoles tengo una sesión relámpago de kohana via streaming para México y Colombia, también en breve anunciare la fecha del taller de Kohana en telmexhub(esta en proceso), también vienen más proyectos en mente pero el más próximo es que es probable que en el siguiente año forme mi empresa (Desarrollo web con alta calidad (Q&A)), y quizas hasta lance un libro sobre kohana en español, en fin muchos proyectos, poco a poco informare de cada uno de ellos, de momento mi primer pendiente es retomar el blog, eso si no prometo postear mucho pero eso si contenido de calidad e interesante buen eso tratare.
En fin, muchas cosas se vienen ojala les gusten, y de paso si quieren saber más sobre todo esto o desean algún servicio (freelance), no duden en contactarme, ya sea en el contacto o por mi twitter @ajaxman
Ha y gracias por seguir visitando el blog
Las urls amigables son indispensables en el desarrollo de aplicaciones web, y con PHP no supone mayor inconveniente el implementarlas salvo configurar bien el servidor (Apache + ModRewrite, Ngix, Lighttp, IIS).
Sin embargo hay una tecnica bastante usada que a veces muchos desconocemos y esta usar la url, pero usando el nombre del archivo o script que estamos procesando esto es.
Si nuestra url es asi:
www.ajaxman.net/index.php?post=15&name=PHP-en-la-web
Podremos tener urls amigables sin necesidad de usar Modrewrite en Apache o sin necesidad de configurar nada de la siguiente forma.
www.ajaxman.net/index.php/PHP-en-la-web/15.html
Como vemos esta url si la indexaria Google y los demas buscadores, pero no hubo necesidad de configurar nada, entonces ello nos daria un buen posicionamiento, por ejemplo si buscamos automoviles en mexico o computadoras en Monterrey, podriamos usar este texto como parte de la url sin meternos en problemas con el servidor.
Ahora bien para tomar esta variable es muy facil, solo basta con usar la siguiente variable del servidor.
var_dump($_SERVER['PATH_INFO']);
Si ejecutamos el codigo anterior veremos que nos arrojara lo siguiente (usando la url de ejemplo de arriba)
string(22) “/PHP-en-la-web/15.html”
Como vemos usando simplemente esta variable del servidor podemos obtener la url que le enviamos y posteriormente procesarla para lanzar nuestro controlador o clase que deseemos.
Como recomendacion nunca reciban el parametro para incluir ese mismo archivo algo asi
Podremos tener urls amigables sin necesidad de usar Modrewrite en Apache o sin necesidad de configurar nada de la siguiente forma.
www.ajaxman.net/index.php/productos_15.php // Que invocaria al archivo productos_15.php
Pero el cual puede ser un grave fallo de seguridad y puede dar lugar a que nos inyecten codigo en nuestra aplicación.
Bueno este solo fue un tip y ya me extendi como siempre, pronto mas posts sobre kohana php, y sobre como enlazarlo con el sistema de plantillas twig, el ORM Doctrine y tambien intentare mejorar un modulo de kohana para usar Zend Search Lucene, pero luego les platico más.
comentarios recientes