Bonjour,

J'ai actuellement un blocage dans mon projet en cours. J'ai compris ce que je devais faire mais après de multiples essais ça ne fonctionne pas.. du coup j'ai tout effacé (enfin une partie ahaha).

En gros, le formulaire d'inscription fonctionne bien, la bdd se remplit avec le mdp hashé, tout est ok.
Maintenant, pour lancer une session avec le formulaire de connexion, ça coince... J'ai mis en commentaire dans le code (dans function connexion()) ce que j'ai compris de ce que je devais faire, mais je coince.. si quelqu'un peut m'éclairer.

Alors côté modèle, dans mon login manager j'ai ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class LoginManager
{
    public function registerUser($username, $password)
	{
        $pass_hache = password_hash($password, PASSWORD_DEFAULT);
    	$db = $this->dbConnect();
        $login = $db->prepare('INSERT INTO user(username, password, FKtype_user) VALUES(?, ?, 2)');
        $affectedLines = $login->execute(array($username, $pass_hache));
 
        return $affectedLines;
	}
 
    public function sessionUser($username)
    {
        $db = $this->dbConnect();
        $login = $db->prepare('SELECT id, password FROM user WHERE username= ?');
        $login->execute(array($username));
 
        return $login;  
    }
 
    // Connexion à la BDD
    private function dbConnect()
    {
        $servername = "xxx";
        $username = "xxx";
        $password = "xxx";
        $database = "xxx";
 
        $db = new PDO("mysql:host=$servername;dbname=$database", $username, $password);
        return $db;    
    }
}
Coté contrôleur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
function addUser($username, $password)
{
    $loginManager = new LoginManager();
 
    $affectedLines = $loginManager->registerUser($username, $password);
 
    if ($affectedLines === false) {
        // Erreur gérée. Elle sera remontée jusqu'au bloc try du routeur !
        echo "<script>alert(\"Inscription impossible ! Le pseudo que vous tentez de prendre est peut-être déjà utilisé....\");
        document.location.href = '/index.php?action=newUser'</script>";
 
    }    
    else {
        echo "<script>alert(\"Vous êtes maintenant inscrit ! Veuillez vous connecter.\");
        document.location.href = '/index.php?action=connexion'</script>";
    }
}
 
function connexion($username, $passwordform)
{
    $loginManager = new LoginManager();
    $login = $loginManager->sessionUser($username);
 
    //Si rien dans $login = infos non récupérées dans BDD donc user n'existe pas 
 
    //Si infos dans $login = user existe -> vérifier mot de passe 
 
   //Si mdp ok, lancer $_SESSION !
 
}
 
function deconnexion()
{
    $_SESSION = array();
    session_destroy();
    header('Location: /index.php?action=connexion');
    exit;
}
Côté routeur (je mets tout le bloc) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
session_start();
require('./controleurs/controller.php');
 
try { // On essaie de faire des choses
    if (isset($_GET['action'])) {
        if ($_GET['action'] == 'listPosts') {
            listPosts();
        }
        elseif ($_GET['action'] == 'post') {
            if (isset($_GET['id']) && $_GET['id'] > 0) {
                post();
            }
            else {
                // Erreur ! On arrête tout, on envoie une exception, donc au saute directement au catch
                throw new Exception('Aucun identifiant de billet envoyé');
            }
        }
        elseif ($_GET['action'] == 'addComment') {
            if (isset($_GET['id']) && $_GET['id'] > 0) {
                if (!empty($_POST['author']) && !empty($_POST['content'])) {
                    addComment($_GET['id'], $_POST['author'], $_POST['content']);
                }
                else {
                    // Autre exception
                    throw new Exception('Tous les champs ne sont pas remplis !');
                }
            }
            else {
                // Autre exception
                throw new Exception('Aucun identifiant de billet envoyé');
            }
        }
        elseif ($_GET['action'] == 'newArticle') {
            viewAddArticle();
        }
        elseif ($_GET['action'] == 'addArticle') {
                if (!empty($_POST['title']) && !empty($_POST['content'])) {
                    addArticle($_POST['title'], $_POST['content']);
                }
                else {
                    // Autre exception
                    throw new Exception('Tous les champs ne sont pas remplis !');
                }
        }
        elseif ($_GET['action'] == 'newUser') {
            viewAddUser();
        }
        elseif ($_GET['action'] == 'addUser') {
                if (!empty($_POST['username']) && !empty($_POST['password'])) {
                    addUser($_POST['username'], $_POST['password']);
                }
                else {
                    // Autre exception
                    throw new Exception('Tous les champs ne sont pas remplis !');
                }
        }
        elseif ($_GET['action'] == 'connexion') {
            viewConnexion();
        }
        elseif ($_GET['action'] == 'checkconnexion') {
            if(!empty($_POST['username']) && !empty($_POST['password'])){
                connexion($_POST['username'], $_POST['password']);
            }   
            else {
                //erreur
                throw new Exception('Tous les champs ne sont pas remplis !');
            } 
        }
        elseif ($_GET['action'] == 'deconnexion') {
            deconnexion();
        }
        elseif ($_GET['action'] == 'listPostsAdmin') {
            listPostsAdmin();
        }
 
    }
    else {
        listPosts();
    }
}
catch(Exception $e) { // S'il y a eu une erreur, alors...
    echo 'Erreur : ' . $e->getMessage();
}
Je n'ai pas mis le code de la vue mais je peux le mettre si besoin.

Merciii