Login en php/sql

Fermé
niumm - 8 sept. 2020 à 13:58
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 12 sept. 2020 à 00:25
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 :
<?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

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
Modifié le 8 sept. 2020 à 15:19
bonjour, 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?
0
j'ai déjà fais tout le html et css du login mais je n'ai encore rien fais en php et SQL. Et oui, je compte progresser en SQL car ce que je fais ne me sert pas spécialement, je m'en sert comme auto-formation pour pouvoir savoir le faire plus tard.
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > niumm
9 sept. 2020 à 15:10
0
niumm > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
9 sept. 2020 à 15:30
ok merci !
0
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>  ";
}

0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
9 sept. 2020 à 16:16
quelle est cette simple erreur?
0
niumm > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
9 sept. 2020 à 16:49
bah je ne sais pas, mon éditeur m'écrit un message d'erreur comme quoi la page ne fonctionne pas (HTTP ERROR 500)
0
niumm > niumm
9 sept. 2020 à 16:53
Ah non, c'était une erreur de cote. Merci pour tout en tout cas
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > niumm
9 sept. 2020 à 17:12
0
niumm > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
11 sept. 2020 à 14:14
d'accord merco beaucoup
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
11 sept. 2020 à 16:44
Tu 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 !
0
<?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>  ";
}

0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > niumm
11 sept. 2020 à 17:03
où, dans ton code, vérifies-tu le mot de passe?
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > niumm
11 sept. 2020 à 18:20
tu 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.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
12 sept. 2020 à 00:25
Et 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.
0