Comment créer un login pour sa page ? [Résolu]

Signaler
-
Messages postés
6
Date d'inscription
jeudi 20 mai 2021
Statut
Membre
Dernière intervention
20 mai 2021
-
Bonjour,
j'ai besoin d'aide, je suis entrain de créer une page web et j'aurais besoin de mettre un login pour y accéder.
Pour l'instant j'ai le codage du login mais j'ai besoin d'aide pour la base de donné, dans l'exemple que j'ai vu ils utilisaient une base de donné externe moi il m'en faut une que je puisse géré, car, quand la page web que je fait sera fini on ne sera que quelque personne a y avoir accès.

4 réponses

Messages postés
16087
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 juin 2021
868
bonjour,
as-tu choisi un langage de programmation?
peux-tu partager ton code?
merci de tenir compte de ceci: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
oui je les est fait en html, il est en plusieurs fichier le premier (login.php)=>

<html>
    <head>
       <meta charset="utf-8">
        <link rel="stylesheet" href="style1.css" media="screen" type="text/css" />
    </head>
    <body>
        <div id="container">
            <form action="verification.php" method="POST">
                <h1>Connexion</h1>
                
                <label><b>Nom d'utilisateur</b></label>
                <input type="text" placeholder="Entrer le nom d'utilisateur" name="username" required>

                <label><b>Mot de passe</b></label>
                <input type="password" placeholder="Entrer le mot de passe" name="password" required>

                <input type="submit" id='submit' value='LOGIN' >
                <?php
                if(isset($_GET['erreur'])){
                    $err = $_GET['erreur'];
                    if($err==1 || $err==2)
                        echo "<p style='color:red'>Utilisateur ou mot de passe incorrect</p>";
                }
                ?>
            </form>
        </div>
    </body>
</html>


le deuxième (principale.php)=>

<html>
    <head>
        <meta charset="utf-8">
        <link rel="stylesheet" href="style1.css" media="screen" type="text/css" />
    </head>
    <body style='background:#fff;'>
        <div id="content">
            <?php
                session_start();
                if($_SESSION['username'] !== ""){
                    $user = $_SESSION['username'];
                    echo "Bonjour $user, vous êtes connecté";
                }
            ?>
            
        </div>
    </body>
</html>


est le css (style1.css) =>

body{
    background: #67BE4B;
}
#container{
    width:400px;
    margin:0 auto;
    margin-top:10%;
}
/* Bordered form */
form {
    width:100%;
    padding: 30px;
    border: 1px solid #f1f1f1;
    background: #fff;
    box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
}
#container h1{
    width: 38%;
    margin: 0 auto;
    padding-bottom: 10px;
}

/* Full-width inputs */
input[type=text], input[type=password] {
    width: 100%;
    padding: 12px 20px;
    margin: 8px 0;
    display: inline-block;
    border: 1px solid #ccc;
    box-sizing: border-box;
}

/* Set a style for all buttons */
input[type=submit] {
    background-color: #53af57;
    color: white;
    padding: 14px 20px;
    margin: 8px 0;
    border: none;
    cursor: pointer;
    width: 100%;
}
input[type=submit]:hover {
    background-color: white;
    color: #53af57;
    border: 1px solid #53af57;
}


je ne l'ai pas encore modifier mais sa y a pas de soucis je sais faire.
et s'est pour le "verification.php" que j'aurais besoin d'aide

( Est aussi désolée pour l’orthographe la dysorthographie sa aide pas !-! )
Je ne sais pas comment le faire, car sur l'exemple il utiliser une base de donné externe avec un site mais moi je voudrais juste un simple avec un seul est unique identifient et mot de passe
Messages postés
16087
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 juin 2021
868 > kimi
peux-tu préciser le nom de chacun des fichiers que tu nous montres?
si tu veux adapter un exemple, ne penses-tu pas utile de nous montrer cet exemple?

ton site fonctionne bien, tes pages avec le code php répondent bien?
Messages postés
6
Date d'inscription
jeudi 20 mai 2021
Statut
Membre
Dernière intervention
20 mai 2021

exacte je vient de mettre les nom correspondant a chaque fichier et voici l'exemple en question =>

login.php
<html>
    <head>
       <meta charset="utf-8">
        <!-- importer le fichier de style -->
        <link rel="stylesheet" href="style.css" media="screen" type="text/css" />
    </head>
    <body>
        <div id="container">
            <!-- zone de connexion -->
            
            <form action="verification.php" method="POST">
                <h1>Connexion</h1>
                
                <label><b>Nom d'utilisateur</b></label>
                <input type="text" placeholder="Entrer le nom d'utilisateur" name="username" required>

                <label><b>Mot de passe</b></label>
                <input type="password" placeholder="Entrer le mot de passe" name="password" required>

                <input type="submit" id='submit' value='LOGIN' >
                <?php
                if(isset($_GET['erreur'])){
                    $err = $_GET['erreur'];
                    if($err==1 || $err==2)
                        echo "<p style='color:red'>Utilisateur ou mot de passe incorrect</p>";
                }
                ?>
            </form>
        </div>
    </body>
</html>


style.css

body{
    background: #67BE4B;
}
#container{
    width:400px;
    margin:0 auto;
    margin-top:10%;
}
/* Bordered form */
form {
    width:100%;
    padding: 30px;
    border: 1px solid #f1f1f1;
    background: #fff;
    box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
}
#container h1{
    width: 38%;
    margin: 0 auto;
    padding-bottom: 10px;
}

