- Code: Alles auswählen
- <!--
// Project : Blog Tutorial
// Author : Michael Puff http://www.michael-puff.de
// Date : 2009-05-22;
-->
<h2>Anmeldung Adminpanel</h2>
<br>
<?php echo $form->create('User', array('action' => 'login'));?>
<p>
Benutzername:<br>
<?php
echo $form->input('username',
array(
'label' => '',
'error' => array
(
'required' => 'Bitte dieses Feld ausfüllen'
)
)
);
?>
</p>
<p>
Passwort:<br>
<?php
echo $form->input('password',
array(
'label' => '',
'error' => array
(
'required' => 'Bitte dieses Feld ausfüllen'
)
)
)
;?>
</p>
<p>
<?php echo $form->submit('Anmelden');?>
</p>
<?php echo $form->end();?>
Dazu das zugehörige Model:
- Code: Alles auswählen
- <?php
// Project : Blog Tutorial
// Author : Michael Puff http://www.michael-puff.de
// Date : 2009-05-22;
class User extends AppModel
{
var $name = 'User';
var $validate = array
(
'username' => array
(
'required' => VALID_NOT_EMPTY
),
'password' => array
(
'required' => VALID_NOT_EMPTY
)
);
function validateLogin($data)
{
$user = $this->find(array('username' => $data['username'], 'password' => $data['password']), array('id', 'username'));
if(empty($user) == false)
return $user['User'];
return false;
}
}
?>
Und der Controller:
- Code: Alles auswählen
- <?php
class UsersController extends AppController
{
var $name = 'Users';
var $helpers = array('Form');
function login()
{
if(empty($this->data) == false)
{
if(($user = $this->User->validateLogin($this->data['User'])) == true)
{
$this->Session->write('User', $user);
$this->redirect('/posts/adminpanel');
exit();
}
else
{
//$this->redirect('/posts/accessdenied');
$this->Session->setFlash('Zugriff verweigert');
exit();
}
}
}
function logout()
{
$this->Session->destroy('user');
$this->redirect('/posts');
}
}
?>
Wenn ich jetzt die Eingabefelder leer lasse, komme ich zu einer leeren Seite nur mit der Debugausgabe für die Datenbankabfrage.
Aber warum funktioniert meine Validierung der Eingabefelder nicht?