Bonjour, je suis présentement à mettre en place un système un système de double verification lorsqu'un utilisateur essais de se logger.

La première vérification se fait au niveau du username/password dans un table membres dans la base de donnée. La deuxième verification se fait au niveau d'un table ci_cession (table par default de la sauvegarde des session en base de donnée) dans l'onglet user_data.

Dans cet onglet, les données sauvegardé sont

// Tableau contenant les données qui seront envoyer a $this->session->set_userdata($data);
$data = array(
    'alias' =>  $this->input->post('alias'),
    'addr_ip'   =>  $_SERVER'REMOTE_ADDR'],
    'hote' =>   gethostbyaddr($_SERVER'REMOTE_ADDR']),
    'logged'    =>  true
);

Jusqu'à la, pas de problème, ensuite je formate l'onglet qui me retourne un tableau serialisé. J'arrive a décoder en utilisant ces deux fontions.

function _verification_double_login()
{       
    $q = $this->db->query('SELECT user_data FROM ci_sessions');

    if($q->num_rows() > 0)
    {
        foreach($q->result() as $row)
        {
            $row = @unserialize(strip_slashes($row->user_data));
            if (is_array($row))
            {
                array_walk_recursive($row, array(&$this, '_unescape_slashes'));
                return $row;
            }
        return (is_string($row)) ? str_replace('{{slash}}', '\\', $row) : $row;
        }
    }   
}

function _unescape_slashes(&$val, $key)
{
    if (is_string($val))
    {
        $val = str_replace('{{slash}}', '\\', $val);
    }
}

La où est mon problème, c'est que je n'arrive pas a valider si 'alias' dans le tableau $data est déja présent dans l'onglet user_data dans la base ci_sessions.

Avez-vous une solution ?

3 réponses


salut,
le mieux c'est d'utiliser les fonctions de la classe session de CodeIgniter
le guide utilisateur

Bonjour ato57,

Merci de m'avoir répondu, peut-être que vous n'avez pas tout à fait compris ce que j'essais de faire, en fait, je veux valide dans la table de la session nommé ci_session sous le champ user_data si le champ alias est déja présent. Le truc est que les information retourner par ce champ user_data de la table ci_cession sont retourné en boolean. donc j'unserialize le table. J'ai passée de long en large la doc de la session sur codeigniter. pour ce qui est du set_userdata il se charge après la verification que je veux faire. Car le table ou son alias apparait dans la table ci_session retournera false.

J'espère m'être mieux fait comprendre.

Merci! :-)

tu veux vérifier si 'alias' existe déjà dans le champ user_data de la table ci_session ou tu veux vérifier si 'alias' est le même que dans le champ user_data de ci_session ?