El Padrino en 1 minuto

Si creias que El Padrino era muy larga… acá tenemos un interesante resumen…


En busca de la plantilla definitiva

Creo que es la quinta vez en el día que por una razón u otra cambio de plantilla… espero que este queda como definitiva ya…
Cambie al fondo blanco nomas… ya veremos si consigo otra con fondo negro que me guste.

Si les intersa esta plantilla…

Plantilla Blogy-Curved | Blog and Web




Ventanas en Vim

Una de las cosas que me gusta de usar Vim, es el poder “dividirlo”. De esta forma tenemos abiertos al mismo tiempo y de una sola mirada varios archivos, pudiendo navegar, copiar y pegar texto de uno hacia otro fácilmente.

Veamos algunas cosas básicas de esto.

Para abrir Vim con más de un archivo divido en dos de forma horizontal, lo hacemos con la orden -o

$vim archivo1 -o archivo2

Para hacer lo mismo pero de forma vertical, simplemente usamos la O (en mayúscula)

$vim archivo1 -O archiv

Cabe aclarar que podemos abrir la cantidad de archivos que queramos e incluso combinar esto

$vim archivo1 -o archivo2 -o archivo3

Una vez dentro de Vim, nos podemos mover por los archivos apretando ++, donde pueden ser las teclas que usamos para movernos por el archivo (h,j,k,l) pero en lugar de movernos por caracteres, nos moveremos por las ventanas.

Pero no es necesario que salgamos de Vim para abrir otro “conjunto” de archivos, bastara con que usemos los siguientes comandos (<esc> + “:” + comando)

new : Abre &lt;archivo&gt; dividiendo la pantalla horizontalmente. Si no especificamos &lt;archivo&gt; abrira una ventana vacia (igual que si ejecutamos vim sin nigun parametro)

vnew : Exactamente igual que el anterior pero divide la pantalla verticalmente.

close: Cierra la ventana actual si la hemos guargado. Podemos agregar ! para forzar.

Tambien es util que sepamos que con el comando “!” podemos ejecutar cualquier comando de nuestra shell. De modo que usando “:! ls” podemos ver los archivos que tenemos en el directorio actual.

Espero que les sirva este pequeño “ayuda memoria”.


[HOWTO] Login y sesiones en PHP

Más de una vez nos encontramos con la necesidad de crear paneles de administración u otros sectores para nuestros sitios web que no deberían ser accesibles para cualquier usuario. La forma más cómoda de hacer esto es mediante sesiones que “rastreen” a un usuario que previamente haya introducido un usuario y una clave.
La razón por la que escribo esto, es que la primera vez que me enfrente a un problema similar a este, los howto’s que encontré sobre esto estaban bastante des actualizados o con algunas cositas que no me gustaron, pero bueno, de todo hice un rejunte y arme esto… si quieren aportar algo, sera muy bienvenido :)

Comenzaremos este mini HOWTO creando una base de datos en MYSQL que contendrá algunos datos de los usuarios, en nuestro caso únicamente su nombre y password, pero tranquilamente se pueden agregar otros datos como e-mail, fecha de nacimiento, etc.

  1. mysql> USE nombredb;
  2. DATABASE changed
  3. mysql> CREATE TABLE usuarios(
  4. -> id int(6) NOT NULL AUTO_INCREMENT,
  5. -> nombre varchar(20) NOT NULL,
  6. -> pass varchar(20) NOT NULL,
  7. -> PRIMARY KEY(id)
  8. -> );
  9. Query OK, 0 rows affected (0.10 sec)

Creo que no hay mucho que explicar de esta tabla, los campos son bastante explícitos, tenemos un campo “id” el cual sera usado para indexar a los usuarios, luego “nombre” donde ira, valga la redundancia, el nombre del usuario y “pass” donde guardaremos la clave del mismo.

Ahora comenzamos con los scripts en PHP.
Lo primero que necesitamos es algún modo de agregar usuarios a esa tabla que creamos. Pero antes que nada, como necesitaremos conectarnos varias veces a nuestra base de datos para recuperar sus valores, lo primero que haremos sera un script para conectarnos a la misma y así no tener que repetirlo.

  1. /*conexion.php, script usado para conectarnos a la base de datos
  2. que creamos anteriormente*/
  3. //Definimos las variables que contendrán los datos de la conexión
  4. $hostdb = "hostdeladb";
  5. $userdb = "usuariodelabd";
  6. $passbd = "passworddelabd";
  7. $bd = "nombredb";
  8. $cnt = mysql_connect($hostdb,$userdb,$passdb); //nos conectamos
  9. mysql_select_db($bd",$cnt); //seleccionamos la bd que usaremos
  10. ?>

De ahora en más, cuando necesitemos conectarnos a la bd, simplemente haremos “include(‘conexion.php’);”

Ahora crearemos el formulario de registro, para esto utilizaremos un form en html cuya acción estará en otro script al cual llamaremos agregar.php. Cabe aclarar que podemos meter el form y el control en un mismo archivo, yo los separo simplemente para que quede más claro que hace cada parte.


<form action="registro.php">

<fieldset>

<label for="user">Usuario:</label>

<input type="text" id="user" name="user"/>

<label for="pass">Clave:</label>

<input type="password" id="pass" name="pass" />

<input type="submit" name="button" id="button" value="Enviar" />

</fieldset>

</form>

Y ahora el script que agregará al nuevo usuario en nuestra base de datos. Para esto usaremos la función “mysql_query()” de PHP usando como parámetro la directiva “INSERT” de mySQL para insertar dentro de la tabla que creamos al principio el usuario y clave que acabamos de elegir controlando que no exista un usuario con el mismo nombre y controlando también que los campos no estén vacíos. El método que usare acá es fácilmente “violable”, dejo la seguridad a su cargo ya que no es el objetivo de esta guía.

    1. // agregar.php
    2. /*Controlamos que se haya elegido un valor para el usuario y la
    3. clave. Sabiendo que los mismos fueron completados, los
    4. procesaremos. Si no, redirijimos la página hacia el form de
    5. registro*/
    6. if(isset($_POST['user']) && ($_POST['user']
    7. != " " || $_POST['pass'] != " ") ) {
    8. //Nos conectamos a la base de datos
    9. include(conexion.php);
    10. //Declaro variables locales con el valor de las globales
    11. //obtenidas por el form
    12. $user = $_POST['user'];
    13. $pass = $_POST['pass'];
    14. //Haremos una consulta a la base de datos para saber si ya
    15. //existe un usuario con ese nombre
    16. $qry = mysql_query("select * from usuarios where nombre='$user'");
    17. if(mysql_num_rows($qry) != 0) /*Si el valor de mysql_num_rows
    18. no es 0, quiere decir que el usuario ya
    19. existe y por tanto no haremos nada*/
    20. echo "El usuario ya existe";
    21. else { //Si el usuario no existe lo incorporamos a nuestra base de
    22. //datos
    23. mysql_query("insert into usuarios(nombre,pass) values('$user',
    24. '$pass'));
    25. echo "Usuario agregado";
    26. }
    27. } else
    28. header("location: registro.html

Ahora que tenemos usuarios en la base de datos, necesitamos un form que nos permita
autentificarlos.
Para esto usaremos un form html exactamente igual al anterior aunque, si en el
anterior pediste otros datos ademas del usuario y el password, acá simplemente
pediremos estos dos ultimos.


<form action="login.php">

<fieldset>

<label for="user">Usuario:</label>

<input type="text" id="user" name="user"/>

<label for="pass">Clave:</label>

<input type="password" id="pass" name="pass" />

<input type="submit" name="button" id="button" value="Enviar" />

</fieldset>

</form>

El siguiente paso sera entonces, buscar al usuario en la base de datos y comprobar
que coincida con la clave que proporciono. Esto lo hacemos de forma similar al
control para registrarlo, efectuamos una consulta buscando el usuario y la clave y
vemos cuantas entradas nos devuelve mediante “mysql_num_row()” si nos devuelve 0,
quiere decir que el usuario y/o la clave proporcionadas no fueron correctos, caso
contrario, guardaremos el nombre del usuario en una variable de sesión, la cual
usaremos para control más adelante.

  1. //login.php
  2. //Nos conectamos a la base de datos
  3. include("conexion.php");
  4. //Iniciamos la sesión donde guardaremos las variables
  5. //Creamos variables locales con el contenido de las devueltas por el form
  6. $user = $_POST['user'];
  7. $pass = $_POST['pass'];
  8. //Realizamos la consulta a la base de datos y controlamos que nos devuelva
  9. //algun resultado
  10. $qry = mysql_query("select * from usuarios where nombre='$user' and
  11. pass='$pass'");
  12. if(mysql_num_rows($qry) !=0) {
  13. $_SESSION['user'] = $user; /*Declaramos una variable de sesión donde
  14. guardaremos el nombre del usuario
  15. para control*/
  16. header("location: private.php"); /* Nos vamos a la sección "privada"
  17. de nuestra página*/
  18. } else
  19. echo "El usuario y/o clave no son correctas";
  20. ?>

Por ultimo, crearemos la sección de nuestra página a la que queremos que
solo ingresen nuestros usuarios registrados.
Dentro de la misma, controlaremos que el usuario se haya logeado mediante la
variable de sesión $_SESSION['user'].

  1. //private.php
  2. session_start(); //Iniciamos la session
  3. if(isset($_SESSION['user'])) { //controlamos que la variable este declarada
  4. echo “Bienvenido $_SESSION['user']!”; //Si el usuario esta logeado,
  5. //vera un mensaje de bienvenida
  6. else
  7. header(“location: ingresar.html”); //Si el usuario no esta logeado, regresara al
  8. //formulario de login
  9. ?>

Y con esto terminamos esta mini guía.
Si necesitamos otras páginas “privadas”, simplemente controlamos la misma variable.
Para deslogearnos, todo lo que tendremos que hacer es llamar en alguna página a la
función “session_destroy()”.
Hay que recordar también, que si nuestros usuarios cierran el navegador, la sesión
también se cerraran. Para resguardar las variables entonces, debemos hacer uso de
cookies, pero eso lo dejaremos para otra ocasión.
Por ultimo, hay que destacar que nuestro “sistema de registro y login” no tiene
ningún tipo de seguridad, las claves se almacenan y viajan libremente sin ningún
tipo de encriptación, así que es otro asunto pendiente ;)


Nuevos rumbos…

Bueno, después de bastante tiempo decido volver a Blogger.
La razón, quería un lugar para, simplemente, escribir. Cosa que mi antiguo blog no me lo permitía del todo ya que estaba hecho desde 0 con PHP,HTML y CSS.
Esto no quiere decir que vaya a tirar lo que había hecho, ya que el manejo del “motor” de mi blog me dio ideas que me gustaron bastante y tengo pensadas aplicarlas para algo que dentro de poco tendrán noticias de eso :)

La plantilla que uso la saque de este lugar: http://www.jackbook.com/2007/08/mushblue-blogger-template-another-dark.html

Me gusto más que nada por los fondos oscuros que siempre los prefiero para leer texto dado que no cansan tanto la vista como los colores claros.

En cuanto al contenido, ya se vera hacia que lado va… esta vez no quiero decir nada… al fin y al cabo siempre escribo de lo que quiero al final.