Si yo tambien vi ese ejemplo bueno este es el que tengo y no tengo problemas:
Controlador admin:
function login()
{
$this->layout = 'AdminIndex';
if(!empty($this->data))
{
$dbuser =
$this->Admin->findByUsername($this->data['Admin']['username']);
if(!empty($dbuser) &&
($dbuser['Admin']['password'] ==
md5($this->data['Admin']['password'])))
{
$this->Session->write('Admin', $dbuser);
$dbuser['Admin']['last_login'] =
date("Y-m-d H:i:s");
$this->Admin->save($dbuser);
$this->redirect('/admin_projects/');
}
else
{
$this->set('mensaje', 'El "Usuario" y/o
la "Contraseña"
son incorrectos...');
}
}
}
El app_controller:
<?php
class AppController extends Controller
{
function checkSession()
{
if (!($this->Session->check('Admin')))
{
$this->redirect('/admins/');
exit();
}
}
}
?>
y la vista:
<form action="<?php echo $html->url('/admins/index/'); ?>"
method="post" id="FormStyle">
<fieldset class="Cfieldset">
<legend class="Clegend"> INICIAR SESIÓN </legend>
<p>
<?php echo $form->labelTag('Admin/username', 'Usuario:'); ?><br
/>
<?php echo $html->input('Admin/username', array('size'=>'30',
'class'=>'Cinput')); ?>
</p>
<p>
<?php echo $form->labelTag('Admin/password',
'Contraseña:'); ?><br />
<?php echo $html->password('Admin/password',
array('size'=>'30', 'class'=>'Cinput')); ?>
</p>
<p>
<?php echo $html->submit('Ingresar',
array('class'=>'Csubmit')); ?>
</p>
<p>
<?php
if(isset($mensaje))
{
echo '<div
class="Mensaje">'.$mensaje.'</div>';
}
?>
</p>
</fieldset>
</form>
Y para cada funcion que no quiero que acceda sin verificarse le meto:
function cualquiera()
{
$this->checkSession(); /*este es el codigo*/
....
}
El 30/04/08, Hernán Durán <[EMAIL PROTECTED]> escribió:
> bueno claro aqui pongo lo que tengo
>
> en
> app/controllers/usarios_controller.php
>
> <?php
> > class UsuariosController extends AppController {
> > var $name = 'Usuarios';
> > function index () {
> > $this->set('usuario',$this->Usuario->findall());
> > }
> >
> >
> > function login () {
> >
> > $this->set('error', false);
> > if (!empty($this->data))
> > {
> > //Primero, veamos si hay usuarios en la base de datos
> > //con el nombre de usuario proporcionado por el usuario
> > //utilizando el formulario:
> >
> > $someone =
> > $this->Usuario->findByUsuario($this->data['Usuario']['usuario']);
> >
> > //En este punto, $someone está lleno con datos del usuario, o
> > está vacío.
> > //Comparemos la contraseña proporcionada a través del
> > formulario con la
> > //almacenada en la base de datos.
> >
> > if(!empty($someone['Usuario']['passwd']) &&
> > $someone['Usuario']['passwd'] == $this->data['Usuario']['passwd'])
> > {
> >
> > //Nota: esperanzado en que las contraseñas estén ofuscadas
> > en la base de datos,
> > //tu comparación podría verse más como:
> > //md5($this->data['User']['password']) ==
> > ...
> >
> > //Esto significa que estas son iguales. Ahora podemos
> > construir alguna información básica de
> > //sesión para recordar este usuario como con
> > 'sesión-iniciada'
> >
> > $this->Session->write('Usuario', $someone['Usuario']);
> >
> > //Ahora que tenemos a los usuarios registrados en una
> > sesión, redireccionémoslos a
> > //la página de recibimiento para la aplicación.
> >
> > $this->redirect('/usuarios/index');
> > }
> > //Caso contrario, han provisto datos incorrectos:
> > else
> > {
> > //Recuerdas la variable $error en la vista? Cambiemos su
> > valor a verdadero:
> >
> > $this->set('error', true);
> > }
> > }
> > }
> > function logout()
> > {
> > //Redirecciona usuarios a esta acción si hacen click en el botón
> > Cerrar Sesión.
> > //Todo lo que necesitamos hacer aquí es destruir la información de
> > sesión.
> >
> > $this->Session->delete('Usuario');
> >
> > //Y probablemente deberíamos redireccionarlos a alguna parte,
> > también...
> >
> > $this->redirect('/');
> > }
> >
> > }
> > ?>
> >
>
> en app/app_controller.php
>
> <?php
> class AppController extends Controller
> {
> function checkSession()
> {
> //Si la información de sesión no ha sido definida...
> if (!$this->Session->check('Usuario'))
> {
> //Forza al usuario a iniciar sesión
> $this->redirect('/usuarios/login');
> exit();
> }
> }
> function beforeFilter()
> {
> $this->checkSession();
> }
>
> }
> ?>
>
> y en la vista tengo
>
> app/views/login.thtml
>
> <?php if ($error): ?>
> > <p>El usuario o contraseña no son validos, por favor intente de
> > nuevo.</p>
> > <? endif; ?>
> > <form action="<?php echo $html->url('/usuarios/login'); ?>" method="post">
> > <div align="center">
> > <p>Bienvenido al Programa de EPS</p>
> > <div>
> > <label for="username">Usuario:</label>
> > <?php echo $html->input('Usuario/usuario', array('size' =>
> > 20)); ?>
> > </div>
> > <div>
> > <label for="password">Contraseña:</label>
> > <?php echo $html->password('Usuario/passwd', array('size' =>
> > 20)); ?>
> > </div>
> > <div>
> > <?php echo $html->submit('Acceder'); ?>
> > </div>
> > </div>
> > </form>
> >
>
>
> es el ejemplo que esta en el manual
>
>
>
> 2008/4/30 <[EMAIL PROTECTED]>:
>
> >
> > Huy tal vez deberias mandar las funciones que hiciste para poder ver
> > que esta mal...
> >
> > --
> > ----------------------------------
> > http://www.metabolivia.com
> >
> > >
> >
>
>
> --
> Cordialmente,
>
> ING. HERNAN DURAN SANCHEZ
>
> [EMAIL PROTECTED]
> [EMAIL PROTECTED]
> [EMAIL PROTECTED]
> Skype: randuh
> Blog: http://lamentehueca.blogspot.com
>
> >
>
--
----------------------------------
http://www.metabolivia.com
--~--~---------~--~----~------------~-------~--~----~
Has recibido este mensaje porque estás suscrito a Grupo "CakePHP-es" de Grupos
de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a [email protected]
Para anular la suscripción a este grupo, envía un mensaje a [EMAIL PROTECTED]
Para obtener más opciones, visita este grupo en
http://groups.google.com/group/CakePHP-es?hl=es.
-~----------~----~----~----~------~----~------~--~---