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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Correction - Page de connexion


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de v4lUs
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2019
    Messages : 22
    Par défaut Correction - Page de connexion
    Salut, je voudrais savoir mon travail est correct, notamment en terme de sécurité

    Mit à jour le 12/06/2019 à 10:10

    L'index :
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    <?php
     
    //SESSION
    session_start();
    if (isset($_SESSION['name'])) {
    	header('Location: ok.php');
    	exit();
    }
     
    ?>
     
    <!DOCTYPEhtml>
     
    <html>
     
    	<head>
    		<meta charset="utf-8" />
    		<link rel="stylesheet" href="index.css" />
    		<title>fict.io - Connexion</title>
    	</head>
     
    	<body>
     
    		<h1>CONNEXION</h1>
     
    		<form id="connect_form" method="post" action="wrks/connect.php">
     
    			<div>
    				<label for="login">Utilisateur</label>
    				<input type="text" name="login" autofocus required />
    			</div>
     
    			<div>
    				<label for="password">Mot de passe</label>
    				<input type="password" name="password" pattern="(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$" required />
    			</div>
     
    			<input type="submit" value="Connexion" />
     
    		</form>
     
    		<h1>INSCRIPTION</h1>
     
    		<form id="subscribe_form" method="post" action="wrks/subscribe.php">
     
    			<div>
    				<label for="login">Utilisateur</label>
    				<input type="text" name="login" required />
    			</div>
     
    			<div>
    				<label for="password">Mot de passe</label>
    				<input type="password" name="password" pattern="(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$" required />
    			</div>
     
    			<div>
    				<label for="confirm_password">Confirmer le mot de passe</label>
    				<input type="password" name="confirm_password" pattern="(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$" required />
    			</div>
     
    			<div>
    				<label for="not_a_robot">17 + 25 (A écrire en toutes lettres)</label>
    				<input type="text" name="not_a_robot" required />
    			</div>
     
    			<input type="submit" value="Inscription" />
     
    		</form>
     
    	</body>
     
    </html>
    La page d'inscription :
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <?php
     
    //Démarrage de la session
    session_start();
     
    //Connexion à la BDD
    $bdd = new PDO('mysql:host=localhost;
    				dbname=fict_io;
    				charset=utf8',
    				'user',
    				'',
    				array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ));
     
    //Préparation de la commande
    $prep = $bdd->prepare('INSERT INTO accounts(username,
    											password,
    											level)   VALUES(?, ?, 0)' );
     
    //Vérification de l'entrée spam
    if (!isset($_POST['not_a_robot'])) { 
     
    	//Redirection_ERROR
    	//header('Location: ../index.php');
     
    } else {
     
    	//Vérification de la clé spam
    	if (md5($_POST['not_a_robot']) !== 'be2afdf0c7b6beabf937fc1672a920c7') { 
     
    		//Redirection_ERROR
    		//header('Location: ../index.php');
     
    	} else {
     
    		//Récupération des informations
    		$login = $_POST['login'];
    		$password = $_POST['password'];
    		$confirm = $_POST['confirm_password'];
    		$hashed_pass = password_hash($password, PASSWORD_ARGON2ID);
     
    		//Préparation des paramètres
    		$prep->bindParam(1, $login);
    		$prep->bindParam(2, $hashed_pass);
     
    		//Vérification du mot de passe
    		if ($password !== $confirm) {
     
    			//Redirection_ERROR
    			//header('Location: ../index.php');
     
    		} else {
     
    			//Vérification de la disponibilité du pseudonyme
    			$user_fetch = $bdd->query('SELECT * FROM accounts');
    			while ($user = $user_fetch->fetch()) {
    				if ($login === $user['username']) {
     
    					//Redirection_ERROR
    					header('Location: ../index.php');
    				}
    			}
     
    			//Ecriture de l'entrée BDD
    			$prep->execute();
     
    			//Redirection_OK
    			//header ('Location: ../index.php');
    		}
    	}
    }
    La page de connexion :
    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
    48
    49
    50
    51
    52
    53
    54
    <?php
     
    //debug
    $error_token = array();
     
    //Connexion à la BDD
    $bdd = new PDO('mysql:host=localhost;
    				dbname=fict_io;
    				charset=utf8',
    				'user',
    				'',
    				array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ));
     
    //Récupération des informations
    $login = $_POST['login'];
    $password = $_POST['password'];
     
    //Récupération des noms des comptes
    $users = $bdd->query('SELECT username FROM accounts');
    $usernames = array ();
    while ($user = $users->fetch()) {
    	array_push($usernames, $user['username']);
    }
     
    //Vérification de l'éxistance du comptes
    if (!in_array($login, $usernames)) {
     
    	//Redirection_ERROR - WRONG_NAME
    	//header('Location: ../index.php');
     
    } else {
     
    	//Vérification du mot de passe
    	$pass = $bdd->query("SELECT password FROM accounts WHERE username='{$login}'");
    	while ($pw = $pass->fetch()) {
    		if (!password_verify($password, $pw['password']))
    		{
     
    			//Redirection_ERROR - WRONG_PASS
    			header('Location: ../index.php');
     
    		} else {
     
    			//Récupération des informations de la session
    			session_start();
    			$_SESSION['name'] = $login;
     
    			//Redirection_OK
    			header('Location: ../index.php');
     
    		}
    	}
     
    }
    La page sécurisée :
    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
    <?php
     
    session_start();
    session_destroy();
     
    ?>
     
    <html>
     
    	<head>
    		<meta charset="utf-8" />
    	</head>
     
    	<body>
    		<p>OK</p>
    		<a href="index.php">RETOUR</a>
    	</body>
     
    </html>
    Voilà le pavé
    Pour ceux qui voudraient les fichiers :
    fict_io.rar

    Voilà, un grand merci d'avance
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Page de connexion en GWT
    Par Stouille89 dans le forum GWT et Vaadin
    Réponses: 9
    Dernier message: 22/07/2009, 20h58
  2. [phpMyAdmin] Changer le titre de la page de connexion
    Par stanley dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 16/10/2007, 14h54
  3. Retour à la même page après connexion
    Par bruburque dans le forum Langage
    Réponses: 6
    Dernier message: 30/06/2007, 16h38
  4. administrateur page de connexion
    Par kitty2006 dans le forum Langage
    Réponses: 6
    Dernier message: 26/09/2006, 22h03
  5. Comment retourner à sa page apres connexion?
    Par feti2004 dans le forum Langage
    Réponses: 5
    Dernier message: 03/04/2006, 09h46

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