IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

réalisation d'un logiciel php & MySQL


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur / Enseignant
    Inscrit en
    Février 2012
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur / Enseignant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 115
    Points : 139
    Points
    139
    Par défaut réalisation d'un logiciel php & MySQL
    Bonjour à tous,

    je dois réaliser un logiciel ou plusieurs personnes pourront se connecter avec différents profil et donc n'ayant pas accès à toutes les pages.

    L’accès au logiciel doit être un minimum sécurisé car il y a des données confidentielles et c'est là dessus que j'aurais besoin d'un coup de main. J'ai commencé à regarder les fonctions crypt() et sha1() mais j'ai un peu de mal.

    Donc voici où j'en suis:

    Fichier d'authentification.php
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <html>
        <head>
            <title>Page d'identification</title></head>
        </head>
        <body>
    		<p>Veuillez entrer votre identifiant et votre mot de passe</p>
            <form method="post" action="verif.php">
                <p>
                <label for="nom">Identifiant : </label>
                <input type="text" name="login">
                </p>
                <p>
                <label for="motdepasse">Mot de passe : </label>
                <input type="password" name="motdepasse">
                </p>
                <p>
                <input type = "submit" value = "Se connecter">
                </p>
            </form>
    		<p>
        </body>
    </html>

    Fichier Verif.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <?php
     
    require ("verification.php");
     
    // Initialisation de la session
    session_start();
     
    // Si on reçoit les données du formulaire
    if ( isset( $_POST['login'] ) && isset( $_POST['motdepasse'] ) )
     
    {
    	// On les récupère
    	$nom = $_POST['login'];
    	$motdepasse = $_POST['motdepasse'];
     
    	// On teste si le mot de passe est valide
    	if ( verification ($nom, $motdepasse) )
    	{
    		// Le mot de passe est valide, l'utilisateur est identifié
    		// On change d'identifiant de session
    		session_regenerate_id();
     
    		// On sauvegarde son nom dans la session
    		$_SESSION['nom'] = $nom ;
    		$message = 'Vous êtes correctement identifié' ;
    	}
    	else
    	{
    		// Sinon on avertit l'utilisateur
    		$message = 'Mot de passe incorrect' ;
    		$message .='<a href="auth.php"> retour</a>' ;
    	}
    }
    else
    {
    	// Un des champs n'est pas rempli
    	$message = 'le login ou le mot de passe est vide' ;
    	$message .= '<a href="auth.php"> retour</a>' ;
    }
    ?>
    <html>
    	<head><title>Identification</title></head>
    		<body>
    			<p><?php echo $message ?></p>
    		</body>
    	</head>
    </html>
    Fichier verification.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <?php
    function verification($nom, $pass)
    {
    	// Connexion SQL
    	$dbhote = 'localhost' ;
    	$dbuser = 'root' ;
    	$dbpass = 'monpass' ;
    	$dbbase = 'mabase' ;
     
    	$dsn = "mysql:host=$dbhote;dbname=$dbbase" ;
    	$dbh = new PDO($dsn, $dbuser, $dbpass);
     
    	// Création de la requete SQL
    	$nom_sql = $dbh->quote($nom);
    	$pass_sql = $dbh->quote($pass);
    	$sql = "SELECT count(*) as nbres FROM utilisateur "
    		    . "WHERE UtilisateurNom = $nom_sql AND UtilisateurPswd = $pass_sql" ;
     
    	//Exécution de la requete SQL
    	$result = $dbh -> query ($sql);
    	$row = $result -> fetch();
    	$result = null ;
    	if ($row['nbres'] == 1)
    	{
    		return TRUE ;
    	}
    	else
    	{
    		return FALSE ;
    	}
    }
    ?>
    Donc s'il y a moyen de faire plus simple, plus propre, je veux apprendre, donc je suis preneur. Pour ce qui est de la page d'authentification c'est très basique, donc si vous avez de quoi améliorer ça aussi, je suis preneur.

    Merci pour votre aide...

    Melwin

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Concernant la protection des mots de passe il y a deux choses.

    1/ Protéger tes mots de passe durant leur transmission dans les tuyaux du web.
    Pour ce faire tu peux utiliser une connexion sécurisée comme SSL. Cette technique te permet par ailleurs de sécuriser tes variables de session, elle est donc à recommander si ton hébergement le permet.

    A défaut (ou en complément) il existe une deuxième technique qui est de hascher le mot de passe côté client (en javascript) avant de le transmettre dans les tuyaux. Il y a un exemple de code complet ici. A noter que cette technique est efficace pour protéger les mots de passe mais cependant elle ne protège pas la session.

    2/ Par déontologie et au cas où ta base de donnée serait piratée on conseille de hasher les mots de passe pour les stoker en bdd. Donc on stocke les hash du mot de passe (pas les mots de passe eux-mêmes) et ensuite on compare les hash


    Concernant les techniques de hash le minimum recommandé aujourd'hui est le SHA256.

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur / Enseignant
    Inscrit en
    Février 2012
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur / Enseignant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 115
    Points : 139
    Points
    139
    Par défaut
    Merci beaucoup pour ta réponse rapide et complète.

    Je vais regarder du côté hachage des mots de passe dans la bdd, c'est en fait ce que je cherchais, parce ce que pour ce qui est de la transmission je vais vérifier mais ça reste sur un réseau interne sécurisé...

    Je fais les modifications et je reviendrai sûrement à la charge pour la suite

Discussions similaires

  1. Cherche logiciel modélisation PHP/XHTML/MySQL
    Par bigsister dans le forum Outils
    Réponses: 1
    Dernier message: 02/09/2009, 12h34
  2. Vente logiciel en PHP et MySql
    Par thehache dans le forum Outils
    Réponses: 2
    Dernier message: 10/07/2006, 09h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo