Revelar contraseñas guardadas en el navegador web Truco Escucha este post

0 comentarios

Por cuestiones de seguridad, todos los sitios web cuando piden una contraseña, ocultan el texto escrito en el cuadro de texto correspondiente de modo que ningún malintencionado que pase cerca pueda "descubrir" cuál es la contraseña. He aquí un pequeño truco para revelar esas contraseñas. :)

Pasos a seguir

1.- Abrí la página en cuestión usando Chrome/Chromium y hacé clic sobre el cuadro de texto que contiene la contraseña (sí, la que está llena de asteriscos).

2.- Seleccioná la opción Inspeccionar elemento. Se va a abrir un recuadro en el que aparece el código fuente del elemento en cuestión.



3.- Donde dice type="password" escribí type="text" y presioná Enter.

Otro método muy sencillo para ver las contraseñas almacenadas en Chrome/Chromium es yendo a: Preferences > Personal Stuff > Show Saved Passwords.

Nota: en Firefox puede conseguirse el mismo resultado utilizando la extensión Firebug. Para ver las contraseñas almacenadas basta con ir a Edición > Preferencias > Seguridad > Contraseñas almacenadas > Mostrar Contraseñas.



Tablas relacionadas en cakephp y Recuperar datos de ellas. Escucha este post

1 comentarios

 Definir relaciones entre Modelos (tablas)

Para ver este tema empezaremos a partir de una aplicación
Scaffolding puedes ver el tema aqui.

Como cualquiera que tenga experiencia en bases de datos
sabrá hay 3 tipos de relaciones  que una tabla puede tener.

1.    
Uno a uno: Un registro guarda relación con un registro de otra tabla.

2.    
Uno a muchos: un registro guarda relación con  muchos
registros de otra tabla.

3.    
Muchos a muchos: Muchos registros guardan relación con muchos registros
de otra tabla.

Para definir estas relaciones
en los modelos tenemos estas dos variables

var $belongsTo=’modeloQSigue’;

Esta variable se pone cuando sigue a un modelo

var $hasOne=’modeloQLoSiguen’;

Esta variable se pone cuando lo sigue otro modelo

var $hasMany=’modelosQLoSiguen’;

Esta variable se pone cuando lo siguen otros modelos

var $hasAndBelongsToMany  =’modeloQLoSiguen’;

Esta variable se pone cuando tiene y pertenece a muchos



Para este ejemplo haremos un ejemplo de alumnos con cursos. Donde a un
curso tiene muchos alumnos, Y un alumno solo tiene un curso.

Creamos la base de datos con
las siguientes tablas:




