Я не совсем уверен, что здесь происходит. Это то, что у меня есть в моем app_controller.php:
<?php
class AppController extends Controller {
var $components = array('Auth');
var $helpers = array('Form', 'Session');
function beforeFilter() {
$this->Auth->allow('register');
$this->Auth->userScope = array('User.activated' => true);
$this->Auth->loginError = "<span style=\"color:#FF0000\">Wrong username or password</span>";
$this->Auth->fields = array(
'username' => 'username',
'password' => 'password'
);
}
}
?>
и мой users_controller.php:
<?php
class UsersController extends AppController {
var $name = 'Users';
var $components = array('Auth');
var $helpers = array('Form', 'Session');
function index() {
}
function login() {
$this->set('title_for_layout', "Welcome to .com!");
$this->layout = 'user_functions';
}
function logout() {
$this->redirect($this->Auth->logout());
}
function register(){
$this->set('title_for_layout', "Register Here!");
$this->layout = 'user_functions';
$date = date('Y');
if (!empty($this->data)) {
$user_check = $this->User->find('first', array('conditions' => array('username' => $this->data['User']['username'])));
$email_check = $this->User->find('first', array('conditions' => array('e-mail' => $this->data['User']['e-mail'])));
if (empty($user_check)) {
if(empty($email_check)){
if ($this->User->save($this->data)) {
$uuid_string = $this->data['User']['activation_hash'];
$email = //email
$to = $this->data['User']['e-mail'];
$subject = 'Welcome to .com!';
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
$headers .= 'From: '';
if (mail($to, $subject, $email, $headers)) {
$this->redirect('/');
}
} else {
//$this->Session->setFlash('<p class="register_flash">Something went wrong. Please try again.</p>', 'flash_registration');
//$this->flash('', '/');
}
} else {
//email exists
}
} else {
//username exists
}
}
}
}
?>
и вот мой взгляд:
<code><div id="login">
<p>Please log in! <a id="register" href="register" alt="Register">Register</a></p>
<hr class="login"/>
<?php
echo $this->Session->flash('auth');
echo $this->Form->create('User');
echo $this->Form->input('username');
echo $this->Form->input('password');
echo "<hr class=\"login\"/>";
echo $this->Form->end('Login');
echo $this->Session->flash('flash_registration');
echo "<pre>"; print_r($this->data); echo "
";
?>
Обычно, когда я пытаюсь войти в систему, используя мою форму входа, даже если я использую пароль, который я использовал при регистрации, он говорит, что имя пользователя или пароль неверны. Однако, когда я изменил пароль, хранящийся в базе данных, на «пароль» в виде обычного текста и попытался войти в систему, это сработало! Я понятия не имею, почему это происходит. Я также повторил данные $ this-> в представлении входа в систему, и имя пользователя верно, но пароль пуст. Из того, что я вижу, пароль просто не хэшируется.