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 :

Comment configurer ma table login ?


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Par défaut Comment configurer ma table login ?
    Bonjour,
    j'e suis en train de faire une page login php et ajax et j'ai trouvé des bouts de script un peu partout pour en faire un qui me semble pas trop mal.
    Seul problème, je ne sais pas faire le code pour ma table MySql.

    Mon code php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    if(isset($_GET['email']) && isset($_GET['psw'])){
     
    $email = $_GET['email'];
    $psw = $_GET['psw'];
     
    $getUser_sql = 'SELECT * FROM USER WHERE email="'. $email . '" AND psw = "' . $psw . '"';
    $getUser = mysql_query($getUser_sql);
    $getUser_result = mysql_fetch_assoc($getUser);
    $getUser_RecordCount = mysql_num_rows($getUser);
     
    if($getUser_RecordCount < 1){ echo '0';} else { echo $getUser_result['nick'];}
    }
    Ce que j'ai fait (trouvé...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE login
    (
    L_ID INT NOT NULL AUTO_INCREMENT,
    logged DATETIME,
    email VARCHAR(10),
    psw VARCHAR(10),
    PRIMARY KEY (L_ID)
    );
    J'ai seulement besoin de 2 login/pass, il s'agit juste de protéger une page avec des photos confidentiel (pour éviter la copie de la part des concurrents).

    Si vous avez des tutoriels à me proposer je suis preneur (de préférence avec validation ajax, je trouve ça plus agréable et jolie).
    Ce que j'ai trouvé m'inquiète un peu car je ne sais pas comment protéger les dites pages.
    En fait j'ai l'impression que le login ce fera mais que ds tous les cas si je tape l'url direct de la page que je veux protéger je pourrais y avoir accès.

    Merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 236
    Par défaut
    Regarde par içi : lien

  3. #3
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Hello

    Si tu veux pas te casser la tête, protège ta page avec un .htaccess.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Par défaut
    Merci pour vos réponses.
    En revanche, je ne comprend rien...
    Je n'ai pas préciser la chose mais je maitrise parfaitement xhtml et css mais pour le reste

    Pour htacces je ne peux pas personnaliser l'interface de connection, ce qui me déplais fortement. J'y avait pensé également mais je n'ai pas trouvé de solution pour embellir la chose.

  5. #5
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Reste simple. Si tu veux protéger une page pour un ou deux utilisateurs c'est la solution idéale. Ne vas pas t'embêter avec un login PHP / Ajax juste pour ça...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Par défaut
    C'est vrai, mais quand j'ai une idée dans la tête...
    Je vais continuer de chercher un peu plus voir si je trouve un script tout fait, déjà trouvé en php seul mais du coup sans ajax.
    Sinon je retient le .htacces
    Cette solution est bien protégée je présume ?

  7. #7
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Citation Envoyé par brisso Voir le message
    C'est vrai, mais quand j'ai une idée dans la tête...
    Je vais continuer de chercher un peu plus voir si je trouve un script tout fait, déjà trouvé en php seul mais du coup sans ajax.
    Sinon je retient le .htacces
    Cette solution est bien protégée je présume ?
    Tout à fait. En plus c'est Apache qui gère, tu n'a rien à implémenter coté PHP, donc il y a à priori moins de risques de failles

    Pour faire un équivalent en PHP, voici comment tu pourrais t'y prendre:

    1 - Le modèle MySQL

    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
     
    CREATE  TABLE IF NOT EXISTS `users` (
      `id` BIGINT(25) NOT NULL AUTO_INCREMENT ,
      `name` VARCHAR(90) NOT NULL ,
      `surname` VARCHAR(90) NOT NULL ,
      `mail` VARCHAR(90) NULL ,
      `login` VARCHAR(90) NOT NULL ,
      `password` VARCHAR(90) NOT NULL ,
      PRIMARY KEY (`id`) ,
      UNIQUE INDEX `login_UNIQUE` (`login` ASC) ,
      UNIQUE INDEX `name_surname_UNIQUE` (`name` ASC, `surname` ASC) )
    ENGINE = InnoDB;
     
    /* Exemple d'insertion */
    INSERT INTO `users` VALUES (null, 'Benjamin', 'Delespierre', 'benjamin.delespierre@gmail.com', 'bdelesp', md5('rouge'));
    On stocke les mots de passe encodés en md5 afin qu'ils soient inutilisables par un tiers dans l'éventualité ou la base serait piratée (en réalité, il est possible de casser le md5 par brute force mais dans la pratique on considère cette solution comme suffisamment sécurisée).

    Avec le code ci dessus, voici ce qu'on obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    mysql> select * from users;
    +----+----------+-------------+--------------------------------+---------+----------------------------------+
    | id | name     | surname     | mail                           | login   | password                         |
    +----+----------+-------------+--------------------------------+---------+----------------------------------+
    |  1 | Benjamin | Delespierre | benjamin.delespierre@gmail.com | bdelesp | c6ea9af480ca35cb8ded3cb033937f58 |
    +----+----------+-------------+--------------------------------+---------+----------------------------------+
    1 row in set (0.02 sec)
    2 - Coté PHP

    En PHP, on va déterminer si l'utilisateur existe de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $results = mysql_query("SELECT * FROM `users` WHERE `login`='$login' AND `password`='$password'");
    Voici à quoi ça peut ressembler:
    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
    <?php
    // On va devoir manipuler des données de session
    // cette fonction doit toujours être placé au 
    // début du script PHP car elle manipule les 
    // headers envoyés au navigateur
    session_start();
     
    if (isset($_POST['login'], $_POST['password'])) {
    	// Un couple login/mdp à été passé au script
    	// on va tenter de trouver l'utilisateur
    	$connexion = mysql_connect('localhost', 'root', '');
     
    	// On va filtrer les variables passées au script
    	// pour éviter toute tentative d'injection SQL
    	$login = filter_input(INPUT_POST, 'login', FILTER_SANITIZE_MAGIC_QUOTES);
    	$password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_MAGIC_QUOTES);
     
    	// On évite les données nulles ou invalides
    	if (!$login || !$password)
    		die('Login ou mot de passe incorrectement définis');
     
    	// On encode le mot de passe en MD5 pour
    	// établir la correspondance
    	$password = md5($password);
     
    	// Remplacer `test` par le nom de ta base de données
    	// qui contiens la table users
    	if (!$results = mysql_query($q = "SELECT * FROM `test`.`users` WHERE `login`='$login' AND `password`='$password'"))
    		die('Erreur avec la requête: ' . $q);
     
    	// Si un tuple (ligne) à été trouvé
    	if (mysql_num_rows($results)) {
    		// On va remplir l'index 'user' avec les données trouvées
    		$_SESSION['user'] = mysql_fetch_assoc($results);
    	}
    	else {
    	    // si on à trouvé personne avec ce couple, on affichera un message
    		$message = "Utilisateur non trouvé";
    	}
    }
     
    ?>
    <html>
    	<head>
    		<title>Page sécurisée</title>
    	</head>
    	<body>
    		<!-- S'il y a un messages -->
    		<?php if (isset($message)): ?>
    		<p class="message"><?=$message?></p>
    		<?php endif ?>
    		<!-- Si l'utilisateur n'est pas authentifié, on le lui demande -->
    		<?php if (empty($_SESSION['user'])): ?>
    		<form method="post">
    			<label for="login">Votre login</label><input type="text" name="login" id="login" />
    			<label for="password">Votre mot de passe</label><input type="password" name="password" id="password" />
    			<input type="submit" value="Se connecter" />
    		</form>
    		<!-- Si l'utilisateur est authentifié on lui dit bonjour -->
    		<?php else: ?>
    		<p>
    			Bonjour <?=$_SESSION['user']['name']?> <?=$_SESSION['user']['surname']?>
    		</p>
    		<?php endif ?>
    	</body>
    </html>
    Je mets le PHP en pièce jointe que tu puisse le lire correctement. Je pense qu'il est suffisamment explicite et documenté.

    S'il y a des points mal compris, n'hésite pas.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [2.x] comment configurer les relations entre les tables
    Par yosspmg dans le forum Symfony
    Réponses: 6
    Dernier message: 27/04/2014, 17h57
  2. Réponses: 0
    Dernier message: 10/01/2012, 09h14
  3. [Configuration] Comment afficher une table masquée?
    Par xianxian620 dans le forum Access
    Réponses: 1
    Dernier message: 29/03/2007, 17h08
  4. comment lier deux tables?????
    Par baboune dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 16/03/2004, 14h45
  5. Comment Copier une table dans un fichier?
    Par thx2003 dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/12/2003, 12h09

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