CREATE TABLE `cursos` (

`id` int( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,

`nombre` varchar( 127 ) NOT NULL ,

`aula` varchar( 127 ) NOT NULL ,

`tutor` varchar( 127 ) NOT NULL

);



CREATE TABLE `alumnos` (

`id` int( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,

`codigo` varchar( 13 ) NOT NULL ,

`nombre` varchar( 64 ) NOT NULL ,

`apellidos` varchar( 127 ) NOT NULL ,

`curso_id` int( 11 ) NOT NULL


)



Nota que en  la table alumnos hemos creado un campo curso_id que es una clave
externa para relacionarla con la table cursos. las relaciones  que tienen estos
modelos entre si.las reglas para las claves externas son

1.       Nombre
en singular del modelo que sigue

2.       Seguido
de _id




<?php

class Alumno extends AppModel{

var $name='Alumno';

var $belongsTo='Curso';// pértenece a : Curso

}

?>

Se nota que en el modelo Alumno
hemos puesto la variable $belongsTo por que esigue a un modole en este caso a
curso

<?php

class Curso extends AppModel{

var $name='Curso';

var $hasMany='Alumno';//tiene muchos 

}

?>



Y en Curso hemos puesto la
variable $hasMany por que un curso puede tener muchos Alumnos (en este caso).Y
así de fácil hemos definido la relación que guardan estos dos modelos



Una ves hecho las tablas vamos a crear los modelos y definir.






Ya tenemos definidos los
modelos y la relación que guardan entre ellos  pero no podemos definir nada
sin  los controladores ni las vistas. Para ver esto mas rápido tenemos la
variable Scaffolding. Con esta variable podemos probar estas relaciones. Las
definimos en los dos controladores.



class CursosController extends AppController{

   var $name=  'Cursos';

   Var $sacaffold;

}



class
AlumnosController extends AppController{

   var $name=  'Alumnos';

   Var $sacaffold;

}

Ya con estos controladores
podemos esa relación. Puedes llenar algunos cursos primero para poder ver como
desde la creación de un  nuevo alumno puedes escoger el id del Curso al que
pertenecerá.

 



Recuperar Datos de tablas
relacionadas

Una ves hecho un ligero trabajo
susio cakephp nos da la grata noticia  que para poder recuperar datos de tablas
relacionadas no necesitamos hacer nada. El mismo método find(‘all’)
nos devuelve también los registros relacionados con el registro solicitado en
la búsqueda.Whore!!



Solo tenemos que tener en cuenta que si queremos sacar registros de otros
modelos relacionados indirectamente usamos una propiedad del modelo llamado
$this->Model->recursive=1 que es el valor por defecto;



La forma que nos devolverá los registros relacionados dependerá la variable que
ayamos definido en el modelo ya sea $hasMany o $belongsTo









Método find() (cakePhp) Escucha este post

1 comentarios



http://aacini.comlu.com/blogger/metodoFine/cakephp-1024-768.jpg

Hola que tal queridos lectores(si
es que hay alguno por ahi) hoy les traigo otro tema acerca de cakephp. La forma
de utilizar el método find() de un Model cualquiera.

Como ya sabrás para contar con una conexión a la  base de
datos tendrás que configurar un el archivo  database.php. que se encuentra en
MiProyecto\app\config\(original mente se llama database.php.default) y después crear
un archivo en MiProyecto \app\models llamado como la tabla que creas te en
mysql pero  en singular (sin la ‘s’)por ejemplo  alumno.php.

<?php
//la clase debe ser igual que el nombre del archivo, siempre con sintaxis de camello

class Alumno extends AppModel{
var $name='Alumno';
}
?>

Y finalmente el controller que va en MiProyecto\app\controllers
con el nombre  de la tabla +”_controller”seria: alumnos_controller.php con el código


<?php
//como el archivo +Controller , siempre con sintaxis Camello
class AlumnosController extends AppController{
                var $name='Alumnos';
}
 ?>




Ahora si a lo que nos truje: el método find()

Siempre  por defcto en nuestro controller hay una instancia de la clase modelo que
por defecto corresponde a dicho modelo. Por ejemplo si el controller se llama AlumnosController si instanciara

Alumno en el controller

y o usamos asi:

$this->Alumno->find();

Es te método solo tiene dos parámetros :

1.- $type  que es del tipo String y puede tener los
siguientes valores
a) all devuelve todos los registros que cumplen las condiciones si las hay(devuelve
un array multidimensional)
b) first devuelve solo el primer registro en cumplir las condiciones(devuelve
un array diferente si lo usamos)
c) count devuelve el numero totla de registros  dados por la consulta (devuelve
un array diferente)

2.- $constraints es un array asociativo con los posibles ítems:
a) fields es array de los campos que tienen que ser devuelta por la consulta
b) conditions es un array de condiciones  aplicadas a where(sql)
c) order string define  la clausula ORDER BY
d)limit es un entero  especifica el numero de ítems
e)offset desde cual ítem empezar



Probemos suponiendo que tenemos la siguiente tabla


Para que la tabla nos devuelva todos los registros sin
condiciones seria

$answer=$this->Alumno->find(‘all’);

como se ve solo le pasamos el primer parámetro
Para  preguntar solo por los ítems nombre,apellido y edad usamos  el segundo parámetro
y el ítem fields prefuntamos por dichos campos seria:
$ answer =
$this->Alumno->find(
              'all',
                array(
                       'fields'=>array(
                                               'Alumno.nombre',
                                               'Alumno.apellidos',
                                               'Alumno.edad'
                                     ),
));


