https://wiki.kumbiaphp.com/api.php?action=feedcontributions&user=Argordmel&feedformat=atom
KumbiaPHP Framework Wiki - Contribuciones del usuario [es]
2024-03-29T12:26:53Z
Contribuciones del usuario
MediaWiki 1.34.1
https://wiki.kumbiaphp.com/index.php?title=Login&diff=4319
Login
2017-12-19T19:35:57Z
<p>Argordmel: </p>
<hr />
<div>{{cleanupbox<br />
|image=[[Archivo:Import.png|40px]]<br />
|texto ='''Este Artículo esta siendo revisado por los Kumbieros.'''<br /><br />
<span style="font-size:90%">El ejemplo presente es completamente funcional para la versión 1.0 Spirit beta1 (no aplica para la 1.0 Spirit beta2), pero su redacción debe mejorar</span><br />
}}<br />
<br />
Tomandose en cuenta que en muchas app web las sesiones de login es una parte fundamental, este es un sencillo y basico ejemplo de un Login en KumbiaPHP Framework. Esta practica esta basada para la version 1.0 Spirit beta1 (no aplica para la versión 1.0 beta2).<br />
<br />
Vamos a crear una tabla en la base de datos (la base de datos '''test''' para esta practica) llamada '''usuarios'''.<br />
<br />
* La tabla: '''usuarios'''<br />
<source lang=sql><br />
--<br />
-- Base de datos: `test`<br />
--<br />
<br />
-- --------------------------------------------------------<br />
<br />
--<br />
-- Estructura de tabla para la tabla `usuarios`<br />
--<br />
<br />
CREATE TABLE IF NOT EXISTS `usuarios` (<br />
`id` int(2) NOT NULL AUTO_INCREMENT,<br />
`usuario` varchar(10) NOT NULL,<br />
`clave` varchar(10) NOT NULL,<br />
`nivel` int(1) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;<br />
<br />
--<br />
-- Volcar la base de datos para la tabla `usuarios`<br />
--<br />
<br />
INSERT INTO `usuarios` (`id`, `usuario`, `clave`, `nivel`) VALUES<br />
(1, 'jose', '123', 1);<br />
</source><br />
<br />
<br />
* El modelo: '''usuarios.php'''<br />
<source lang=php><br />
<?php<br />
class Usuarios extends ActiveRecord<br />
{<br />
<br />
}<br />
?><br />
</source><br />
<br />
<br />
* El controlador: '''usuarios_controller.php'''<br />
<source lang=php><br />
<?php<br />
<br />
class UsuariosController extends ApplicationController<br />
{<br />
<br />
public function index() <br />
{<br />
<br />
}<br />
<br />
function ingresar()<br />
{<br />
Load::lib('auth');<br />
<br />
if ($this->has_post("usuario","clave"))<br />
{<br />
$usuario = $this->post("usuario");<br />
$pwd = $this->post("clave");<br />
$auth = new Auth("model", "class: usuarios", "usuario: $usuario", "clave: $pwd");<br />
<br />
if ($auth->authenticate())<br />
{<br />
Flash::success("Correcto");<br />
} <br />
else <br />
{<br />
Flash::error("Falló");<br />
}<br />
}<br />
}<br />
}<br />
?><br />
</source><br />
<br />
<br />
* La vista: '''ingresar.phtml''' (crea una carpeta en /views/ llamada usuarios, quedando asi /views/usuarios/ y coloca la vista ahi)<br />
<source lang=php><br />
<?php View::content(); ?><br />
<br />
<div id="login"><br />
<?php echo form_tag("usuarios/ingresar"); ?><br />
<div id="titulo"><h3>Inicio de Sesion</h3></div><br />
<div class="dato-form"><br />
<div class="etiqueta"><label for="usuario">Usuario:</label></div><br />
<div class="texto"><?php echo text_field_tag("usuario","size: 10"); ?></div><br />
</div><br />
<div class="dato-form"><br />
<div class="etiqueta"><label for="clave">Clave:</label></div><br />
<div class="texto"><?php echo password_field_tag("clave","size: 10"); ?></div><br />
</div><br />
<div class="dato-form"><br />
<?php echo submit_tag("Ingresar","class: boton"); ?><br />
</div><br />
<?php echo end_form_tag(); ?></p><br />
</div><br />
</source><br />
<br />
Eso es todo, cargas la vista de login la cual seria: http://localhost/rutamicarpetakumbiaphp/app_login/usuarios/ingresar<br />
<br />
== Descarga ==<br />
<br />
Descarga: [http://dl.dropbox.com/u/2807704/kumbiaPHP/v1_b1/app_login.zip app_login] para el '''core''' del '''beta1''' de Spirit v1.0<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>
Argordmel
https://wiki.kumbiaphp.com/index.php?title=Login&diff=4318
Login
2017-12-19T19:35:37Z
<p>Argordmel: </p>
<hr />
<div>{{cleanupbox<br />
|image=[[Archivo:Import.png|40px]]<br />
|texto ='''Este Artículo esta siendo revisado por los Kumbieros.'''<br /><br />
<span style="font-size:90%">El ejemplo presente es completamente funcional para la versión 1.0 Spirit beta1 (no aplica para la 1.0 Spirit beta2, pero su redacción debe mejorar</span><br />
}}<br />
<br />
Tomandose en cuenta que en muchas app web las sesiones de login es una parte fundamental, este es un sencillo y basico ejemplo de un Login en KumbiaPHP Framework. Esta practica esta basada para la version 1.0 Spirit beta1 (no aplica para la versión 1.0 beta2).<br />
<br />
Vamos a crear una tabla en la base de datos (la base de datos '''test''' para esta practica) llamada '''usuarios'''.<br />
<br />
* La tabla: '''usuarios'''<br />
<source lang=sql><br />
--<br />
-- Base de datos: `test`<br />
--<br />
<br />
-- --------------------------------------------------------<br />
<br />
--<br />
-- Estructura de tabla para la tabla `usuarios`<br />
--<br />
<br />
CREATE TABLE IF NOT EXISTS `usuarios` (<br />
`id` int(2) NOT NULL AUTO_INCREMENT,<br />
`usuario` varchar(10) NOT NULL,<br />
`clave` varchar(10) NOT NULL,<br />
`nivel` int(1) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;<br />
<br />
--<br />
-- Volcar la base de datos para la tabla `usuarios`<br />
--<br />
<br />
INSERT INTO `usuarios` (`id`, `usuario`, `clave`, `nivel`) VALUES<br />
(1, 'jose', '123', 1);<br />
</source><br />
<br />
<br />
* El modelo: '''usuarios.php'''<br />
<source lang=php><br />
<?php<br />
class Usuarios extends ActiveRecord<br />
{<br />
<br />
}<br />
?><br />
</source><br />
<br />
<br />
* El controlador: '''usuarios_controller.php'''<br />
<source lang=php><br />
<?php<br />
<br />
class UsuariosController extends ApplicationController<br />
{<br />
<br />
public function index() <br />
{<br />
<br />
}<br />
<br />
function ingresar()<br />
{<br />
Load::lib('auth');<br />
<br />
if ($this->has_post("usuario","clave"))<br />
{<br />
$usuario = $this->post("usuario");<br />
$pwd = $this->post("clave");<br />
$auth = new Auth("model", "class: usuarios", "usuario: $usuario", "clave: $pwd");<br />
<br />
if ($auth->authenticate())<br />
{<br />
Flash::success("Correcto");<br />
} <br />
else <br />
{<br />
Flash::error("Falló");<br />
}<br />
}<br />
}<br />
}<br />
?><br />
</source><br />
<br />
<br />
* La vista: '''ingresar.phtml''' (crea una carpeta en /views/ llamada usuarios, quedando asi /views/usuarios/ y coloca la vista ahi)<br />
<source lang=php><br />
<?php View::content(); ?><br />
<br />
<div id="login"><br />
<?php echo form_tag("usuarios/ingresar"); ?><br />
<div id="titulo"><h3>Inicio de Sesion</h3></div><br />
<div class="dato-form"><br />
<div class="etiqueta"><label for="usuario">Usuario:</label></div><br />
<div class="texto"><?php echo text_field_tag("usuario","size: 10"); ?></div><br />
</div><br />
<div class="dato-form"><br />
<div class="etiqueta"><label for="clave">Clave:</label></div><br />
<div class="texto"><?php echo password_field_tag("clave","size: 10"); ?></div><br />
</div><br />
<div class="dato-form"><br />
<?php echo submit_tag("Ingresar","class: boton"); ?><br />
</div><br />
<?php echo end_form_tag(); ?></p><br />
</div><br />
</source><br />
<br />
Eso es todo, cargas la vista de login la cual seria: http://localhost/rutamicarpetakumbiaphp/app_login/usuarios/ingresar<br />
<br />
== Descarga ==<br />
<br />
Descarga: [http://dl.dropbox.com/u/2807704/kumbiaPHP/v1_b1/app_login.zip app_login] para el '''core''' del '''beta1''' de Spirit v1.0<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>
Argordmel
https://wiki.kumbiaphp.com/index.php?title=Login&diff=4317
Login
2017-12-19T19:34:37Z
<p>Argordmel: </p>
<hr />
<div>{{cleanupbox<br />
|image=[[Archivo:Import.png|40px]]<br />
|texto ='''Este Artículo esta siendo revisado por los Kumbieros.'''<br /><br />
<span style="font-size:90%">El ejemplo presente es completamente funcional, pero su redacción debe mejorar</span><br />
}}<br />
<br />
Tomandose en cuenta que en muchas app web las sesiones de login es una parte fundamental, este es un sencillo y basico ejemplo de un Login en KumbiaPHP Framework. Esta practica esta basada para la version 1.0 Spirit beta1 (no aplica para la versión 1.0 beta2).<br />
<br />
Vamos a crear una tabla en la base de datos (la base de datos '''test''' para esta practica) llamada '''usuarios'''.<br />
<br />
* La tabla: '''usuarios'''<br />
<source lang=sql><br />
--<br />
-- Base de datos: `test`<br />
--<br />
<br />
-- --------------------------------------------------------<br />
<br />
--<br />
-- Estructura de tabla para la tabla `usuarios`<br />
--<br />
<br />
CREATE TABLE IF NOT EXISTS `usuarios` (<br />
`id` int(2) NOT NULL AUTO_INCREMENT,<br />
`usuario` varchar(10) NOT NULL,<br />
`clave` varchar(10) NOT NULL,<br />
`nivel` int(1) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;<br />
<br />
--<br />
-- Volcar la base de datos para la tabla `usuarios`<br />
--<br />
<br />
INSERT INTO `usuarios` (`id`, `usuario`, `clave`, `nivel`) VALUES<br />
(1, 'jose', '123', 1);<br />
</source><br />
<br />
<br />
* El modelo: '''usuarios.php'''<br />
<source lang=php><br />
<?php<br />
class Usuarios extends ActiveRecord<br />
{<br />
<br />
}<br />
?><br />
</source><br />
<br />
<br />
* El controlador: '''usuarios_controller.php'''<br />
<source lang=php><br />
<?php<br />
<br />
class UsuariosController extends ApplicationController<br />
{<br />
<br />
public function index() <br />
{<br />
<br />
}<br />
<br />
function ingresar()<br />
{<br />
Load::lib('auth');<br />
<br />
if ($this->has_post("usuario","clave"))<br />
{<br />
$usuario = $this->post("usuario");<br />
$pwd = $this->post("clave");<br />
$auth = new Auth("model", "class: usuarios", "usuario: $usuario", "clave: $pwd");<br />
<br />
if ($auth->authenticate())<br />
{<br />
Flash::success("Correcto");<br />
} <br />
else <br />
{<br />
Flash::error("Falló");<br />
}<br />
}<br />
}<br />
}<br />
?><br />
</source><br />
<br />
<br />
* La vista: '''ingresar.phtml''' (crea una carpeta en /views/ llamada usuarios, quedando asi /views/usuarios/ y coloca la vista ahi)<br />
<source lang=php><br />
<?php View::content(); ?><br />
<br />
<div id="login"><br />
<?php echo form_tag("usuarios/ingresar"); ?><br />
<div id="titulo"><h3>Inicio de Sesion</h3></div><br />
<div class="dato-form"><br />
<div class="etiqueta"><label for="usuario">Usuario:</label></div><br />
<div class="texto"><?php echo text_field_tag("usuario","size: 10"); ?></div><br />
</div><br />
<div class="dato-form"><br />
<div class="etiqueta"><label for="clave">Clave:</label></div><br />
<div class="texto"><?php echo password_field_tag("clave","size: 10"); ?></div><br />
</div><br />
<div class="dato-form"><br />
<?php echo submit_tag("Ingresar","class: boton"); ?><br />
</div><br />
<?php echo end_form_tag(); ?></p><br />
</div><br />
</source><br />
<br />
Eso es todo, cargas la vista de login la cual seria: http://localhost/rutamicarpetakumbiaphp/app_login/usuarios/ingresar<br />
<br />
== Descarga ==<br />
<br />
Descarga: [http://dl.dropbox.com/u/2807704/kumbiaPHP/v1_b1/app_login.zip app_login] para el '''core''' del '''beta1''' de Spirit v1.0<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>
Argordmel
https://wiki.kumbiaphp.com/index.php?title=Como_Crear_Relacion_1:N_KumbiaPHP_Framework&diff=4078
Como Crear Relacion 1:N KumbiaPHP Framework
2015-04-18T02:11:20Z
<p>Argordmel: /* [ profesionales_controller.php ] */</p>
<hr />
<div>{{cleanupbox<br />
|image=[[Archivo:Import.png|40px]]<br />
|texto ='''Este Artículo esta siendo revisado por los Kumbieros.'''<br /><br />
<span style="font-size:90%">El ejemplo presente es completamente funcional, pero su redacción debe mejorar</span><br />
}}<br />
<br />
En este ejemplo se explica como se realizan asociaciones sobre nuestro modelos haciendo uso de las '''Relaciones de ActiveRecord'''.<br />
<br />
Tenemos dos tablas (especialidades y profesionales) entre las cuales existe una relación de 1:N (1 a muchos), es decir un profesional tiene una especialidad (para efecto del ejemplo) y una especialidad tiene muchos profesionales, la idea de las relaciones en [http://www.kumbiaphp.com KumbiaPHP] es que cuando se realice una búsqueda de profesionales implícitamente este su relación, en este caso seria su especialidad (un objeto) y cuando se realice una búsqueda por especialidad obtener los profesionales (array de objectos) asociados a esta.<br />
<br />
==Estructura de las Tablas==<br />
<br />
<source lang=mysql><br />
-- -----------------------------------------------------<br />
-- Table `mydb`.`especialidades`<br />
-- -----------------------------------------------------<br />
CREATE TABLE IF NOT EXISTS `mydb`.`especialidades` (<br />
`id` INT NOT NULL ,<br />
`nombre` VARCHAR(45) NULL ,<br />
PRIMARY KEY (`id`) )<br />
ENGINE = InnoDB;<br />
<br />
<br />
-- -----------------------------------------------------<br />
-- Table `mydb`.`profesionales`<br />
-- -----------------------------------------------------<br />
CREATE TABLE IF NOT EXISTS `mydb`.`profesionales` (<br />
`id` INT NOT NULL AUTO_INCREMENT ,<br />
`nombre` VARCHAR(45) NULL ,<br />
`apellido` VARCHAR(45) NULL ,<br />
`especialidades_id` INT NOT NULL ,<br />
PRIMARY KEY (`id`) ,<br />
INDEX `fk_profesionales_especialidades` (`especialidades_id` ASC) ,<br />
CONSTRAINT `fk_profesionales_especialidades`<br />
FOREIGN KEY (`especialidades_id` )<br />
REFERENCES `mydb`.`especialidades` (`id` )<br />
ON DELETE NO ACTION<br />
ON UPDATE NO ACTION)<br />
ENGINE = InnoDB;<br />
<br />
</source><br />
<br />
==Relación entre los Modelos==<br />
<br />
[[Archivo:Relacion.jpg]]<br />
<br />
==El Modelo==<br />
<br />
Con el método [[Asociaciones#Pertenece_.28belongs_to.29 | belongs_to()]], se establece una relación de '''pertenece a''', es decir de una relación 1:1 (Modelo ER) entre el profesional y la especialidad desarrollada por el mismo.<br />
<br />
Por otra parte con [[Asociaciones#Tiene_muchos_.28has_many.29 | has_many()]], se establece una relación es de '''tiene muchos''', es decir una relación 1:N (Modelo ER), en el caso del ejemplo una especialidad puede tener (engloba) a varios profesionales.<br />
<br />
<source lang=php><br />
<?php<br />
class Profesionales extends ActiveRecord<br />
{<br />
public function initialize()<br />
{<br />
//Relaciones<br />
//Un profesional tiene una especialidad<br />
$this->belongs_to('especialidades');<br />
}<br />
}<br />
</source><br />
<br />
<br />
<source lang=php><br />
<?php<br />
class Especialidades extends ActiveRecord<br />
{<br />
public function initialize()<br />
{<br />
//Relaciones<br />
//Un especialidad tiene muchos profesionales<br />
$this->has_many('profesionales');<br />
}<br />
}<br />
</source><br />
<br />
==Ejemplo de Uso==<br />
Suponiendo que necesitamos crear una lista de los profesionales guardados en la tabla profesionales con sus respectivas especialidades.<br />
<br />
== Listar los Profesionales con su Especialidad ==<br />
<br />
===[ profesionales_controller.php ] ===<br />
<br />
Tenemos que definir en el controlador el arreglo (variable $profesionales) que devuelve la operación en la base de datos.<br />
<br />
<source lang=php><br />
<?php<br />
<br />
Load::models('profesionales');<br />
<br />
class ProfesionalesController extends AppController {<br />
public function listar() <br />
{<br />
$profesional = new Profesionales();<br />
$this->profesionales = $profesional -> find(); //Obtenemos todos los profesionales<br />
<br />
}<br />
}<br />
?><br />
</source><br />
<br />
=== Obteniendo las Relación de Profesionales ===<br />
Para obtener la relación de un profesional obviamente hay que recorrer el array que devolvió el método [[Consultas#find | find()]] pero internamente en cada objeto está la relación porque así fue definida, Un Profesional tiene una Especialidad.<br />
<br />
=== Vista [ listar.phtml ] ===<br />
<br />
<source lang=php><br />
<?php View::content()?><br />
<br><br><br />
<div align="center"><br />
<h5>Lista de Profesionales</h5><br><br />
<table border="1"><br />
<tr style="background-color: #c0c0c0;"><br />
<td>Profesional</td><br />
<td>Especialidad</td><br />
</tr><br />
<?php foreach ($profesionales as $profesional) :?><br />
<tr><br />
<td><?php echo $profesional->apellido . ", " . $profesional->nombre ?></td><br />
<td><?php echo $profesional->getEspecialidades()->nombre ?></td><br />
</tr> <br />
<?php endforeach;?><br />
</table><br />
</div><br><br><br />
</source><br />
<br />
=== ¿Pero como se obtienen los datos de la Especialidad? ===<br />
<br />
Pongamos nuestra atención en esta linea:<br />
<source lang=php><br />
<td><?php echo $profesional->getEspecialidades()->nombre ?></td><br />
</source><br />
<br />
De esta forma KumbiaPHP nos hace la conexión entre las dos tablas, solo tenemos que especificar getNombreDelModelo()->campo;<br />
<br />
Si por ejemplo tuviéramos una relación adicional entre una tabla Facultades y la tabla Especialidades, podríamos obtener la facultad de cada profesional mediante:<br />
<source lang=php><br />
<td><?php echo $profesional->getEspecialidades()->getFacultad()->nombreFacultad; ?></td><br />
</source><br />
<br />
<br />
<br />
<br />
=== Screenshot de la Vista ===<br />
[[Archivo:Vista1_relacion_1_N_KumbiaPHP.jpg|center|Lista de profesionales con su Especialidad]]<br />
<br />
=== Obteniendo las Relación de Especialidades ===<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
Para obtener la relación de las Especialidades, se debe obtener la lista de especialidades y luego, por cada una de las especialidades, agrupar los profesionales que tienen esa especialidad.<br />
<br />
=== Controlador para listar Profesionales por Especialidad ===<br />
<br />
===[ profesionales_controller.php ] ===<br />
<br />
Se deben realizar las siguientes modificaciones al controlador.<br />
<br />
<source lang=php><br />
<?php<br />
<br />
Load::models('especialidades');<br />
<br />
class ProfesionalesController extends AppController {<br />
public function listar() <br />
{<br />
$especialidad = new Especialidades();<br />
$this->especialidades = $especialidad -> find(); //Obtenemos todas las especialidades<br />
<br />
}<br />
}<br />
?><br />
</source><br />
<br />
=== En la Vista correspondiente ===<br />
<source lang=php><br />
<?php View::content()?><br />
<div align="center"><br />
<h5>Lista de Profesionales por Especialidad</h5><br><br />
<table border="1"><br />
<?php foreach ($especialidades as $especialidad) :?><br />
<tr><td colspan="2">Especialidad : <h5><?php echo $especialidad->nombre ?></h5><br></td></tr><br />
<tr style="background-color: #c0c0c0;"><br />
<td>Profesional</td><br />
<td>Telefono</td><br />
</tr><br />
<tr><br />
<?php foreach ($especialidad->getProfesionales() as $profesional) : ?><br />
<td><?php echo $profesional->apellido .", ".$profesional->nombre ?></td><br />
<td><?php echo $profesional->telefono1 ?></td><br />
</tr> <br />
<?php endforeach; ?><br />
<?php endforeach;?><br />
</table><br />
</div><br />
</source><br />
<br />
=== Screenshot de la vista ===<br />
[[Archivo:Vista2_relacion_1_N_KumbiaPHP.jpg|center|Lista de Especialidades con los Profesionales asociado]]<br />
<br />
<br />
'''Realizado Por: Adrián Murúa (adolphm)'''<br />
'''Modificado Por: Juan Felipe (JF)'''</div>
Argordmel
https://wiki.kumbiaphp.com/index.php?title=Como_Crear_Relacion_1:N_KumbiaPHP_Framework&diff=4077
Como Crear Relacion 1:N KumbiaPHP Framework
2015-04-18T02:10:18Z
<p>Argordmel: /* [ profesionales_controller.php ] */</p>
<hr />
<div>{{cleanupbox<br />
|image=[[Archivo:Import.png|40px]]<br />
|texto ='''Este Artículo esta siendo revisado por los Kumbieros.'''<br /><br />
<span style="font-size:90%">El ejemplo presente es completamente funcional, pero su redacción debe mejorar</span><br />
}}<br />
<br />
En este ejemplo se explica como se realizan asociaciones sobre nuestro modelos haciendo uso de las '''Relaciones de ActiveRecord'''.<br />
<br />
Tenemos dos tablas (especialidades y profesionales) entre las cuales existe una relación de 1:N (1 a muchos), es decir un profesional tiene una especialidad (para efecto del ejemplo) y una especialidad tiene muchos profesionales, la idea de las relaciones en [http://www.kumbiaphp.com KumbiaPHP] es que cuando se realice una búsqueda de profesionales implícitamente este su relación, en este caso seria su especialidad (un objeto) y cuando se realice una búsqueda por especialidad obtener los profesionales (array de objectos) asociados a esta.<br />
<br />
==Estructura de las Tablas==<br />
<br />
<source lang=mysql><br />
-- -----------------------------------------------------<br />
-- Table `mydb`.`especialidades`<br />
-- -----------------------------------------------------<br />
CREATE TABLE IF NOT EXISTS `mydb`.`especialidades` (<br />
`id` INT NOT NULL ,<br />
`nombre` VARCHAR(45) NULL ,<br />
PRIMARY KEY (`id`) )<br />
ENGINE = InnoDB;<br />
<br />
<br />
-- -----------------------------------------------------<br />
-- Table `mydb`.`profesionales`<br />
-- -----------------------------------------------------<br />
CREATE TABLE IF NOT EXISTS `mydb`.`profesionales` (<br />
`id` INT NOT NULL AUTO_INCREMENT ,<br />
`nombre` VARCHAR(45) NULL ,<br />
`apellido` VARCHAR(45) NULL ,<br />
`especialidades_id` INT NOT NULL ,<br />
PRIMARY KEY (`id`) ,<br />
INDEX `fk_profesionales_especialidades` (`especialidades_id` ASC) ,<br />
CONSTRAINT `fk_profesionales_especialidades`<br />
FOREIGN KEY (`especialidades_id` )<br />
REFERENCES `mydb`.`especialidades` (`id` )<br />
ON DELETE NO ACTION<br />
ON UPDATE NO ACTION)<br />
ENGINE = InnoDB;<br />
<br />
</source><br />
<br />
==Relación entre los Modelos==<br />
<br />
[[Archivo:Relacion.jpg]]<br />
<br />
==El Modelo==<br />
<br />
Con el método [[Asociaciones#Pertenece_.28belongs_to.29 | belongs_to()]], se establece una relación de '''pertenece a''', es decir de una relación 1:1 (Modelo ER) entre el profesional y la especialidad desarrollada por el mismo.<br />
<br />
Por otra parte con [[Asociaciones#Tiene_muchos_.28has_many.29 | has_many()]], se establece una relación es de '''tiene muchos''', es decir una relación 1:N (Modelo ER), en el caso del ejemplo una especialidad puede tener (engloba) a varios profesionales.<br />
<br />
<source lang=php><br />
<?php<br />
class Profesionales extends ActiveRecord<br />
{<br />
public function initialize()<br />
{<br />
//Relaciones<br />
//Un profesional tiene una especialidad<br />
$this->belongs_to('especialidades');<br />
}<br />
}<br />
</source><br />
<br />
<br />
<source lang=php><br />
<?php<br />
class Especialidades extends ActiveRecord<br />
{<br />
public function initialize()<br />
{<br />
//Relaciones<br />
//Un especialidad tiene muchos profesionales<br />
$this->has_many('profesionales');<br />
}<br />
}<br />
</source><br />
<br />
==Ejemplo de Uso==<br />
Suponiendo que necesitamos crear una lista de los profesionales guardados en la tabla profesionales con sus respectivas especialidades.<br />
<br />
== Listar los Profesionales con su Especialidad ==<br />
<br />
===[ profesionales_controller.php ] ===<br />
<br />
Tenemos que definir en el controlador el arreglo (variable $profesionales) que devuelve la operación en la base de datos.<br />
<br />
<source lang=php><br />
<?php<br />
<br />
Load::models('profesionales');<br />
<br />
class ProfesionalesController extends AppController {<br />
public function listar() <br />
{<br />
$profesional = new Profesionales();<br />
$this->profesionales = $profesional -> find(); //Obtenemos todos los profesionales<br />
<br />
}<br />
}<br />
?><br />
</source><br />
<br />
=== Obteniendo las Relación de Profesionales ===<br />
Para obtener la relación de un profesional obviamente hay que recorrer el array que devolvió el método [[Consultas#find | find()]] pero internamente en cada objeto está la relación porque así fue definida, Un Profesional tiene una Especialidad.<br />
<br />
=== Vista [ listar.phtml ] ===<br />
<br />
<source lang=php><br />
<?php View::content()?><br />
<br><br><br />
<div align="center"><br />
<h5>Lista de Profesionales</h5><br><br />
<table border="1"><br />
<tr style="background-color: #c0c0c0;"><br />
<td>Profesional</td><br />
<td>Especialidad</td><br />
</tr><br />
<?php foreach ($profesionales as $profesional) :?><br />
<tr><br />
<td><?php echo $profesional->apellido . ", " . $profesional->nombre ?></td><br />
<td><?php echo $profesional->getEspecialidades()->nombre ?></td><br />
</tr> <br />
<?php endforeach;?><br />
</table><br />
</div><br><br><br />
</source><br />
<br />
=== ¿Pero como se obtienen los datos de la Especialidad? ===<br />
<br />
Pongamos nuestra atención en esta linea:<br />
<source lang=php><br />
<td><?php echo $profesional->getEspecialidades()->nombre ?></td><br />
</source><br />
<br />
De esta forma KumbiaPHP nos hace la conexión entre las dos tablas, solo tenemos que especificar getNombreDelModelo()->campo;<br />
<br />
Si por ejemplo tuviéramos una relación adicional entre una tabla Facultades y la tabla Especialidades, podríamos obtener la facultad de cada profesional mediante:<br />
<source lang=php><br />
<td><?php echo $profesional->getEspecialidades()->getFacultad()->nombreFacultad; ?></td><br />
</source><br />
<br />
<br />
<br />
<br />
=== Screenshot de la Vista ===<br />
[[Archivo:Vista1_relacion_1_N_KumbiaPHP.jpg|center|Lista de profesionales con su Especialidad]]<br />
<br />
=== Obteniendo las Relación de Especialidades ===<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
Para obtener la relación de las Especialidades, se debe obtener la lista de especialidades y luego, por cada una de las especialidades, agrupar los profesionales que tienen esa especialidad.<br />
<br />
=== Controlador para listar Profesionales por Especialidad ===<br />
<br />
===[ profesionales_controller.php ] ===<br />
<br />
Se deben realizar las siguientes modificaciones al controlador.<br />
<br />
<source lang=php><br />
<?php<br />
<br />
Load::models('especialidades');<br />
<br />
class ProfesionalesController extends AppController {<br />
public function listar() <br />
{<br />
$especialidad = new Especialidades();<br />
$this->especialidades = $especialidad -> getEspecialidades();<br />
<br />
}<br />
}<br />
?><br />
</source><br />
<br />
=== En la Vista correspondiente ===<br />
<source lang=php><br />
<?php View::content()?><br />
<div align="center"><br />
<h5>Lista de Profesionales por Especialidad</h5><br><br />
<table border="1"><br />
<?php foreach ($especialidades as $especialidad) :?><br />
<tr><td colspan="2">Especialidad : <h5><?php echo $especialidad->nombre ?></h5><br></td></tr><br />
<tr style="background-color: #c0c0c0;"><br />
<td>Profesional</td><br />
<td>Telefono</td><br />
</tr><br />
<tr><br />
<?php foreach ($especialidad->getProfesionales() as $profesional) : ?><br />
<td><?php echo $profesional->apellido .", ".$profesional->nombre ?></td><br />
<td><?php echo $profesional->telefono1 ?></td><br />
</tr> <br />
<?php endforeach; ?><br />
<?php endforeach;?><br />
</table><br />
</div><br />
</source><br />
<br />
=== Screenshot de la vista ===<br />
[[Archivo:Vista2_relacion_1_N_KumbiaPHP.jpg|center|Lista de Especialidades con los Profesionales asociado]]<br />
<br />
<br />
'''Realizado Por: Adrián Murúa (adolphm)'''<br />
'''Modificado Por: Juan Felipe (JF)'''</div>
Argordmel
https://wiki.kumbiaphp.com/index.php?title=Beta2_CRUD_en_KumbiaPHP_Framework&diff=4013
Beta2 CRUD en KumbiaPHP Framework
2014-01-17T02:12:24Z
<p>Argordmel: /* Vistas */</p>
<hr />
<div>{{cleanupbox<br />
|image=[[Archivo:Information_icon4.png|45px]]<br />
|texto ='''Este Artículo cumple con todos los requererimientos de los Kumbieros.'''<br /><br />
}}<br />
{{cleanupbox<br />
|texto ='''Este ejemplo es funcional para la [[KumbiaPHP_Framework_Versión_1.0_Beta2| Versión Beta2 en desarrollo]]''' es un boceto de CRUD <br /><br />
}}<br />
== Introducción ==<br />
Este ejemplo nos permitirá de manera sencilla conocer y entender la implementación de un CRUD (Create, Read, Update y Delete en inglés) sin la necesidad de un Scaffold (<s>StandardForm</s>) y un manejo correcto del MVC en KumbiaPHP.<br />
<br />
'''El CRUD de la beta1 sigue funcionando igual en la beta2, pero queda desaconsejado.'''<br />
En la versión 1.0 se podrá usar de las 2 maneras. Y la 1.2 que saldrá junto a la 1.0 sólo se usará lo nuevo y se eliminará lo desaconsejado.<br />
<br />
== Configurando database.ini ==<br />
Configurar el archivo [[KumbiaPHP_Framework_Versión_1.0_Spirit#databases.ini|databases.ini]], con los datos y motor de Base de Datos a utilizar.<br />
<br />
== Modelo ==<br />
'''Crear el Modelo''' el cual esta viene dado por la definición de una tabla en la BD, para efecto del ejemplo creamos la siguiente tabla.<br />
<br />
<pre><br />
CREATE TABLE menus<br />
(<br />
id int unique not null auto_increment,<br />
nombre varchar(100),<br />
titulo varchar(100) not null,<br />
primary key(id)<br />
)<br />
</pre><br />
<br />
Vamos ahora a definir el modelo el cual nos permite interactuar con la BD.<br />
<br />
'''''[app]/models/menus.php:'''''<br />
<source lang="php" line><br />
<?php<br />
class Menus extends ActiveRecord<br />
{<br />
/**<br />
* Retorna los menu para ser paginados<br />
*<br />
*/<br />
public function getMenus($page, $ppage=20)<br />
{<br />
return $this->paginate("page: $page", "per_page: $ppage", 'order: id desc');<br />
}<br />
}<br />
</source><br />
<br />
== Controller ==<br />
<br />
El controlador es encargado de atender las peticiones del cliente (ej. browser) y a su vez de darle una respuesta. En este controller vamos a definir todas las operaciones CRUD que necesitamos.<br />
<br />
<br />
'''''[app]/controllers/menus_controller.php:'''''<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Carga del modelo Menus...<br />
*/<br />
Load::models('menus');<br />
<br />
class MenusController extends AppController {<br />
/**<br />
* Obtiene una lista para paginar los menus<br />
*/<br />
public function index($page=1) <br />
{<br />
$menu = new Menus();<br />
$this->listMenus = $menu->getMenus($page);<br />
}<br />
<br />
/**<br />
* Crea un Registro<br />
*/<br />
public function create ()<br />
{<br />
/**<br />
* Se verifica si el usuario envio el form (submit) y si ademas <br />
* dentro del array POST existe uno llamado "menus"<br />
* el cual aplica la autocarga de objeto para guardar los <br />
* datos enviado por POST utilizando autocarga de objeto<br />
*/<br />
if(Input::hasPost('menus')){<br />
/**<br />
* se le pasa al modelo por constructor los datos del form y ActiveRecord recoge esos datos<br />
* y los asocia al campo correspondiente siempre y cuando se utilice la convención<br />
* model.campo<br />
*/<br />
$menu = new Menus(Input::post('menus'));<br />
//En caso que falle la operación de guardar<br />
if($menu->create()){<br />
Flash::valid('Operación exitosa');<br />
//Eliminamos el POST, si no queremos que se vean en el form<br />
Input::delete();<br />
return; <br />
}else{<br />
Flash::error('Falló Operación');<br />
}<br />
}<br />
}<br />
<br />
/**<br />
* Edita un Registro<br />
*<br />
* @param int $id (requerido)<br />
*/<br />
public function edit($id)<br />
{<br />
$menu = new Menus();<br />
<br />
//se verifica si se ha enviado el formulario (submit)<br />
if(Input::hasPost('menus')){<br />
<br />
if($menu->update(Input::post('menus'))){<br />
Flash::valid('Operación exitosa');<br />
//enrutando por defecto al index del controller<br />
return Router::redirect();<br />
} else {<br />
Flash::error('Falló Operación');<br />
}<br />
} else {<br />
//Aplicando la autocarga de objeto, para comenzar la edición<br />
$this->menus = $menu->find_by_id((int)$id);<br />
}<br />
}<br />
<br />
/**<br />
* Eliminar un menu<br />
* <br />
* @param int $id (requerido)<br />
*/<br />
public function del($id)<br />
{<br />
$menu = new Menus();<br />
if ($menu->delete((int)$id)) {<br />
Flash::valid('Operación exitosa');<br />
}else{<br />
Flash::error('Falló Operación'); <br />
}<br />
<br />
//enrutando por defecto al index del controller<br />
return Router::redirect();<br />
}<br />
}<br />
</source><br />
<br />
== Vistas ==<br />
Agregamos las vistas...<br />
<br />
'''''[apps]/views/menus/index.phtml'''''<br />
<source lang=php><br />
<div class="content"><br />
<?php View::content(); ?><br />
<h3>Menus</h3><br />
<ul><br />
<?php foreach ($listMenus->items as $item) : ?><br />
<li><br />
<?php echo Html::linkAction("edit/$item->id/", 'Editar') ?><br />
<?php echo Html::linkAction("del/$item->id/", 'Borrar') ?><br />
<strong><?php echo $item->nombre ?> - <?php echo $item->titulo ?></strong><br />
</li><br />
<?php endforeach; ?><br />
</ul><br />
<br />
// ejemplo manual de paginador, hay partial listos en formato digg, clasic,....<br />
<?php if($listMenus->prev) echo Html::linkAction("index/$listMenus->prev/", '<< Anterior |'); ?><br />
<?php if($listMenus->next) echo Html::linkAction("index/$listMenus->next/", 'Próximo >>'); ?><br />
</div><br />
</source><br />
<br />
<br />
'''''[apps]/views/menus/create.phtml'''''<br />
<source lang=php><br />
<?php View::content(); ?><br />
<h3>Crear menu<h3><br />
<br />
<?php echo Form::open(); // por defecto llama a la misma url ?><br />
<br />
<label>Nombre<br />
<?php echo Form::text('menus.nombre') ?></label><br />
<br />
<label>Título<br />
<?php echo Form::text('menus.titulo') ?></label><br />
<br />
<?php echo Form::submit('Agregar') ?><br />
<br />
<?php echo Form::close() ?><br />
</source><br />
<br />
<br />
'''''[apps]/views/menus/edit.phtml'''''<br />
<source lang=php><br />
<?php View::content(); ?><br />
<h3>Editar menu<h3><br />
<br />
<?php echo Form::open(); // por defecto llama a la misma url ?><br />
<br />
<label>Nombre<br />
<?php echo Form::text('menus.nombre') ?></label><br />
<br />
<label>Título<br />
<?php echo Form::text('menus.titulo') ?></label><br />
<br />
<?php echo Form::hidden('menus.id') ?><br />
<?php echo Form::submit('Actualizar') ?><br />
<br />
<?php echo Form::close() ?><br />
</source><br />
<br />
== Probando el CRUD ==<br />
Ahora solo resta probar todo el código que hemos generado, en este punto es importante conocer el comportamiento de las [[Hola_Mundo_KumbiaPHP_Framework#KumbiaPHP_URLS|URL's en KumbiaPHP]].<br />
<br />
* '''index''' es la acción para listar http://localhost/menus/index/ <br />
NOTA: index/ se puede pasar de forma implícita o no KumbiaPHP en caso que no se le pase una acción <br />
buscara por defecto un index, es decir si colocamos<br />
http://localhost/menus/<br />
* '''create''' crea un menu en la Base de Datos http://localhost/menus/create/<br />
* Las acciones '''del''' y '''edit''' a ambas se debe entrar desde el index, ya que reciben el parámetros a editar o borrar según el caso.<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
[[Categoría:Tutoriales KumbiaPHP Beta2]]</div>
Argordmel
https://wiki.kumbiaphp.com/index.php?title=Beta2_Sistema_de_Login&diff=4012
Beta2 Sistema de Login
2014-01-17T02:11:52Z
<p>Argordmel: </p>
<hr />
<div>Vamos a hacer uso de la libreria Auth que sirve justamente para facilitar toda esta tarea de autenticacion de usuarios.<br />
Suponiendo que tenemos la siguiente tabla:<br />
<br />
[[Archivo:Screenshot_003.png|left]]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
La aplicacion estara compuesta por un controller (principal_controller) con 2 acciones: index y login. Las 2 vistas correspondientes y el modelo correspondiente asociado con la tabla Usuarios.<br />
<br />
*Vista login.phtml. Es solo un formulario que utiliza los [http://wiki.kumbiaphp.com/KumbiaPHP_Framework_Versi%C3%B3n_1.0_Beta2 helpers de KumbiaPHP Beta2]<br />
<br />
<source lang="php"><br />
<?php View::content(); ?><br />
<br />
<?php echo Form::open("principal/login"); ?><br />
<?php echo Form::label("Usuario","login"); ?><br />
<?php echo Form::text("login"); ?><br />
<?php echo Form::label("Password","password"); ?><br />
<?php echo Form::pass("password"); ?><br />
<?php echo Form::submit("Ingresar"); ?><br />
<?php echo Form::close(); ?><br />
</source><br />
<br />
*Accion 'login' en el controller:<br />
<source lang="php"><br />
public function login(){<br />
if (Input::hasPost("login","password")){<br />
$pwd = Input::post("password");<br />
$usuario=Input::post("login");<br />
<br />
$auth = new Auth("model", "class: usuarios", "login: $usuario", "password: $pwd");<br />
if ($auth->authenticate()) {<br />
Router::redirect("principal/index");<br />
} else {<br />
Flash::error("Falló");<br />
}<br />
}<br />
}<br />
</source><br />
Con el if se revisa que lleguen datos via post. Luego se crea una nueva instacia de la clase Auth pasandole como parametros el modelo “usuarios”, y la variables $pwd y $usuario.<br />
<br />
<source lang="php"><br />
if ($auth->authenticate())<br />
</source><br />
Se usa para saber si la auteticacion fue correcta.<br />
<br />
<source lang="php"><br />
if(Auth::is_valid())<br />
</source><br />
Se usa para saber si hay un usuario logueado.<br />
<br />
<source lang="php"><br />
$this->telefono=Auth::get('telefono');<br />
$this->edad=Auth::get('edad');<br />
</source><br />
Se usa para recuperar datos de la tabla Usuarios del usuario logueado.<br />
<br />
<source lang="php"><br />
Auth::destroy_identity();<br />
</source><br />
Se usa para terminar la sesion actual del usuario logueado.<br />
<br />
[http://paraisolinux.com/sistema-de-login-con-kumbiaphp-spirit/ Enlace al articulo original.]<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>
Argordmel
https://wiki.kumbiaphp.com/index.php?title=Webs_Con_KumbiaPHP_Framework&diff=3248
Webs Con KumbiaPHP Framework
2011-09-21T23:04:06Z
<p>Argordmel: </p>
<hr />
<div>Enlaces de Páginas y/o Aplicaciones desarrolladas en KumbiaPHP Framework.<br />
<br />
#[http://www.nutrar.com Nutrar Prevención y Salud Plena]<br />
#[http://azimutvoyages.com/ Azimut Voyages]<br />
#[http://www.waterloo2012.be/ Waterloo 2012]<br />
#[http://www.catgenie.es/ CatGenie]<br />
#[http://wizma.demon69.eu/ Wizma's Blog]<br />
#[http://www.alcopa.es/ ALCOPA S.L]<br />
#[http://www.amkpeople.com/web/ amkpeople]<br />
#[http://orinocowest.net/OrinocoWest OrinocoWest]<br />
#[http://www.amecasoft.com.mx/web/ Amecasoft]<br />
#[http://www.nextcontact.cc/ Next Contact]<br />
#[http://www.tractopartesvilchis.com/ Tractopartes Vilchis]<br />
#[http://www.nathanbabyinspiration.com Nathan Baby Inspiration]<br />
#[http://www.elgatodelatazadete.com/contenido Deborah Goya Blog]<br />
#[http://www.alfher.com/home/home_esp ..::Alfher::..]<br />
#[http://www.copasapobla.com/ Torneo Escuela de Fútbol base Copa Sa Pobla]<br />
#[http://planificacion.unefm.edu.ve/ Dirección de Planificación, Desarrollo y Evaluación Universitaria Universidad Nacional Experimental "Francisco de Miranda"]<br />
#[http://www.bonpasrural.com/ Turisme rural]<br />
#[http://www.musicalbareda.com/ Instrumentos Musicales Albareda]<br />
#[http://www.orospeda.es/majwq Webquest Creator]<br />
#[http://www.scaxsolution.tk SCAX Solution]<br />
#[http://www.hostteen.com/ Hostteen project]<br />
#[http://www.redpassport.com.mx redPassport :::::Home:::::]<br />
#[http://www.chattagena.com/ Chattagena.com - Apoyando el talento cartagenero]<br />
#[http://www.tiendamaps.com/kumbia/ Tiendamaps - Un servicio para las MiPyMES Colombianas]<br />
#[http://www.quinielitas.com/ www.quinielitas.com !Vive el futbol, Sueña futbol y Gana con el futbol¡]<br />
#[http://www.seguicapacitandote.com/ Sigue Capacitandote]<br />
#[http://www.proceso.com.mx/ Proceso - 2010]<br />
#[http://www.siguemilink.com/ SigueMiLink » Acorta tus enlaces!]<br />
#[http://www.peruviansoft.com/ PeruvianSoft ]<br />
#[http://www.eventosgenerales.com/ Eventos Generales ]<br />
#[http://www.eivissa.com.ve/ Tiendas Eivissa Venezuela ]<br />
#[http://www.lertoraconsultores.com/ Lertora Consultores ]<br />
#[http://blog.simacel.com/ Blog de simacel.com ]<br />
#[http://elregional.net.ve/ Diario digital El Regional ]<br />
#[http://elaragueno.gesindoni.com.ve/ Diario digital El Aragueño ]<br />
#[http://www.upeu.edu.pe/ Universidad Peruana Unión ]<br />
#[http://supermundial.com.ve/ Supermundial ]<br />
#[http://www.empleate.com/ Empleate.com ]<br />
#[http://www.smartext.com.ve/ SmartText]<br />
#[http://www.joventutdelafarandula.cat/ Joventut de la Faràndula]<br />
#[http://www.elspastorets.cat/ Els Pastorets]<br />
#[http://www.dinecto.com/ Dinecto web hosting]<br />
#[http://www.acpois.com/ ACPOIS: Puntos autocaravanistas en un mapa (POI's)]<br />
#[http://soveci.com/ Sociedad Venezolana de Cardiología Intervencionista (SOVECI)]<br />
#[http://www.aparthotelmaracaibo.com/ Maracaibo Hotel Apartamentos en Mallorca]<br />
#[http://www.bubeldesigns.com/ Bubel - High Performance Designs - Bubel kills the towel]<br />
#[http://www.sk84lifefamily.com/ sk84lifefamily]<br />
#[http://premioscmv.com/ Premios de la moda y el talento vallecaucano - premioscmv.com]<br />
#[http://www.ministerioapostolicosalem.com/ Ministerio Apostolico Salem]<br />
#[http://contrax.dailyscript.co/ Contrax © Dailyscript] usuario: dailyscript clave: dailyscript<br />
#[http://softcash.dailyscript.co/ Softcash © Dailyscript] usuario: softcash clave: dailyscript<br />
#[http://intereza.com/ intereza.com]</div>
Argordmel
https://wiki.kumbiaphp.com/index.php?title=Como_crear_llave_de_seguridad_en_los_formularios&diff=2890
Como crear llave de seguridad en los formularios
2010-08-07T16:15:45Z
<p>Argordmel: </p>
<hr />
<div>{{cleanupbox<br />
|image=[[Archivo:Information_icon4.png|20px]]<br />
|texto ='''Articulo realizado para Spirit 1.0~b2+dev.'''<br /><br />
}}<br />
<br />
Esta es una buena clase que nos permite verificar que el formulario enviado por el cliente coincide con una llave almacenada en sesion.<br />
<br />
1. Copiamos la clase y la guardamos en la siguiente dirección<br />
<br />
miapp/libs/security_key.php<br />
<br />
<source lang=php line><br />
<?php<br />
<br />
class SecurityKey {<br />
<br />
/**<br />
* Genera un input tipo hidden con el valor de la llave<br />
* <br />
* @return string<br />
*/<br />
public static function generateKey(){<br />
<br />
$h = date("G")>12 ? 1 : 0;<br />
$time = uniqid().mktime($h, 0, 0, date("m"), date("d"), date("Y"));<br />
$key = sha1($time);<br />
$_SESSION['rsa32_key'] = $key;<br />
<br />
return "<input type='hidden' id='rsa32_key' name='rsa32_key' value='$key' />\r\n";<br />
}<br />
<br />
/**<br />
* Devuelve el resultado de la llave almacenada en sesion<br />
* con la enviada en el form<br />
*<br />
* @return boolean<br />
*/<br />
public static function isValid () {<br />
<br />
$key = isset($_SESSION['rsa32_key']) ? $_SESSION['rsa32_key'] : null;<br />
<br />
if( (!is_null($key) ) && ($key === Input::post('rsa32_key')) ) {<br />
return true;<br />
} else {<br />
return false;<br />
}<br />
}<br />
<br />
/**<br />
* Devuelve la ultima llave almacenada en sesion<br />
*<br />
* @return string<br />
*/<br />
public static function getKey() {<br />
<br />
$key = isset($_SESSION['rsa32_key']) ? $_SESSION['rsa32_key'] : null;<br />
<br />
return $key;<br />
<br />
}<br />
<br />
}<br />
?><br />
</source><br />
<br />
<br />
2. Forma de uso:<br />
<br />
* En la vista y antes de hacer el cierre del formulario imprimimos la llave<br />
<br />
<source lang=php line><br />
<?php echo SecurityKey::generateKey(); ?><br />
</source><br />
<br />
<br />
* Esto nos generará un input tipo hidden asi:<br />
<br />
<source lang=text> <br />
<input type='hidden' id='rsa32_key' name='rsa32_key' value='7e3dd021785706cf2467bbad3382d08a13f192b3' /><br />
</source><br />
<br />
<br />
* En el controller o en el modelo verificamos la llave<br />
<br />
<source lang=php line><br />
<br />
public function create () {<br />
<br />
if( Input::hasPost('menus') ) {<br />
<br />
if(SecurityKey::isValid()) { <br />
<br />
$menu = new Menus(Input::post('menus'));<br />
<br />
if(!$menu->save()){<br />
<br />
Flash::error('Falló Operación');<br />
<br />
}else{<br />
<br />
Flash::valid('Operación exitosa');<br />
Input::delete();<br />
<br />
}<br />
<br />
} else {<br />
<br />
Flash::error('Acceso incorrecto al sistema');<br />
<br />
}<br />
<br />
} <br />
<br />
}<br />
</source><br />
<br />
<br />
Para cualquier comentario referente a esta clase, puedes acudir al IRC, la lista de correo o el Foro de KumbiaPHP.<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
[[Categoría:Seguridad]]</div>
Argordmel
https://wiki.kumbiaphp.com/index.php?title=Como_crear_llave_de_seguridad_en_los_formularios&diff=2889
Como crear llave de seguridad en los formularios
2010-08-07T01:07:00Z
<p>Argordmel: Crear llave de seguridad en los formularios con Kumbiaphp</p>
<hr />
<div><br />
Esta es una buena clase que nos permite verificar que el formulario enviado por el cliente coincide con una llave almacenada en sesion.<br />
<br />
1. Copiamos la clase y la guardamos en la siguiente dirección<br />
<br />
miapp/libs/security_key.php<br />
<br />
<source lang=php line><br />
<?php<br />
<br />
class SecurityKey {<br />
<br />
/**<br />
* Genera un input tipo hidden con el valor de la llave<br />
* <br />
* @return string<br />
*/<br />
public static function generateKey(){<br />
<br />
$h = date("G")>12 ? 1 : 0;<br />
$time = uniqid().mktime($h, 0, 0, date("m"), date("d"), date("Y"));<br />
$key = sha1($time);<br />
$_SESSION['rsa32_key'] = $key;<br />
<br />
return "<input type='hidden' id='rsa32_key' name='rsa32_key' value='$key' />\r\n";<br />
}<br />
<br />
/**<br />
* Devuelve el resultado de la llave almacenada en sesion<br />
* con la enviada en el form<br />
*<br />
* @return boolean<br />
*/<br />
public static function isValid () {<br />
<br />
$key = isset($_SESSION['rsa32_key']) ? $_SESSION['rsa32_key'] : null;<br />
<br />
if( (!is_null($key) ) && ($key === Input::post('rsa32_key')) ) {<br />
return true;<br />
} else {<br />
return false;<br />
}<br />
}<br />
<br />
/**<br />
* Devuelve la ultima llave almacenada en sesion<br />
*<br />
* @return string<br />
*/<br />
public static function getKey() {<br />
<br />
$key = isset($_SESSION['rsa32_key']) ? $_SESSION['rsa32_key'] : null;<br />
<br />
return $key;<br />
<br />
}<br />
<br />
}<br />
?><br />
</source><br />
<br />
<br />
2. Forma de uso:<br />
<br />
* En la vista y antes de hacer el cierre del formulario imprimimos la llave<br />
<br />
<source lang=php line><br />
<?php echo SecurityKey::generateKey(); ?><br />
</source><br />
<br />
<br />
* Esto nos generará un input tipo hidden asi:<br />
<br />
<source lang=text> <br />
<input type='hidden' id='rsa32_key' name='rsa32_key' value='7e3dd021785706cf2467bbad3382d08a13f192b3' /><br />
</source><br />
<br />
<br />
* En el controller o en el modelo verificamos la llave<br />
<br />
<source lang=php line><br />
<br />
public function create () {<br />
<br />
if( Input::hasPost('menus') ) {<br />
<br />
if(SecurityKey::isValid()) { <br />
<br />
$menu = new Menus(Input::post('menus'));<br />
<br />
if(!$menu->save()){<br />
<br />
Flash::error('Falló Operación');<br />
<br />
}else{<br />
<br />
Flash::valid('Operación exitosa');<br />
Input::delete();<br />
<br />
}<br />
<br />
} else {<br />
<br />
Flash::error('Acceso incorrecto al sistema');<br />
<br />
}<br />
<br />
} <br />
<br />
}<br />
</source><br />
<br />
<br />
Para cualquier comentario referente a esta clase, puedes acudir al IRC, la lista de correo o el Foro de KumbiaPHP.<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
[[Categoría:Seguridad]]</div>
Argordmel
https://wiki.kumbiaphp.com/index.php?title=Como_crear_llave_de_seguridad_en_los_formularios&diff=2888
Como crear llave de seguridad en los formularios
2010-08-07T00:58:54Z
<p>Argordmel: </p>
<hr />
<div>Esta es una buena clase que nos permite verificar que el formulario enviado por el cliente coincide con una llave almacenada en sesion.<br />
<br />
1. Copiamos la clase y la guardamos en la siguiente dirección<br />
<br />
miapp/libs/security_key.php<br />
<br />
<source lang=php line><br />
<?php<br />
<br />
class SecurityKey {<br />
<br />
/**<br />
* Genera un input tipo hidden con el valor de la llave<br />
* <br />
* @return string<br />
*/<br />
public static function generateKey(){<br />
<br />
$h = date("G")>12 ? 1 : 0;<br />
$time = uniqid().mktime($h, 0, 0, date("m"), date("d"), date("Y"));<br />
$key = sha1($time);<br />
$_SESSION['rsa32_key'] = $key;<br />
<br />
return "<input type='hidden' id='rsa32_key' name='rsa32_key' value='$key' />\r\n";<br />
}<br />
<br />
/**<br />
* Devuelve el resultado de la llave almacenada en sesion<br />
* con la enviada en el form<br />
*<br />
* @return boolean<br />
*/<br />
public static function isValid () {<br />
<br />
$key = isset($_SESSION['rsa32_key']) ? $_SESSION['rsa32_key'] : null;<br />
<br />
if( (!is_null($key) ) && ($key === Input::post('rsa32_key')) ) {<br />
return true;<br />
} else {<br />
return false;<br />
}<br />
}<br />
<br />
/**<br />
* Devuelve la ultima llave almacenada en sesion<br />
*<br />
* @return string<br />
*/<br />
public static function getKey() {<br />
<br />
$key = isset($_SESSION['rsa32_key']) ? $_SESSION['rsa32_key'] : null;<br />
<br />
return $key;<br />
<br />
}<br />
<br />
}<br />
?><br />
</source><br />
<br />
<br />
2. Forma de uso:<br />
<br />
* En la vista y antes de hacer el cierre del formulario imprimimos la llave<br />
<br />
<source lang=php line><br />
<?php echo SecurityKey::generateKey(); ?><br />
</source><br />
<br />
<br />
* Esto nos generará un input tipo hidden asi:<br />
<br />
<source lang=text> <br />
<input type='hidden' id='rsa32_key' name='rsa32_key' value='7e3dd021785706cf2467bbad3382d08a13f192b3' /><br />
</source><br />
<br />
<br />
* En el controller o en el modelo verificamos la llave<br />
<br />
<source lang=php line><br />
<br />
public function create () {<br />
<br />
if( Input::hasPost('menus') ) {<br />
<br />
if(SecurityKey::isValid()) { <br />
<br />
$menu = new Menus(Input::post('menus'));<br />
<br />
if(!$menu->save()){<br />
<br />
Flash::error('Falló Operación');<br />
<br />
}else{<br />
<br />
Flash::valid('Operación exitosa');<br />
Input::delete();<br />
<br />
}<br />
<br />
} else {<br />
<br />
Flash::error('Acceso incorrecto al sistema');<br />
<br />
}<br />
<br />
} <br />
<br />
}<br />
</source><br />
<br />
<br />
Para cualquier comentario referente a esta clase, puedes acudir al IRC, la lista de correo o el Foro de KumbiaPHP.<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
[[Categoría:Seguridad]]</div>
Argordmel
https://wiki.kumbiaphp.com/index.php?title=Como_crear_llave_de_seguridad_en_los_formularios&diff=2887
Como crear llave de seguridad en los formularios
2010-08-07T00:53:22Z
<p>Argordmel: </p>
<hr />
<div>Esta es una buena clase que nos permite verificar que el formulario enviado por el cliente coincide con una llave almacenada en sesion.<br />
<br />
1. Copiamos la clase y la guardamos en la siguiente dirección<br />
<br />
miapp/libs/security_key.php<br />
<br />
<source lang=php line><br />
<?php<br />
<br />
class SecurityKey {<br />
<br />
/**<br />
* Genera un input tipo hidden con el valor de la llave<br />
* <br />
* @return string<br />
*/<br />
public static function generateKey(){<br />
<br />
$h = date("G")>12 ? 1 : 0;<br />
$time = uniqid().mktime($h, 0, 0, date("m"), date("d"), date("Y"));<br />
$key = sha1($time);<br />
$_SESSION['rsa32_key'] = $key;<br />
<br />
return "<input type='hidden' id='rsa32_key' name='rsa32_key' value='$key' />\r\n";<br />
}<br />
<br />
/**<br />
* Devuelve el resultado de la llave almacenada en sesion<br />
* con la enviada en el form<br />
*<br />
* @return boolean<br />
*/<br />
public static function isValid () {<br />
<br />
$key = isset($_SESSION['rsa32_key']) ? $_SESSION['rsa32_key'] : null;<br />
<br />
if( (!is_null($key) ) && ($key === Input::post('rsa32_key')) ) {<br />
return true;<br />
} else {<br />
return false;<br />
}<br />
}<br />
<br />
/**<br />
* Devuelve la ultima llave almacenada en sesion<br />
*<br />
* @return string<br />
*/<br />
public static function getKey() {<br />
<br />
$key = isset($_SESSION['rsa32_key']) ? $_SESSION['rsa32_key'] : null;<br />
<br />
return $key;<br />
<br />
}<br />
<br />
}<br />
?><br />
</source><br />
<br />
2. Forma de uso:<br />
<br />
* En la vista y antes de hacer el cierre del formulario imprimimos la llave<br />
<br />
<source lang=php line><br />
<?php echo SecurityKey::generateKey(); ?><br />
</source><br />
<br />
<br />
* Esto nos generará un input tipo hidden asi:<br />
<br />
<source lang=text> <br />
<input type='hidden' id='rsa32_key' name='rsa32_key' value='7e3dd021785706cf2467bbad3382d08a13f192b3' /><br />
</source><br />
<br />
<br />
* En el controller o en el modelo verificamos la llave<br />
<br />
<source lang=php line><br />
<br />
public function create () {<br />
<br />
if( Input::hasPost('menus') ) {<br />
<br />
if(SecurityKey::isValid()) { <br />
<br />
$menu = new Menus(Input::post('menus'));<br />
<br />
if(!$menu->save()){<br />
<br />
Flash::error('Falló Operación');<br />
<br />
}else{<br />
<br />
Flash::valid('Operación exitosa');<br />
Input::delete();<br />
<br />
}<br />
<br />
} else {<br />
<br />
Flash::error('Acceso incorrecto al sistema');<br />
<br />
}<br />
<br />
} <br />
<br />
}<br />
</source><br />
<br />
<br />
Para cualquier comentario referente a esta clase, puedes acudir al IRC, la lista de correo o el Foro de KumbiaPHP.</div>
Argordmel
https://wiki.kumbiaphp.com/index.php?title=Como_crear_llave_de_seguridad_en_los_formularios&diff=2886
Como crear llave de seguridad en los formularios
2010-08-07T00:51:25Z
<p>Argordmel: </p>
<hr />
<div>Esta es una buena clase que nos permite verificar que el formulario enviado por el cliente coincide con una llave almacenada en sesion.<br />
<br />
1. Copiamos la clase y la guardamos en la siguiente dirección<br />
<br />
miapp/libs/security_key.php<br />
<br />
<source lang=php line><br />
<?php<br />
<br />
class SecurityKey {<br />
<br />
/**<br />
* Genera un input tipo hidden con el valor de la llave<br />
* <br />
* @return string<br />
*/<br />
public static function generateKey(){<br />
<br />
$h = date("G")>12 ? 1 : 0;<br />
$time = uniqid().mktime($h, 0, 0, date("m"), date("d"), date("Y"));<br />
$key = sha1($time);<br />
$_SESSION['rsa32_key'] = $key;<br />
<br />
return "<input type='hidden' id='rsa32_key' name='rsa32_key' value='$key' />\r\n";<br />
}<br />
<br />
/**<br />
* Devuelve el resultado de la llave almacenada en sesion<br />
* con la enviada en el form<br />
*<br />
* @return boolean<br />
*/<br />
public static function isValid () {<br />
<br />
$key = isset($_SESSION['rsa32_key']) ? $_SESSION['rsa32_key'] : null;<br />
<br />
if( (!is_null($key) ) && ($key === Input::post('rsa32_key')) ) {<br />
return true;<br />
} else {<br />
return false;<br />
}<br />
}<br />
<br />
/**<br />
* Devuelve la ultima llave almacenada en sesion<br />
*<br />
* @return string<br />
*/<br />
public static function getKey() {<br />
<br />
$key = isset($_SESSION['rsa32_key']) ? $_SESSION['rsa32_key'] : null;<br />
<br />
return $key;<br />
<br />
}<br />
<br />
}<br />
?><br />
</source><br />
<br />
2. Forma de uso:<br />
<br />
* En la vista y antes de hacer el cierre del formulario imprimimos la llave<br />
<br />
<source lang=php line><br />
<?php echo SecurityKey::generateKey(); ?><br />
</source><br />
<br />
<br />
* Esto nos generará un input tipo hidden asi:<br />
<br />
<source lang=text> <br />
<input type='hidden' id='rsa32_key' name='rsa32_key' value='7e3dd021785706cf2467bbad3382d08a13f192b3' /><br />
</source><br />
<br />
<br />
* En el controller o en el modelo verificamos la llave<br />
<br />
<source lang=php line><br />
<br />
public function create () {<br />
<br />
if( Input::hasPost('menus') ) {<br />
if(SecurityKey::isValid()) { <br />
$menu = new Menus(Input::post('menus'));<br />
if(!$menu->save()){<br />
Flash::error('Falló Operación');<br />
}else{<br />
Flash::valid('Operación exitosa');<br />
Input::delete();<br />
}<br />
} else {<br />
Flash::error('Acceso incorrecto al sistema');<br />
}<br />
} <br />
}<br />
</source><br />
<br />
<br />
Para cualquier comentario referente a esta clase, puedes acudir al IRC, la lista de correo o el Foro de KumbiaPHP.</div>
Argordmel
https://wiki.kumbiaphp.com/index.php?title=Como_crear_llave_de_seguridad_en_los_formularios&diff=2885
Como crear llave de seguridad en los formularios
2010-08-07T00:49:06Z
<p>Argordmel: </p>
<hr />
<div>Esta es una buena clase que nos permite verificar que el formulario enviado por el cliente coincide con una llave almacenada en sesion.<br />
<br />
1. Copiamos la clase y la guardamos en la siguiente dirección<br />
<br />
miapp/libs/security_key.php<br />
<br />
<source lang=php line><br />
<?php<br />
<br />
class SecurityKey {<br />
<br />
/**<br />
* Genera un input tipo hidden con el valor de la llave<br />
* <br />
* @return string<br />
*/<br />
public static function generateKey(){<br />
<br />
$h = date("G")>12 ? 1 : 0;<br />
$time = uniqid().mktime($h, 0, 0, date("m"), date("d"), date("Y"));<br />
$key = sha1($time);<br />
$_SESSION['rsa32_key'] = $key;<br />
<br />
return "<input type='hidden' id='rsa32_key' name='rsa32_key' value='$key' />\r\n";<br />
}<br />
<br />
/**<br />
* Devuelve el resultado de la llave almacenada en sesion<br />
* con la enviada en el form<br />
*<br />
* @return boolean<br />
*/<br />
public static function isValid () {<br />
<br />
$key = isset($_SESSION['rsa32_key']) ? $_SESSION['rsa32_key'] : null;<br />
<br />
if( (!is_null($key) ) && ($key === Input::post('rsa32_key')) ) {<br />
return true;<br />
} else {<br />
return false;<br />
}<br />
}<br />
<br />
/**<br />
* Devuelve la ultima llave almacenada en sesion<br />
*<br />
* @return string<br />
*/<br />
public static function getKey() {<br />
<br />
$key = isset($_SESSION['rsa32_key']) ? $_SESSION['rsa32_key'] : null;<br />
<br />
return $key;<br />
<br />
}<br />
<br />
}<br />
?><br />
</source><br />
<br />
2. Forma de uso:<br />
<br />
* En la vista y antes de hacer el cierre del formulario imprimimos la llave<br />
<br />
<source lang=php line><br />
<?php echo SecurityKey::generateKey(); ?><br />
</source><br />
<br />
* Esto nos generará un input tipo hidden asi:<br />
<br />
<source lang=text> <br />
<input type='hidden' id='rsa32_key' name='rsa32_key' value='7e3dd021785706cf2467bbad3382d08a13f192b3' /><br />
</source><br />
<br />
* En el controller o en el modelo verificamos la llave<br />
<br />
<source lang=php><br />
<br />
public function create () {<br />
<br />
if( Input::hasPost('menus') ) {<br />
if(SecurityKey::isValid()) { <br />
$menu = new Menus(Input::post('menus'));<br />
if(!$menu->save()){<br />
Flash::error('Falló Operación');<br />
}else{<br />
Flash::valid('Operación exitosa');<br />
Input::delete();<br />
}<br />
} else {<br />
Flash::error('Acceso incorrecto al sistema');<br />
}<br />
} <br />
}<br />
</source><br />
<br />
<br />
Para cualquier comentario referente a esta clase, puedes acudir al IRC, la lista de correo o el Foro de KumbiaPHP.</div>
Argordmel
https://wiki.kumbiaphp.com/index.php?title=Como_crear_llave_de_seguridad_en_los_formularios&diff=2884
Como crear llave de seguridad en los formularios
2010-08-07T00:41:26Z
<p>Argordmel: </p>
<hr />
<div>Esta es una buena clase que nos permite verificar que el formulario enviado por el cliente coincide con una llave almacenada en sesion.<br />
<br />
Forma de uso:<br />
<br />
En la vista y antes de hacer el cierre del formulario imprimimos la llave<br />
<br />
<source lang=php line><br />
<?php echo SecurityKey::generateKey(); ?><br />
</source><br />
<br />
Esto nos generará un input tipo hidden asi:<br />
<br />
<source lang=html> <br />
<input type='hidden' id='rsa32_key' name='rsa32_key' value='7e3dd021785706cf2467bbad3382d08a13f192b3' /><br />
</source><br />
<br />
<br />
Copiamos la clase y la guardamos en la siguiente dirección<br />
<br />
miapp/libs/security_key.php<br />
<br />
<source lang=php line><br />
<?php<br />
<br />
class SecurityKey {<br />
<br />
/**<br />
* Genera un input tipo hidden con el valor de la llave<br />
* <br />
* @return string<br />
*/<br />
public static function generateKey(){<br />
<br />
$h = date("G")>12 ? 1 : 0;<br />
$time = uniqid().mktime($h, 0, 0, date("m"), date("d"), date("Y"));<br />
$key = sha1($time);<br />
$_SESSION['rsa32_key'] = $key;<br />
<br />
return "<input type='hidden' id='rsa32_key' name='rsa32_key' value='$key' />\r\n";<br />
}<br />
<br />
/**<br />
* Devuelve el resultado de la llave almacenada en sesion<br />
* con la enviada en el form<br />
*<br />
* @return boolean<br />
*/<br />
public static function isValid () {<br />
<br />
$key = isset($_SESSION['rsa32_key']) ? $_SESSION['rsa32_key'] : null;<br />
<br />
if( (!is_null($key) ) && ($key === Input::post('rsa32_key')) ) {<br />
return true;<br />
} else {<br />
return false;<br />
}<br />
}<br />
<br />
/**<br />
* Devuelve la ultima llave almacenada en sesion<br />
*<br />
* @return string<br />
*/<br />
public static function getKey() {<br />
<br />
$key = isset($_SESSION['rsa32_key']) ? $_SESSION['rsa32_key'] : null;<br />
<br />
return $key;<br />
<br />
}<br />
<br />
}<br />
?><br />
</source><br />
<br />
Para cualquier comentario referente a esta clase, puedes acudir al IRC, la lista de correo o el Foro de KumbiaPHP.</div>
Argordmel