Regex 在CakePHP中验证用户电话号码

Regex 在CakePHP中验证用户电话号码,regex,cakephp,cakephp-2.0,cakephp-2.1,Regex,Cakephp,Cakephp 2.0,Cakephp 2.1,我在CakePHP 2.x中创建了一个登录系统,用户可以从他的电子邮件地址和电话号码登录。我想要的是,如果用户提供一个电话号码,例如“123456789”或“+123456789”,他可以登录到系统。有时,现在只有一项任务可以通过这种方式实现。如果数据库中的号码是“123456789”,则他无法从“+123456789”登录 我想我必须在模型课上应用规则 $this->Auth->authenticate = array( 'Authenticate.Cookie' =>

我在CakePHP 2.x中创建了一个登录系统,用户可以从他的电子邮件地址和电话号码登录。我想要的是,如果用户提供一个电话号码,例如“123456789”或“+123456789”,他可以登录到系统。有时,现在只有一项任务可以通过这种方式实现。如果数据库中的号码是“123456789”,则他无法从“+123456789”登录

我想我必须在模型课上应用规则

$this->Auth->authenticate = array(
  'Authenticate.Cookie' => array(
    'fields' => array(
      'username' => 'email',
      'password' => 'password'
    ),
    'userModel' => 'User',
    'scope' => array('User.active' => 1)
  ),
  'Authenticate.MultiColumn' => array(
    'fields' => array(
      'username' => 'email',
      'password' => 'password'
    ),
    'columns' => array('email', 'mobileNo'),
    'userModel' => 'User',
  )
);
}
这是通过电子邮件和手机号码登录的代码:

登录功能

public function login() {
  if ($this->Auth->login() || $this->Auth->loggedIn()) {
    $this->redirect('/users/dashboard');
  }else{
    $this->layout='logindefault';
    $this->set('title_for_layout', 'Account Login');
    if ($this->request->is('post')) {
      if ($this->Auth->login() || $this->Auth->loggedIn()) {
        if ($this->Session->check('Auth.User')){
          $this->_setCookie($this->Auth->user('idUser'));
          $this->redirect('/users/dashboard');
        }
      }else {
        $this->Session->setFlash('Incorrect Email/Password Combination');
      }
    }
  }
}

试试这个,在你查电话号码之前,先点这条线

  public function login() {


 $this->request->data['User']['mobile']=$this->request->data['User']['mobile'];
   if (strpos($this->request->data['User']['mobile'],'+') !== false) {
         $this->request->data['User']['mobile']=str_replace("+", "",$this->request->data['User']['mobile']);
   }
      $this->requst->data['User']['mobile']=$this->request->data['User']['mobile'];

  if ($this->Auth->login($this->request->data)) {
    $this->redirect('/users/dashboard');
  }else{
    $this->layout='logindefault';
    $this->set('title_for_layout', 'Account Login');
    if ($this->request->is('post')) {
      if ($this->Auth->login() || $this->Auth->loggedIn()) {
        if ($this->Session->check('Auth.User')){
          $this->_setCookie($this->Auth->user('idUser'));
          $this->redirect('/users/dashboard');
        }
      }else {
        $this->Session->setFlash('Incorrect Email/Password Combination');
      }
    }
  }
}

试试这个,在你查电话号码之前,先点这条线

  public function login() {


 $this->request->data['User']['mobile']=$this->request->data['User']['mobile'];
   if (strpos($this->request->data['User']['mobile'],'+') !== false) {
         $this->request->data['User']['mobile']=str_replace("+", "",$this->request->data['User']['mobile']);
   }
      $this->requst->data['User']['mobile']=$this->request->data['User']['mobile'];

  if ($this->Auth->login($this->request->data)) {
    $this->redirect('/users/dashboard');
  }else{
    $this->layout='logindefault';
    $this->set('title_for_layout', 'Account Login');
    if ($this->request->is('post')) {
      if ($this->Auth->login() || $this->Auth->loggedIn()) {
        if ($this->Session->check('Auth.User')){
          $this->_setCookie($this->Auth->user('idUser'));
          $this->redirect('/users/dashboard');
        }
      }else {
        $this->Session->setFlash('Incorrect Email/Password Combination');
      }
    }
  }
}


可以在检查电话号码的条件时执行此操作,例如检查+字符串并将其删除,&使用剩余号码检查@Siddeshphalke如何?@HelloSheik将您的登录操作代码粘贴到此处,让我看看您的情况@Siddeshphalke我已经更新了我的问题。可以在检查电话号码的条件时执行此操作,如检查+字符串并将其删除,&使用剩余号码检查@Siddeshphalke如何?@HelloSheik将您的登录操作代码粘贴到此处,让我看看您的情况@Siddeshphalke我已经更新了我的问题,当我使用自动检查和记录的auth组件时,我在哪里将你的函数放入我的代码中。。你能把你的函数输入我的代码吗。。如果你不介意检查上面我修改过的东西,只要给出正确的型号和域名就行了。。!!一定要让我知道结果。。!!我在这里提到的是,我有一个输入框名称“email”,其中我得到了一个手机号码和电子邮件??那么,您的语法对此正确吗?请尝试查看您在数据请求中得到的值是什么。。!!pr($this->request->data());浏览器上没有打印任何内容。。如果你想知道的话,我有一个电子邮件输入框。当我使用自动检查和记录的auth组件时,我应该把你的函数放在我的代码中的什么地方。。你能把你的函数输入我的代码吗。。如果你不介意检查上面我修改过的东西,只要给出正确的型号和域名就行了。。!!一定要让我知道结果。。!!我在这里提到的是,我有一个输入框名称“email”,其中我得到了一个手机号码和电子邮件??那么,您的语法对此正确吗?请尝试查看您在数据请求中得到的值是什么。。!!pr($this->request->data());浏览器上没有打印任何内容。。如果你想知道的话,我有一个电子邮件输入框。。