Problème de login

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Problème de login

    Bonjour à tous,

    J'ai besoin de votre aide pour un problème qui me taraude depuis une semaine..

    Alors, j'essaie d'avoir la possibilité de me loguer de deux façons sur mon site.
    Une première qui est déjà fonctionnelle, qui utilise le mail.
    Une deuxième avec un identifiant numérique d'un autre site et une autre base de données, mais avec le même mot de passe que la première méthode.

    Alors, pour faire simple, voici un exemple:

    Le site A est fait avec joomla 3.1.1

    L'utilisateur a son identifiant => usernameATemail.com et son mot de passe => pass123
    A l'inscription sur le site A, l'utilisateur est automatiquement inscrit sur le site B et un identifiant numérique lui est attribué, et le même mot de passe est automatiquement copié dans la base de données du site B, ainsi que l'email.

    Ne me demandez pas pourquoi c'est comme ça, c'est ce que l'on m'impose à mon lieu de travail...

    Donc lorsque l'utilisateur se logue sur le site A avec son mail, aucun soucie.
    Lorsqu'il se logue avec son identifiant numérique sur le site A, le code va chercher son mail dans la base de données du site B, et tente de se loguer sur le site A.
    Mais lorsque je me logue avec la deuxième méthode, j'ai un message magique:
    ERROR: This email is already registered.

    Je ne comprends pas pourquoi cet erreur surgit, c'est censé s'afficher à l'inscription d'un nouvel utilisateur...

    Voici le code en question qui est basé sur le plugin de login joomla:
    Code PHP:
    defined('_JEXEC') or die;
    class 
    PlgAuthenticationNew extends JPlugin
    {
       public function 
    onUserAuthenticate($credentials$options, &$response)
       {
          
    $response->type 'New';
    // si mot de passe vide
          
    if (empty($credentials['password']))
          {
             
    $response->status JAuthentication::STATUS_FAILURE;
             
    $response->error_message JText::_('JGLOBAL_AUTH_EMPTY_PASS_NOT_ALLOWED');
             return 
    false;
          }
    // si l'identifiant est numérique, on cherche le mail
          
    if(is_numeric($credentials['username'])){
             
    $option = array();
             
    $option['driver']   = 'mysqli';            
             
    $option['host']     = '192.168.5.127';    
             
    $option['user']     = 'root';       
             
    $option['password'] = 'password';   
             
    $option['database'] = 'websiteB_db';     
             
    $db1 = & JDatabase::getInstance$option );
             
    $query1   $db1->getQuery(true)
                ->
    select('email_address')
                ->
    from('subscriber')
                ->
    where('username=' $db1->quote($credentials['username']));
     
             
    $db1->setQuery($query1);
             
    $result1 $db1->loadResult();
             
    // si un résultat est reçu
             
    if ($result1)
             {
                
    $db   JFactory::getDbo();
                
    $query   $db->getQuery(true)
                   ->
    select('id, password')
                   ->
    from('#__users')
                   ->
    where('username=' $db->quote($result1));
                
    $db->setQuery($query);
                
    $result $db->loadObject();
             }else{
                
    $response->status JAuthentication::STATUS_FAILURE;
                
    $response->error_message JText::_('JGLOBAL_AUTH_NO_USER');
             }
          }else{
    // si l'identifiant n'est pas numérique
             
    $db   JFactory::getDbo();
             
    $query   $db->getQuery(true)
                ->
    select('id, password')
                ->
    from('#__users')
                ->
    where('username=' $db->quote($credentials['username']));
     
             
    $db->setQuery($query);
             
    $result $db->loadObject();
          }
          if (
    $result)
          {
             
    $parts   explode(':'$result->password);
             
    $crypt   $parts[0];
             
    $salt   = @$parts[1];
             
    $testcrypt JUserHelper::getCryptedPassword($credentials['password'], $salt);
     
             if (
    $crypt == $testcrypt)
             {
                
    $user JUser::getInstance($result->id); // Bring this in line with the rest of the system
                
    $response->email $user->email;
                
    $response->fullname $user->name;
                if (
    JFactory::getApplication()->isAdmin())
                {
                   
    $response->language $user->getParam('admin_language');
                }
                else {
                   
    $response->language $user->getParam('language');
                }
                
    $response->status JAuthentication::STATUS_SUCCESS;
                
    $response->error_message '';
     
                
    //print_r($response); die;
                // ici $response s'affiche correctement avec success = 1 et le reste aussi
             
    } else {
                
    $response->status JAuthentication::STATUS_FAILURE;
                
    $response->error_message JText::_('JGLOBAL_AUTH_INVALID_PASS');
             }
          }
          else
          {
             
    $response->status JAuthentication::STATUS_FAILURE;
             
    $response->error_message JText::_('JGLOBAL_AUTH_NO_USER');
          }
       }

    Merci infiniment de m'éclairer.
    Georges

  • #2
    Re : Problème de login

    tu le colles ou ce code?

    Commentaire

    Annonce

    Réduire
    Aucune annonce pour le moment.

    Partenaire de l'association

    Réduire

    Hébergeur Web PlanetHoster
    Travaille ...
    X