Bonjour,

Je débute en php. En parcourant différents forum, j'ai fais un formulaire d'inscription qui fonctionne correctement et que voici.

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
<?php
 
 
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=fonctions', 'root', '',   $pdo_options);
 
$erreurs = [];
if(empty($_POST['pseudo'])) {
    $erreurs[] = 'Veuillez entrer un pseudo';
} else {
    $stmt = $bdd->prepare('SELECT COUNT(*) FROM abonnes WHERE pseudo = :pseudo');
    $stmt->execute(['pseudo' => $_POST['pseudo']]);
    if ($stmt->fetchColumn()) {
        $erreurs[] = 'Ce pseudo est déjà utilisé';
    }
}
if(empty($_POST['mdp'])) {
    $erreurs[] = 'Veuillez entrer un mot de passe';
} elseif($_POST['mdp'] != $_POST['mdp_confirm']) {
    $erreurs[] = 'mots de passes différents ';
}
if(empty($_POST['mail'])) {
    $erreurs[] = 'Veuillez entrer un mail';
} elseif($_POST['mail'] != $_POST['mail_confirm'])
    $erreurs[] = 'les deux adresses emails sont différentes ';
 
if ($erreurs) {
    echo '<ul><li>', implode('</li><li>', $erreurs), '</li></ul>';
} else {
 
	$req = $bdd->prepare('INSERT INTO abonnes(pseudo, mdp, mail) VALUES(:pseudo, :mdp, :mail)');
    $req->execute([
        'pseudo' => $_POST['pseudo'],
        'mdp' => $_POST['mdp'],
        'mail' => $_POST['mail'],
    ]);
 
    header('Location: inscription.php');
}
 
?>
cependant, mon formulaire de connexion ne fonctionne pas. Il ne doit pas s'agir de grand chose, mais je ne comprends pas l'erreur... .

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
<?php
$fail = FALSE;
if ('POST' == $_SERVER['REQUEST_METHOD']) {
    require('shared.php');
 
    $stmt = $bdd->prepare('SELECT * FROM abonnes WHERE pseudo = :pseudo');
    $stmt->execute(['pseudo' => $_POST['pseudo']]);
    if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        if (password_verify($_POST['mdp'], $row['mot_de_passe'])) {
            session_start();
            $_SESSION['id'] = $row['id'];
            if (password_needs_rehash($row['mot_de_passe'], $password_options['algo'], $password_options['options'])) {
                $stmt = $bdd->prepare('UPDATE abonnes SET mot_de_passe = :new_hash WHERE id = :id');
                $stmt->execute(['id' => $row['id'], 'new_hash' => password_hash($_POST['mdp'], $password_options['algo'], $password_options['options'])]);
            }
            header('Location: index.php');
            exit;
        } else {
            $fail = TRUE;
        }
    } else {
        $fail = TRUE;
    }
}
?>
pourriez-vous m'aider?


merci d'avance