Login en php/sql
Bonjour,
Alors voila, j'ai un formulaire de création de compte en php avec connexion à une base de données. Je voudrais donc maintenant avoir un login.php pour se connecter avec une adresse mail et un mot de passe (définit juste avant dans le formulaire de création de compte) depuis la base de données avec un message "Vous vous êtes bien authentifié" ou "Se compte n'existe pas, en créer un ?". Je ne m'y connais vraiment pas en SQL, je début :x
Voici mon formulaire de création de compte :
Alors voila, j'ai un formulaire de création de compte en php avec connexion à une base de données. Je voudrais donc maintenant avoir un login.php pour se connecter avec une adresse mail et un mot de passe (définit juste avant dans le formulaire de création de compte) depuis la base de données avec un message "Vous vous êtes bien authentifié" ou "Se compte n'existe pas, en créer un ?". Je ne m'y connais vraiment pas en SQL, je début :x
Voici mon formulaire de création de compte :
<?php
$dbh = 'mysql:host=***;dbname=***';
$user = '***';
$pass = '***';
try{
$pdo = new PDO($dbh, $user, $pass);
} catch (PDOException $e) {
print "Erreur !" . $e->getMessage();
die();
}
$req = $pdo->prepare("INSERT INTO Utilisateur (Nom,Prenom,email,MotDePasse) VALUES(:nom, :prenom, :email, :pwd)"
, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$req->execute(array(
':nom' => $_POST['name'],
':prenom' => $_POST['prenom'],
':email' => $_POST['mail'],
':pwd' => $_POST['password']
));
$req->closeCursor();
// Le message
$message = "Vous avez recu une nouvelle demande de contact sur votre site internet\n\n";
$message .= ' Identifiant : '.$_POST['id'];
$message .= ' Nom : '.$_POST['name'];
$message .= ' Prénom : '.$_POST['prenom'];
$message .= ' E-mail : '.$_POST['mail'];
$message .= ' Mot de passe : '.$_POST['password'];
$to = '***@***';
$subject = 'Demande de contact';
$headers = 'From: contact@***' . "\r\n" .
'Reply-To: contact@***' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
// Envoi du mail
if(mail($to, $subject, $message, $headers))
{
echo "
<script type='text/javascript'>
alert('Votre demande nous a bien été adressée. Nous vous répondrons dès que possible.');
setTimeout(function (){
window.location.href = 'index.html#contact?message=succes';
}, 2000);
</script> ";
}
else
{
echo 'erreur';
}
3 réponses
-
Contributeurbonjour, il est recommandé de ne pas enregistrer le mot de passe en clair dans la base, et de plutôt enregistrer une clé de hachage du mot de passe. comme expliqué ici: https://www.php.net/manual/fr/function.password-hash.php
as-tu commencé ta page de login? veux-tu progresser en SQL?-
-
Contributeur@niummje pense que ces deux liens t'aideront à apprendre et à progresser:
https://forums.commentcamarche.net/forum/affich-36832456-recuperation-donnees-d-un-formulaire-avec-sql#1
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/ -
@yg_beok merci !
-
-
J'ai une simple erreur mais je n'arrive pas à trouver ce qui ne vas pas dans mon code. Si tu arriverais à m'aider ce serait merveilleux.
<?php $dbh = 'mysql:host=***;dbname=***'; $user = '***'; $pass = '***'; try{ $pdo = new PDO($dbh, $user, $pass); } catch (PDOException $e) { print "Erreur !" . $e->getMessage(); die(); } $stmt = $pdo->prepare('SELECT * FROM Utilisateur WHERE mail = :email and password = :pwd'); $stmt->bindValue(':email, $_POST['mail'], PDO::PARAM_STR'); $stmt->bindValue(':pwd, $_POST['password'], PDO::PARAM_STR'); $stmt->execute(); $user = $stmt->fetchAll(); var_dump($user); // Le message $message = "Quelqu'un s'est connecté\n\n"; $message .= ' E-mail : '.$_POST['mail']; $message .= ' Mot de passe : '.$_POST['password']; $to = '***@gmail.com'; $subject = 'connexion'; $headers = 'From: contact@***' . "\r\n" . 'Reply-To: contact@***' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); // Envoi du mail if(mail($to, $subject, $message, $headers)) { echo " <script type='text/javascript'> alert('Bienvenu sur notre site.'); setTimeout(function (){ window.location.href = 'index.html'; }, 2000); </script> "; } else { echo " <script type='text/javascript'> alert('Compte non valide.'); setTimeout(function (){ window.location.href = 'index.html'; }, 2000); </script> "; }-
-
@yg_bebah je ne sais pas, mon éditeur m'écrit un message d'erreur comme quoi la page ne fonctionne pas (HTTP ERROR 500)
-
@niummAh non, c'était une erreur de cote. Merci pour tout en tout cas
-
Modérateur@niummBonjour,
Au passage,
Je t'invite fortement à lire ( et à appliquer !! ) les conseils donnés ici :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
et là :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code -
@jordane45d'accord merco beaucoup
-
-
ModérateurTu as donc appliqué les consignes qui se trouvent dans les liens que je t'ai donné ?
Je t'invite fortement à lire ( et à appliquer !! ) les conseils donnés ici :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
et là :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Dans ce cas.... montres nous ton code modifié qu'on puisse essayer de voir ce qui ne va pas.
NB: Tant que ton souci d'import en BDD ne sera pas résolu.... met en commentaire les lignes qui font les redirections vers d'autres pages... sinon tu ne pourras pas voir les erreurs qui s'afficheraient éventuellement dans ta page !
-
<?php $dbh = $user = $pass = try{ $pdo = new PDO($dbh, $user, $pass); } catch (PDOException $e) { print "Erreur !" . $e->getMessage(); die(); } $stmt = $pdo->prepare('SELECT * from Utilisateur WHERE email = :email and MotDePasse = :pwd'); $stmt->bindValue(':email', $_POST['mail'], PDO::PARAM_STR); $stmt->bindValue(':pwd', $_POST['password'], PDO::PARAM_STR); $stmt->execute(); $user = $stmt->fetchAll(); var_dump($user); // Le message $message = "Quelqu'un s'est connecté\n\n"; $message .= ' E-mail : '.$_POST['mail']; $message .= ' Mot de passe : '.$_POST['password']; $to = '@gmail.com'; $subject = 'connexion'; $headers = 'From: contact@ . "\r\n" . 'Reply-To: contact@' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); // Envoi du mail if(mail($to, $subject, $message, $headers)) { echo " <script type='text/javascript'> alert('Bienvenu sur notre site.'); setTimeout(function (){ window.location.href = 'index.html'; }, 2000); </script> "; } else { echo " <script type='text/javascript'> alert('Compte non valide.'); setTimeout(function (){ window.location.href = 'index.html'; }, 2000); </script> "; } -
Contributeur@niummoù, dans ton code, vérifies-tu le mot de passe?
-
Modérateur@niummtu n'as pas du tout applliqué les consignes qui t'ont été données concernant l'activation des erreurs PDO et la mise en place des blocs try catch pour chaque requête....
Reviens nous voir quand ça sera fait. -
Modérateur@jordane45Et puis il faut peut-être bien tester ta variable
$user ... (Avec un count par exemple ou un !empty .... ) Pour savoir si un utilisateur a été trouvé ou non.. bref il faut que tu fasses un IF ... Et que tu n'envoie le mail que si l'utilisateur existe.
-