Ce site utilise des cookies pour améliorer uniquement votre expérience utilisateur.
Vous pouvez lire à tout moment comment nous utilisons les cookies sur le site.
Bonjour !
Très bon tuto pour l'espace membre et donc à tous un très grand merci.
J'ai juste un souci en faisant des tests avec Wampserver, le nouveau mot de passe n'est pas envoyé sur mon adresse mail.
Est-ce normal car je suis en local?
Merci de votre aide !
Re flexi2202 :
Envoie moi ton fichier connexionBD.php stp
re Flomir
me revoici déjà
Merci encore une fois
On avance doucement
Enfin j'aperçois la fenêtre de connexion
Ouf encore une étape
Je rentre les identifiant
Et voilà une nouvelle erreur , on va finir par y arriver , ne serais ce pas du au fait que ma table se nome utilisateur
Fatal error: Uncaught Error: Call to undefined method connexionDB::prepare() in /storage/ssd4/760/16000760/public_html/espace-membre-site-0/connexion.php:37 Stack trace: #0 {main} thrown in /storage/ssd4/760/16000760/public_html/espace-membre-site-0/connexion.php on line 37
Je reposte mon code 😀
<?php
session_start();
include('bd/connexionDB.php'); // Fichier PHP contenant la connexion à votre BDD
// S'il y a une session alors on ne retourne plus sur cette page
if (isset($_SESSION['id'])){
header('Location: index.php');
exit;
}
// Si la variable "$_Post" contient des informations alors on les traitres
if(!empty($_POST)){
extract($_POST);
$valid = true;
if (isset($_POST['connexion'])){
if(empty($_POST['mail'])){ // Vérification qu'il y est bien un mail de renseigné
$valid = false;
$er_mail = "Il faut mettre un mail";
}
if(empty($_POST['mdp'])){ // Vérification qu'il y est bien un mot de passe de renseigné
$valid = false;
$er_mdp = "Il faut mettre un mot de passe";
}
// On fait une requête pour savoir si le couple mail / mot de passe existe bien car le mail est unique !
$req=$DB->prepare('SELECT*FROM users WHERE mail = ?');
$req->execute($_POST['mail']);
$user = $req->fetch();
header('Location: index.php');
exit;
}
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Connexion</title>
</head>
<body>
<div>Se connecter</div>
<form method="post">
<?php
if (isset($er_mail)){
?>
<div><?= $er_mail ?></div>
<?php
}
?>
<input type="email" placeholder="Adresse mail" name="mail" value="<?php if(isset($mail)){ echo $mail; }?>" required>
<?php
if (isset($er_mdp)){
?>
<div><?= $er_mdp ?></div>
<?php
}
?>
<input type="password" placeholder="Mot de passe" name="mdp" value="<?php if(isset($mdp)){ echo $mdp; }?>" required>
<button type="submit" name="connexion">Se connecter</button>
</form>
</body>
</html>
Re @flexi2202 :
Non 😂
Faut pas faire ça 😂
Supprime les lignes :
$_POST['mail']
Il faut remplacer ta condition:
empty($mail))
Par:
empty($_POST['mail'])
Relis ma dernière réponse 👍
C'est super chouette de m'aider de cette façon enfin je vais avoir un espace membre opérationnel
J'ai surement dû faire une erreur quelque part
En ajoutant ceci
// à utiliser dans tes conditions :)
$_POST['mail']
$_POST['mdp']
Voici le morceau de code ou j'ai effectué le changement
if (isset($_POST['connexion'])){
$_POST['mail']
$_POST['mdp']
if(empty($mail)){ // Vérification qu'il y est bien un mail de renseigné
$valid = false;
$er_mail = "Il faut mettre un mail";
}
if(empty($mdp)){ // Vérification qu'il y est bien un mot de passe de renseigné
$valid = false;
$er_mdp = "Il faut mettre un mot de passe";
}
// On fait une requête pour savoir si le couple mail / mot de passe existe bien car le mail est unique !
$req = $DB->prepare('SELECT * FROM users WHERE mail = ?');
$req->execute($_POST['mail']);
$user = $req->fetch();
header('Location: index.php');
exit;
}
Re @flexi2202 :
Change ça:
$req = $DB->query("SELECT * FROM utilisateur WHERE mail = ? AND mdp = ?",
array($mail, crypt($mdp, "$6$rounds=5000$macleapersonnaliseretagardersecret$")));
$req = $req->fetch();
par ça:
$req = $DB->prepare('SELECT * FROM users WHERE mail = ?');
$req->execute($_POST['mail']);
$user = $req->fetch();
Et donc tu remplaceras ça:
// Si on a pas de résultat alors c'est qu'il n'y a pas d'utilisateur correspondant au couple mail / mot de passe
if (!isset($req['id'])){
$valid = false;
$er_mail = "Le mail ou le mot de passe est incorrecte";
}elseif($req['token'] <> NULL){ // Si le token est != de null alors le compte n'est pas validé
$valid = false;
$er_mail = "Veuillez confirmer votre compte";
}
// && plus bas de ta page
// Remplace tout les $req[''] par $user['']
$_SESSION['id'] = $req['id']; // id de l'utilisateur unique pour les requêtes futures
$_SESSION['nom'] = $req['nom'];
$_SESSION['prenom'] = $req['prenom'];
$_SESSION['mail'] = $req['mail'];
par ça:
// Si on a pas de résultat alors c'est qu'il n'y a pas d'utilisateur correspondant au couple mail / mot de passe
if (!isset($user['id'])){
$valid = false;
$er_mail = "Le mail ou le mot de passe est incorrecte";
}elseif($user['token'] <> NULL){ // Si le token est != de null alors le compte n'est pas validé
$valid = false;
$er_mail = "Veuillez confirmer votre compte";
}
// && plus bas dans ton code
// Remplace tout les $req[''] par $user['']
$_SESSION['id'] = $user['id']; // id de l'utilisateur unique pour les requêtes futures
$_SESSION['nom'] = $user['nom'];
$_SESSION['prenom'] = $user['prenom'];
$_SESSION['mail'] = $user['mail'];
Pour vérifier si le mot de passe est bon tu utiliseras cette condition:
if(password_verify($_POST['mdp'], $user->mdp)){
// Mot de passe bon
} elseif{
$valid = false;
$er_mail = "Le mot de passe est incorrecte";
// Mot de passe incorrect
}
Comme tout à l'heure tu supprimeras les trim et les htmlentities:
$mail = htmlentities(strtolower(trim($mail))); $mdp = trim($mdp);
et tu les utiliseras dans les conditions:
// à utiliser dans tes conditions :)
$_POST['mail']
$_POST['mdp']
Bon courage,
@Flomir 😀
waouhhh
Super voilà l'inscription est ok , un grand merci
Une bonne chose ...
Honnêtement je ne comprends pas les mauvais commentaires reçus dans les vidéos de YouTube je trouve cela triste
À présent l'inscription
Tu me disais de vérifier le mot de passe de cette façon
password_verify($_POST['mdp'], *******)// ******* =>
Je dois l'indiquer ou dans le code
Tant qu'à faire je présente le code de connexion aussi
<?php
session_start();
include('bd/connexionDB.php'); // Fichier PHP contenant la connexion à votre BDD
// S'il y a une session alors on ne retourne plus sur cette page
if (isset($_SESSION['id'])){
header('Location: index.php');
exit;
}
// Si la variable "$_Post" contient des informations alors on les traitres
if(!empty($_POST)){
extract($_POST);
$valid = true;
if (isset($_POST['connexion'])){
$mail = htmlentities(strtolower(trim($mail)));
$mdp = trim($mdp);
if(empty($mail)){ // Vérification qu'il y est bien un mail de renseigné
$valid = false;
$er_mail = "Il faut mettre un mail";
}
if(empty($mdp)){ // Vérification qu'il y est bien un mot de passe de renseigné
$valid = false;
$er_mdp = "Il faut mettre un mot de passe";
}
// On fait une requête pour savoir si le couple mail / mot de passe existe bien car le mail est unique !
$req = $DB->query("SELECT *
FROM utilisateur
WHERE mail = ? AND mdp = ?",
array($mail, crypt($mdp, "$6$rounds=5000$macleapersonnaliseretagardersecret$")));
$req = $req->fetch();
// Si on a pas de résultat alors c'est qu'il n'y a pas d'utilisateur correspondant au couple mail / mot de passe
if (!isset($req['id'])){
$valid = false;
$er_mail = "Le mail ou le mot de passe est incorrecte";
}elseif($req['token'] <> NULL){ // Si le token est != de null alors le compte n'est pas validé
$valid = false;
$er_mail = "Veuillez confirmer votre compte";
}
// S'il y a un résultat alors on va charger la SESSION de l'utilisateur en utilisateur les variables $_SESSION
if ($valid){
$_SESSION['id'] = $req['id']; // id de l'utilisateur unique pour les requêtes futures
$_SESSION['nom'] = $req['nom'];
$_SESSION['prenom'] = $req['prenom'];
$_SESSION['mail'] = $req['mail'];
header('Location: index.php');
exit;
}
}
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Connexion</title>
</head>
<body>
<div>Se connecter</div>
<form method="post">
<?php
if (isset($er_mail)){
?>
<div><?= $er_mail ?></div>
<?php
}
?>
<input type="email" placeholder="Adresse mail" name="mail" value="<?php if(isset($mail)){ echo $mail; }?>" required>
<?php
if (isset($er_mdp)){
?>
<div><?= $er_mdp ?></div>
<?php
}
?>
<input type="password" placeholder="Mot de passe" name="mdp" value="<?php if(isset($mdp)){ echo $mdp; }?>" required>
<button type="submit" name="connexion">Se connecter</button>
</form>
</body>
</html>
Re @flexi2202 !
Merci c'est gentil 😍
Ton code te dis qu'il y a une erreur dans cette ligne:
if(empty($_POST['mail']){
Et l'erreur en question est donc un oubli de parenthèse :
if(empty($_POST['mail'])){
Voilà 😆
re Flomir
Un tout grand merci
Le site et les tutos sont super bien explique
Et l'assistance est top
J'ai effectué les modifications
Mais j'ai encore une erreur d accolade
Parse error: syntax error, unexpected '{' in /storage/ssd4/760/16000760/public_html/espace-membre-site-0/inscription.php on line 35
Dans cette partie
je ne sais pas si j'ai bien fait le changement
// Vérification du mail
if(empty($_POST['mail']){
$valid = false;
$er_mail = "Le mail ne peut pas être vide";