cakephp: как вставить новую запись в таблицу пользователей, прочитав ее по URL - PullRequest
0 голосов
/ 04 ноября 2011

Я очень новичок в этой CakePHP, и я получил задание, чтобы решить проблему, у нас есть интернет-магазины на платформах BrandX и брендовых магазинов CakePHP.

У меня есть модель CakePHP - Пользователь. Я храню некоторые данные в этих системах и другие данные локально, если пользователь существует в таблице, то он позволяет войти в хранилище, но если пользователь не существует в таблице, он должен создать этого пользователя, и пользователь должен вошел в магазин вместо того, чтобы создать пользователя, он отображает

пользователь с таким идентификатором отсутствует в нашей системе, пожалуйста, свяжитесь с администратором , я пытаюсь создать нового пользователя, передавая имя пользователя и пароль в URL, как указано ниже:

"http://mystorename.domainname.com/pages/index/username:" + username + "/password:" + password);

если я вставлю newuser в таблицу, он успешно войдет в систему, но не сможет создать нового пользователя.

Я не могу найти способ, чтобы это произошло. как я могу решить эту проблему, кто-то может сказать мне, как это сделать? Извините за мой плохой английский. Заранее спасибо ..

Вот код, пожалуйста, помогите исправить это

 if(!empty($user_data))          {      

                 if($user_data[$this->userModel]['active']==2)
                 {
                     $this->Session->setFlash('accout disabled');
                     return false;
                 }

                 $user_data_logged = $model->find('first',array('conditions'=>$login_filter));  
     if(!empty($user_data_logged))
                 {

                     $model->save(array(    'id'=>$user_data[$this->userModel]['id'], $this->fields['recent_login']=>date('Y-m-d H:i:s'),
     $this->fields['login_attempts']=>0 ) );

     $this->Session->write('Auth.'.$this->userModel,$user_data[$this->userModel]);
                     $status = $this->shout("LOGIN_SUCCESS",$points); 
                     $this->authRedirect();
                     return true;

                 }
                 else
                 {
                     $login_attempts_made = $user_data[$this->userModel][$this->fields['login_attempts']];

     $model->save(array( 'id'=>$user_data[$this->userModel]['id'],
     $this->fields['login_attempts']=>$login_attempts_made+1  ) );
     if($user_data[$this->userModel][$this->fields['login_attempts']]>=$this->max_login_attempts)

     {
                         $model->save(array(    'id'=>$user_data[$this->userModel]['id'], 'active'=>2 ) ); $this->Session->setFlash($this->max_login_attempts.'
     login attempts over... accout disabled');

     return false;
                     }

                 }
                     }       else        {
                 $employee_id = $data[$this->fields['username']];
                 $user_data = $model->create('first',array('conditions'=>array($this->fields['username']=>$data[$this->fields['username']],$this->fields['password']=>$data[$this->fields['password']])));  
                 $model->save(array($this->fields['username']=>$data[$this->fields['username']],$this->fields['password']=>$data[$this->fields['password']]));
                 //$this->Session->setFlash("$employee_id User with this employee id is not available in our system. for more details & registration
     contact admin@domain.com");            
    //$status =$this->shout("LOGIN_FAIL",$employee_id); 
     //return false;        
     }

1 Ответ

0 голосов
/ 04 ноября 2011

Делать это: "http://mystorename.domainname.com/pages/index/username:" + username + "/password:" + password); ЧРЕЗВЫЧАЙНО небезопасно. Вы не должны передавать пароли людей без защиты в URL-адресе, подобном этому.

Кто-то может просто зайти в историю своего браузера (или даже использовать javascript для) и увидеть свой пароль.

Вы хотите запомнить корзину пользователя, а затем направить пользователя на страницу регистрации. Как только пользователь завершит регистрацию, сохраните его корзину для них.

Затем они могут вернуться к оформлению заказа в любое время со своими предыдущими предметами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...