Como se ve son dos arrays en el segundo parámetro
Ahora si queremos  restringir mas la búsqueda debemos usar los demás ítems en
el segundo parámetro.Por ejemplo en esta consulta preguntamos por los campos
nombre,apellidos y edad, pero solo queremos los que en nombre empiezen por j(
'conditions'=>array('Alumno.nombre
like'=>'J%'),), y también los ordenamos  en
orden ascendente(
'order'=>'Alumno.apellidos ASC',).Finalmente limitamos los resultados a solo 10('limit'=>10)


$ answer = $this->Alumno->find(
              'all',
                array(
                       'fields'=>array(
                                               'Alumno.nombre',
                                               'Alumno.apellidos',
                                               'Alumno.edad'
                                     ),
                      'conditions'=>array('Alumno.nombre like'=>'J%'),
                      'order'=>'Alumno.apellidos ASC',
                      'limit'=>10
));
                Otros ejemplos:


// numero total de alumnos
que empiezan con el caracter j

                $
answer = $this->Alumno->find('count',
                array(
                      'conditions'=>array('Alumno.nombre like'=>'J%'),
                ));


//encontrar el codigo  y el
nombre del alumno con el id  mas alto y ordenar por id descendente


$ answer = $this->Alumno->find('first',
                array(
                     'fields'=>array(
                                   'Alumno.codigo',
                                  'Alumno.nombre'
              ),
                         'order'=>'Alumno.id DESC'
                ));

// los alumnos que tienen el
apellido Montero ,ordenar por nombre ascendente


                $alumnosMontero
= $this->Alumno->find('all',
                array(
                               'fields'=>array(
                                               'Alumno.nombre',
                                               'Alumno.apellidos',
                                               'Alumno.edad'
                                     ),
                      'conditions'=>array('Alumno.apellidos
like'=>'%Montero%'),
'order'=>'Alumno.nombre ASC',
                ));





Ahora
metamos las manos bien adentro en esto, veamos consultas más complejas


¿Como
preguntar por un mismo campo pero con valores diferentes?. Por ejemplo
preguntar por 3  códigos específicos .Lo que se tiene que hacer es en lugar de
igualar  un string en ‘conditions’, lo relacionamos con otro array (po rdefecto
se entiende que es igual al menos que especifiquemos lo contrario)

$alumnos030507=
$this->Alumno->find('all',
array(
                               'fields'=>array(
                                               'Alumno.codigo',
                                               'Alumno.nombre',
                                               'Alumno.apellidos',
                                               'Alumno.edad'
                                     ),
'conditions'=>array('Alumno.codigo'=>array('0003','0005','0007'))
                ));

Condiciones múltiples

Por defecto el condicional es
and . Si queremos tener mas de una condición con este operador lo podemos
omitir y solo agregar ítems en  el array conditions

Como vemos ahora:

                // Monteros que tengan 17 años
                $alumnosMontero17= $this->Alumno->find('all',
                array(
                               'fields'=>array(
                                               'Alumno.nombre',
                                               'Alumno.apellidos',
                                               'Alumno.edad'
                                     ),
                      'conditions'=>array('Alumno.apellidos
like'=>'%Montero%','Alumno.edad'=>'17')
                ));

Esta consulta seria para pedir
los campos nombre, apellidos y edad  de los que tengan el apellido Montero y
tengan edad de 17.

Para ocupar otro operador por
ejemplo or, Dentro del array relacional ‘conditions’ tenemos que meter un ítem
llamado ‘or’ que es otro array relacional . Dentro de este array metemos las
condiciones. Por ejemplo la siguiente consulta pregunta por los Jaime o los que
tengan 19 años de dad





$alumnosMonteroor17=
$this->Alumno->find('all',
                array(
                               'fields'=>array(
                                               'Alumno.nombre',
                                               'Alumno.apellidos',
                                               'Alumno.edad'
                                     ),
                      'conditions'=>array(
                                               'or'=>array('Alumno.apellidos
like'=>'%Montero%','Alumno.edad'=>'17')
                                 )
                ));



Esta consulta seira
equivalente a

if(($apellidos==’Montero’)or($edad==17))

en php y esta es la consulta sql que hace

SELECT `Alumno`.`nombre`, `Alumno`.`apellidos`, `Alumno`.`edad`
FROM `alumnos` AS `Alumno` WHERE ((`Alumno`.`apellidos` like '%Montero%') OR
(`Alumno`.`edad` = '17'))





Para combinar operadores and y
or los agrupamos en arrays. Vemos un ejemplo  de la condiciones para una
consulta:



'conditions'=>array(
                                 'or'=>array(
                                                                              array('Alumno.apellidos
LIKE'=>'%Montero%','Alumno.edad'=>'17'),
                                                                              array('Alumno.nombre
LIKE'=>'Rosa','Alumno.edad'=>'19')
                                               )
                                )

En esta consulta preguntamos
por los Monteros que tengan 17 años o  los Rosa  que tengan 19 años. Como se ve
creamos un ítem llamado ‘or’ y lo hacemos igual a un array donde dentro ponemos
todos los arrays que se entenderán como las partes de ese or, Al mismo tiempo
esos arrays anidados tienen dos ítems  y por defecto usan el and asi que las
partes de ese array serán tomados como los  los valores para ese and. Si pudiéramos
pasarlo a un código php mas simple este seria:

if(
( ($apellidos==’Montero’)and($edad==17)) or (($nombre==’Rosa’)and($edad==19)) )

O bien su consulta que hace
es :

SELECT `Alumno`.`nombre`, `Alumno`.`apellidos`, `Alumno`.`edad`
FROM `alumnos` AS `Alumno` WHERE ((((`Alumno`.`apellidos` LIKE '%Montero%') AND
(`Alumno`.`edad` = '17'))) OR (((`Alumno`.`nombre` LIKE 'Rosa') AND
(`Alumno`.`edad` = '19'))))



Otra función parecida a find() pero mas fácil de usar es
findBy()

donde agregamos  el nombre del campo que deseamos preguntar y como argumento el
campo. Nos devuelve el primer ítem que coincida en un array similar al que
devuelve ‘first’

$alumnosMagic=$this->Alumno->findByNombre('Manuel');

Solo nos devuelve el primer ítem si queremos que devuelva todos
usamos Si queremos que nos devuelva todos usamos finnAllBy(). En este método
igual le pasamos el nombre del campo por el que queremos preguntar en sintaxis
camello.

$alumnosAllBy=$this->Alumno->findAllByEdad('17');

Nos devuelve un array similar al devuelto por ‘all’



El codigo (documental de openSource) Escucha este post

0 comentarios
El documental e s “The Code: Linux” (oficialmente “The Code“), el documental finlandés que se emitió a través de ARTE (en España también),  que también podéis ver bajo estas líneas (51 minutos) en su versión española. Aparecen también esos mitos vivos del mundo Linux, además de algunos más que han dedicado buena parte de su tiempo a picar código. Gracias a Sombra, el usuario que lo envió a Google Video.


Creación de aplicaciones rápidas con Cackephp ( Scaffolding) Escucha este post

0 comentarios


Hola que tal . Yo aquí de vuelta . Les traigo un tema
variado. Como ya muchos saben cakephp es un framework para php  algo
controvertido. Muy fácil de usar pero  no a muchos les gusta. En esta ocasión
les daré una muestra de su sencillez,





Primero creamos la base de datos con la tabla
en phpmyadmin importamos este código 
CREATE DATABASE `lista` ;

CREATE TABLE IF NOT EXISTS `tareas` (

  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,

  `nombre` varchar(255) NOT NULL,

  `fecha` datetime NOT NULL,

  `prioridad` int(2) NOT NULL,

  `completado` tinyint(1) NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

Es importante sabes y seguir las convenciones de cakephp

-El nombre de la tabla debe estar en plural (tareas)

-La clave primaria debe tener por nombre id



Luego creamos una instancia de cakephp (solo copiando el
original en www)

Y la renombremos a lista. Y congiguramos la base de datos
en  el archivo

lista\app\config\ database.php.defaulf a database.php
solamente

abrimos el archivo y configuramos las variables (solo poner
usuario ,pass y base de datos)

 




Segundo paso creamos  el archivo  modelo  en la carpeta lista\app\models\

El nombre es preciso que sea el nombre de la tabla en
singular y minúsculas osea : tarea.php


Y creamos la clase que extienda de AppModel

todos los modelos deben estar en sintaxis camello   (la primer letra de cada
palabra en mayusculas) y creamos una variable  llamada $name igual a el nombre
de la clase  esto quedaría asi.



Tercer paso hacemos el controlador

En la carpeta lista\app\controllers creamos un archivo
controlador  que  debe tener por nombre el mismo nombre que la tabla de la base
de datos   + _controller  esto seria lista_controller.php


Y escribimos el código php

una clase  de nombre  de la tabla  + controller  y en sintaxis camello seria
asi: TareasController  y estendida de la clase AppController

Además debemos de añadir 2 variables  unas que sea de nombre
$name  igual  a ‘Tareas’ (la tabla que controla) y una segunda variable de
nombre  $scaffold;


Y con esto ya tenemos una aplicación creada  que permite
agregar editar  eliminar y ver   el contenido de una tabla  veamos la en :

http://localhost/lista/tareas
algo así:


como vimos escribimos muy poco código pero tenemos que seguir las convenciones
establecida por cakephp  
 les dejo mis archivo final aqui

Touchégg in Ubuntu 10.10 with Apple Magic Trackpad Escucha este post

0 comentarios