Bonjour,

voilà j'ai créer un espace membre je bloque sur la partie register je souhaiterais connecter directement l'utilisateur après son inscription.
Je ne c'est pas du tout comment faire pourriez vous m'aidez s'il vous plaît :)

Voici mon code

 if($validator->valid()) {

        $auth = new auth($db);

        $auth->register($_POST['name'], $_POST['firstname'], $_POST['email'], $_POST['password'], $_SERVER['REMOTE_ADDR']);

    } else {

        if(isset($_POST['submit'])) {

                        var_dump("errors");

                }

    }

Pages auth.php

<?php 

    class auth {

        private $db;

        public function __construct($db) {

            $this->db = $db;

        }

        public function register($name, $firstname, $email, $password, $ipregister) {

            $password = password_hash($password, PASSWORD_BCRYPT);

            $this->db->query('INSERT INTO clients SET name = ?, firstname = ?, email = ?, password = ?, ipregister = ?', [$name, $firstname, $email, $password, $ipregister]);

        }

    }

4 réponses


SLK
Réponse acceptée

Salut,

Il faudrait déjà que tu ais un système de connexion de base.. (avec un formulaire etc..)

je ne pense pas que c'est ce qu'il souhaite faire.

Il aimerait que l'utilisateur soit directement connecté au site au moment où il finalise l'enregistrement d'un nouveau compte (sans passer par un formulaire de connexion).
L'idée ici c'est :
Vu que l'utilisateur vient de s'enregistrer, pourquoi ne pas le connecter directement ? On gagne du temps, et l'utilisateur ne s'embête pas à RE-tapper son login/mdp qu'il vient à L'INSTANT de renseigner lors de l'inscription...

En fait en général, les concepteurs de sites ne connectent PAS directement les nouveaux comptes, à cause des éventuels "robots".
En effet votre site pourrait subir une "attaque" qui consiste à créer UNE MULTITUDE de nouveaux comptes "bidon" par des "robots".
Alors pour se prémunir on a plein de systèmes : CAPTCHA, l'ien d'activation par e-mail, le nouveau truc de Google là etc.

Mais si j'amais tu te dis que le site n'est pas assez "important" pour subir une attaque, ou pas assez "sensible" pour que ce soit grave, et que tu décide quand-même de connecter tes utilisateurs dès leur inscription, alors j'imagine que je ferai comme ça :

La fonction query que tu nous a montré (dans la fonction register()) semble être une fonction à toi (pas celle de PDO), alors modifie-là pour faire en sorte qu'elle retourne false si la requête n'as pas aboutie.
Ensuite dans la fonction register(), vérifie avec un if si le INSERT te renvoie donc false ou non.
Si ce n'est pas false, alors on connecte l'utilisateur.
La façon de connecter l'utilisateur dépend de la façon dont tu as conçu ton site, mais disons pour faire simple qu'on va enregistrer une variable de SESSION :

public function register($name, $firstname, $email, $password, $ipregister) {

            $password = password_hash($password, PASSWORD_BCRYPT);

            $user_created = $this->db->query('INSERT INTO clients SET name = ?, firstname = ?, email = ?, password = ?, ipregister = ?', [$name, $firstname, $email, $password, $ipregister]);

            if ($user_created != false)
            {
                    $_SESSION['user_connected'] = true;
            }
}

Il faut adapter selon ta conception de ton site,
et ne pas oublier de modifier ta fonction personnelle query() pour qu'elle renvoie un boolean selon si la requête à aboutie ou non.

Bonjour,

Il faudrait déjà que tu ais un système de connexion de base.. (avec un formulaire etc..), ensuite une fois ça fait, tu envois ça dans ton script qui gère la connexion (le select qui vérifie si ce que tape l'utilisateur pendant la connexion existe en base), et vu que l'inscription vient d'être faite ça fonctionnera forcément ce qui permettra ensuite à ton script de connecter l'utilisateur normalement.

J'ai dis qu'il faudrait qu'il ait un système de formulaire pour que ce soit plus simple à mettre en place, alors qu'à aucun moment je n'ai dis que l'utilisateur devrait se connecter en utilisant ces formulaire (oui c'est être pointilleux, mais c'est le cas, c'était juste pour illustrer),
Ce que je voulais dire c'est qu'il aurait juste suffit de récupérer les données depuis le formulaire d'inscription, et une fois fait, on les transfères vers le code "connexion" sur une page distante ou sur la même page d'ailleurs. Et donc vu que l'utilisateur vient tout juste d'être inscrit, le compte existe, mais par conventions (j'en parle un peu plus bas), on préfère utiliser un select.
L'idée était justement de passer par un système sécurisé (comme ce qu'on peut faire en utilisant un système de connexion classique car comme tu dis pouvoir éviter la connexion d'un robot..), et il faut penser à tous les cas possible (si pour X ou Y raison l'utilisateur souhaite se connecter à chaque fois en tapant ses logs on ne sait jamais.... et ça existe...).

Et qu'en plus ça reste moins "tricky" d'utiliser ce système, c'est en quelque sorte une convention (dans la plupart des cas on connecte l'utlisateur en faisant une requête SELECT pour être sûr qu'on connecte le bon utilisateur).

Après Motel les deux méthodes que l'on te propose sont correct, à toi de choisir :D

Motel
Auteur

Bonjour,

Merci beaucoup ça fonctionne :)