2016-04-22 4 views
-3

Я использую CakePHP 2.xВойти код с другим пользователем в PHP

полей таблицы: имя пользователя, пароль, acc_type

Я вхожу только имя пользователя и пароль из формы ...

I если я ввел имя пользователя и пароль в форму, он проверяет имя пользователя и пароль и acc_type в таблице.

для ex - если username = raj и password = 123 и acc_type = 1, то он перенаправляется на индексную страницу.

для экс - если имя пользователя = Радж и пароль = 007 и acc_type = 2, то он перенаправляет на страницу регистрации, как мудрый ..

Если имя пользователя и пароль неверен, то это показывает ошибку ...

Ниже приведен мой код.

public function login() { 
     if (!empty($this->request->data)){   
      $this->User->set($this->request->data); 

      if ($this->User->validates(array('fieldList' => array('username','password')))){ 

       $user = $this->User->find('first', array(
        'conditions' => array(
         'User.username' => $this->request->data['User']['username'], 
         'User.password' => md5($this->request->data['User']['password']), 
         'User.acc_type' => $this->request->data['User']['acc_type']       
        ) 
       )); 

       if((!empty($user)) && ($user.acc_type==1)){ 
        $this->redirect(array('controller' => 'users', 'action' => 'index')); 
       } 
       elseif((!empty($user)) && ($user.acc_type==2)){ 
        $this->redirect(array('controller' => 'users', 'action' => 'add')); 
       } 
       else 
       { 
        $this->message('Invalid email/username or password'); 
       } 
      } 
     }  

    } 

ниже функции я использовал, чтобы добавить данные в моей таблице пользователей ..

public function add() { 
    if ($this->request->is('post')) { 
     $this->User->create(); 
     if ($this->User->save($this->request->data)) { 
      //print_r($this->request->data) ;exit(); 
      $this->Session->setFlash(__('The user has been saved.')); 
      return $this->redirect(array('controller' => 'Users', 'action' => 'login')); 
     } else { 
      $this->Session->setFlash(__('The user could not be saved. Please, try again.')); 
     } 
    } 
} 

ниже мой код модели

class User extends AppModel { 

    public $validate = array(
     'username' => array(
      'required' => array(
       'rule' => array('notEmpty'), 
       'message' => 'A username is required' 
      ) 
     ), 
     'password' => array(
      'required' => array(
       'rule' => array('notEmpty'), 
       'message' => 'A password is required' 
      ) 
     ), 
     'email' => array(
      'email' => array(
       'rule' => array('email', true), 
       'message' => 'Please supply a valid email address.' 
      ), 
      'required' => array(
       'rule' => array('notEmpty'), 
       'message' => 'A email is required' 
      ) 
     ) 

    ); 

    public function beforeSave($options = array()) { 
     if (isset($this->data[$this->alias]['password'])) { 

      $this->data[$this->alias]['password'] = md5($this->data[$this->alias]['password'] 
      ); 
     } 
     return true; 
    } 

} 

посмотреть код

<div class="users form"> 
<?php echo $this->Session->flash('auth'); ?> 
<?php echo $this->Form->create(array('controller'=>'Users','action'=>'login','method'=>'POST')); ?> 
<fieldset> 
    <!-- <legend> 
     <?php echo __('Please enter your username and password'); ?> 
    </legend> --> 
    <?php echo $this->Form->input('username'); 
    echo $this->Form->input('password'); 
    ?> 
</fieldset> 
<?php echo $this->Form->end(__('Login')); ?> 
<?php echo $this->Html->link(__('Register'), array('action' => 'add')); ?> 
</div> 
+1

Вы говорите, что «помочь мне исправить это» ... Что точно проблема? –

+1

Хорошо, но что вы имеете в виду с _not working_? Это дает ошибку? Дайте более подробную информацию, пожалуйста ... –

+0

Хорошо, вы не найдете пользователя в таблице yout, потому что вы также ищете acc_type. Я думаю, вам следует удалить «User.acc_type» => $ this-> request-> data ['User'] ['acc_type'] 'из вашего запроса ... –

ответ

0

Попробуйте

public function login() { 
    if (!empty($this->request->data)){   
     $this->User->set($this->request->data); 

     if ($this->User->validates(array('fieldList' => array('username','password')))){ 

      $user = $this->User->find('first', array(
       'conditions' => array(
        'User.username' => $this->request->data['User']['username'], 
        'User.password' => md5($this->request->data['User']['password']), 
        'User.acc_type' => $this->request->data['User']['acc_type']       
       ) 
      )); 

      if((!empty($user)) && ($user['User']['acc_type']==1)){ 
       $this->redirect(array('controller' => 'users', 'action' => 'index')); 
      }elseif((!empty($user)) && ($user['User']['acc_type']==2)){ 
       $this->redirect(array('controller' => 'users', 'action' => 'add')); 
      } 
      else 
      { 
       $this->message('Invalid email/username or password'); 
      } 
     } 
    } 
} 
+0

sir..this показывает только неверный адрес электронной почты/имя пользователя или пароль .. но мое имя пользователя и пароль верны ... а также показывает Undefined index: acc_type [APP/Controller/UsersController.php, строка 106] –

+0

какой тип шифрования вы использовать во время регистрации –

+0

Encrype your passwor в соответствии с регистрацией –

0

Может быть, вы можете попробовать:

   $user = $this->User->find('first', array(
        'conditions' => array(
         'User.username' => $this->request->data['User']['username'], 
         'User.password' => md5($this->request->data['User']['password']) 
        ) 
       )); 
Смежные вопросы