Login en php/sql

niumm -  
jordane45 Messages postés 40052 Date d'inscription   Statut Modérateur Dernière intervention   -
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 24281 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 586
 
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
niumm
 
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 24281 Date d'inscription   Statut Contributeur Dernière intervention   1 586 > niumm
 
0
niumm > yg_be Messages postés 24281 Date d'inscription   Statut Contributeur Dernière intervention  
 
ok merci !
0
niumm
 
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 24281 Date d'inscription   Statut Contributeur Dernière intervention   1 586
 
quelle est cette simple erreur?
0
niumm > yg_be Messages postés 24281 Date d'inscription   Statut Contributeur Dernière intervention  
 
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
 
Ah non, c'était une erreur de cote. Merci pour tout en tout cas
0
jordane45 Messages postés 40052 Date d'inscription   Statut Modérateur Dernière intervention   4 761 > niumm
 
0
niumm > jordane45 Messages postés 40052 Date d'inscription   Statut Modérateur Dernière intervention  
 
d'accord merco beaucoup
0
jordane45 Messages postés 40052 Date d'inscription   Statut Modérateur Dernière intervention   4 761
 
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
niumm
 
<?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 24281 Date d'inscription   Statut Contributeur Dernière intervention   1 586 > niumm
 
où, dans ton code, vérifies-tu le mot de passe?
0
jordane45 Messages postés 40052 Date d'inscription   Statut Modérateur Dernière intervention   4 761 > niumm
 
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 40052 Date d'inscription   Statut Modérateur Dernière intervention   4 761 > jordane45 Messages postés 40052 Date d'inscription   Statut Modérateur Dernière intervention  
 
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