/* Full-width inputs */
input[type=text], input[type=password] {
    width: 100%;
    padding: 12px 20px;
    margin: 8px 0;
    display: inline-block;
    border: 1px solid #ccc;
    box-sizing: border-box;
}

/* Set a style for all buttons */
input[type=submit] {
    background-color: #53af57;
    color: white;
    padding: 14px 20px;
    margin: 8px 0;
    border: none;
    cursor: pointer;
    width: 100%;
}
input[type=submit]:hover {
    background-color: white;
    color: #53af57;
    border: 1px solid #53af57;
}


verification.php
<?php
session_start();
if(isset($_POST['username']) && isset($_POST['password']))
{
    // connexion à la base de données
    $db_username = 'root';
    $db_password = 'mot_de_passe_bdd';
    $db_name     = 'nom_bdd';
    $db_host     = 'localhost';
    $db = mysqli_connect($db_host, $db_username, $db_password,$db_name)
           or die('could not connect to database');
    
    // on applique les deux fonctions mysqli_real_escape_string et htmlspecialchars
    // pour éliminer toute attaque de type injection SQL et XSS
    $username = mysqli_real_escape_string($db,htmlspecialchars($_POST['username'])); 
    $password = mysqli_real_escape_string($db,htmlspecialchars($_POST['password']));
    
    if($username !== "" && $password !== "")
    {
        $requete = "SELECT count(*) FROM utilisateur where 
              nom_utilisateur = '".$username."' and mot_de_passe = '".$password."' ";
        $exec_requete = mysqli_query($db,$requete);
        $reponse      = mysqli_fetch_array($exec_requete);
        $count = $reponse['count(*)'];
        if($count!=0) // nom d'utilisateur et mot de passe correctes
        {
           $_SESSION['username'] = $username;
           header('Location: principale.php');
        }
        else
        {
           header('Location: login.php?erreur=1'); // utilisateur ou mot de passe incorrect
        }
    }
    else
    {
       header('Location: login.php?erreur=2'); // utilisateur ou mot de passe vide
    }
}
else
{
   header('Location: login.php');
}
mysqli_close($db); // fermer la connexion
?>


principale.php

<html>
    <head>
        <meta charset="utf-8">
        <!-- importer le fichier de style -->
        <link rel="stylesheet" href="style.css" media="screen" type="text/css" />
    </head>
    <body style='background:#fff;'>
        <div id="content">
            <!-- tester si l'utilisateur est connecté -->
            <?php
                session_start();
                if($_SESSION['username'] !== ""){
                    $user = $_SESSION['username'];
                    // afficher un message
                    echo "Bonjour $user, vous êtes connecté";
                }
            ?>
            
        </div>
    </body>
</html>
Messages postés
16087
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 juin 2021
868 >
Messages postés
6
Date d'inscription
jeudi 20 mai 2021
Statut
Membre
Dernière intervention
20 mai 2021

un exemple de ce que tu peux faire dans verification.php:
<?php
session_start();
if(isset($_POST['username']) && isset($_POST['password']))
{
    $username = $_POST['username']; 
    $password = $_POST['password'];
    if($username !== "" && $password !== "")
    {
        if(   ($username == "moi" && $password == "monmdpsecret")
              OR ($username == "toi" && $password == "tonmdpsecret")
              OR ($username == "lui" && $password == "sonmdpsecret")
           )
        {   // nom d'utilisateur et mot de passe corrects
           $_SESSION['username'] = $username;
           header('Location: principale.php');
        }
        else
        {  // utilisateur ou mot de passe incorrect
           header('Location: login.php?erreur=1'); 
        }
    }
    else
    {
       header('Location: login.php?erreur=2'); // utilisateur ou mot de passe vide
    }
}
else
{
   header('Location: login.php');
}
?>
Messages postés
6
Date d'inscription
jeudi 20 mai 2021
Statut
Membre
Dernière intervention
20 mai 2021
>
Messages postés
16087
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 juin 2021

sa fonction !! j'ai juste du oublier dans un des fichier de rediriger ver mon site sans doute dans principale.php .

mais je viens de remarquer (une erreur de ma par dans la construction du site) lors de la connexion au site il suffit de retiré /login.php a l'adresse complète pour y accédé sans se connecté.
Messages postés
16087
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 juin 2021
868 >
Messages postés
6
Date d'inscription
jeudi 20 mai 2021
Statut
Membre
Dernière intervention
20 mai 2021

le système de connexion par login ne protège pas ton site.

ce qu'il faut faire maintenant, c'est, dans toutes les pages (que tu veux protéger), vérifier, comme tu fais dans principale.php, le contenu de $_SESSION['username'].

si le contenu est vide, tu peux soit ne pas afficher la page, soit rediriger vers login.php, soit ...
Messages postés
16087
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 juin 2021
868 >
Messages postés
16087
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 juin 2021

si tu ne fais pas cela, rien n'empeche le visiteur d'ajouter le nom d'une page dans la barre d'adresse, et d'y arriver même si il n'est pas connecté.
Messages postés
6
Date d'inscription
jeudi 20 mai 2021
Statut
Membre
Dernière intervention
20 mai 2021
>
Messages postés
16087
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 juin 2021

exacte maintenant que s'est fait tout fonctionne comme je le voulais.
encore un grand merci pour l'aide
Messages postés
6
Date d'inscription
jeudi 20 mai 2021
Statut
Membre
Dernière intervention
20 mai 2021

en tout cas un grand merci pour l'aide