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

Langage PHP Discussion :

[Sécurité] Authentification en php [Débutant(e)]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 46
    Par défaut [Sécurité] Authentification en php
    Bonjour, je souhaiterais faire un module d'identification simple avec login et mots de passe, tout en gardant l'id de l'users dans la session pour reutiliser plus tard.

    Donc j'ai commencer a faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    session_start();
    ?>
    Pour initialiser ma session.

    Aprés je fais le code pour lancer l'identification.

    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
     
    if (isset($_POST["login"]) && isset($_POST["mdp"]))
    { 
    		$mdp=$_POST["mdp"];
    		$login=$_POST["login"];
     
    			$sql = "SELECT * FROM acces_prof WHERE login_acces_prof = '$login' AND mdp_acces_prof = '$mdp'";
    			$result = mysql_query($sql, $connect);
    			$row = mysql_fetch_array($result);
     
    echo (" <p><a href='admin.php'>Panneau d'administration</a></p> ");
    echo (" <p><a href='index.php?delog'>Deconnecter</a></p>");		
    }
     
    else
    {
    ?>
              	<form action="index.php?action=login" id="identprof" method="post">
                <label for="login">Login : </label>
                <br />
                <input type="text" id="login" name="login" value=""  size="15"/>
                <br />
                <label for="mdp">Mots de passe : </label>
                <br />
                <input type="password" id="mdp" name="mdp" value="" size="15"/>
                <div class="clr" style="padding:6px; _padding:0px;"></div>
                <input type="submit" value="S'identifier" class="identifier" style="width:90px;"/>
              	</form>
    <?php
    }
    ?>
    Mais j'ai aucune verif de faites :
    Comment il faut faire pour que si le login et mdp est pas correcte affiche un message d'erreur et remettre le formulaire.
    Et aussi j'ai des erreurs mysql quand le login ou le mots de passe est pas bon.

    Et s'il est bien loguer, il va sur la page mapage.php.

  2. #2
    Membre émérite Avatar de sharrascript
    Homme Profil pro
    Développeur Web indépendant
    Inscrit en
    Avril 2007
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web indépendant

    Informations forums :
    Inscription : Avril 2007
    Messages : 678
    Par défaut
    Bonsoir,

    Dans un premier temps essaie plutôt cette synthaxe:

    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
    if (isset($_POST["login"]) && isset($_POST["mdp"]))
    { 
    		$mdp=$_POST["mdp"];
    		$login=$_POST["login"];
     
    			$sql = "SELECT * FROM acces_prof WHERE login_acces_prof = '$login'";
    $result = mysql_query($sql, $connect);
    $row = mysql_fetch_assoc($result);
    if ($row[mdp_acces_prof]==  $mdp)
        {
         //Si le MDP est BON
         [...]
         }
    else
         {
          //SINON
          [...]
          }		
    }
    Bon, j'ai fais cours, suis fatigué^^, mais l'idée est mise...
    Tiens nous au courant ++

  3. #3
    Membre émérite
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Par défaut
    ....oui..Je reprend la suite ..Dans la boucle des IF, tu fais :

    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
     
    if ($row[mdp_acces_prof]==  $mdp)
        {
         //Il vaut mieux initialiser si jamais ca existe déjà : on fait table rase
         unset($_SESSION['login']);
        unset($_SESSION['id']);
     
        //Cette variable servira dans tes autres pages à tester si l'utilisateur est bien logué....
        $_SESSION['login']='yes';
        //Et celle-ci te sert à garder l'id de l'utilisateur
       $_SESSION['id']=$row['id'];
        header("Location :mapage.php");
         }
    else
         {
          echo "Erreur de login";
          }		
    }
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 46
    Par défaut
    Merci d'avoir répondu,
    donc j'ai fais çà : avant de me coucher hier

    la fonction login() me permet de recevoir une fenetre de type alert() mais en ajax avec un message.

    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
    <?php
    if (isset($_POST["login"]) && isset($_POST["mdp"]))
    { 
    		$mdp=$_POST["mdp"]; $login=$_POST["login"]; $nb=0;
     
    		if ( $mdp == "" and $login == "" ) { echo ("<script type='text/javascript'>login();</script>");}
     
    			$sql = "SELECT * FROM acces_prof WHERE login_acces_prof = '$login' AND mdp_acces_prof = '$mdp'";
    			$result = mysql_query($sql, $connect);
    			$row = mysql_fetch_array($result);
     
    			$nb = count($row['id_acces_prof']);
    			if ( $nb == 0 ) { echo ("<script type='text/javascript'>login();</script>"); } else { $_SESSION['id_pro'] = $row['id_acces_prof'];}
    }
     
    if (isset($_SESSION['id_pro']))
    {
    echo (" <p><a href='admin.php'>Panneau d'administration</a></p> ");
    echo (" <p><a href='index.php?delog'>Deconnecter</a></p>");
    }
    else
    {
    ?>
              	<form action="index.php" id="identprof" method="post">
                <label for="login">Login : </label>
                <br />
                <input type="text" id="login" name="login" value=""  size="15"/>
                <br />
                <label for="mdp">Mots de passe : </label>
                <br />
                <input type="password" id="mdp" name="mdp" value="" size="15"/>
                <div class="clr" style="padding:6px; _padding:0px;"></div>
                <input type="submit" value="S'identifier" class="identifier" style="width:90px;"/>
              	</form>
    <?php
    }
    ?>
    J'ai testé, sans remplir les champs me mets message d'alert donc ok,
    et donnant de faux identifiant et mots de passe message d'alert donc ok,
    et quand je mets le bons login & mdp il affiche mon echo donc ok,

    mais quand je mets header(location:mapage.php);
    me mets message ne peut modifier header.... ? :
    Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\unitedprod\index.php:13) in c:\program files\easyphp1-8\www\unitedprod\index.php

    a ma ligne il a mes css.

    C'est du a quoi ?

  5. #5
    Membre émérite Avatar de sharrascript
    Homme Profil pro
    Développeur Web indépendant
    Inscrit en
    Avril 2007
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web indépendant

    Informations forums :
    Inscription : Avril 2007
    Messages : 678
    Par défaut
    rebonjour ,

    Indication:

    ATTENTION, le header() doit être utiliser sans que RIEN ne soit interprété en HTML avant!! Donc si tu as un echo ou si tu as affiché du HTML avant, ton header ne fonctionnera point.

    C'est très important!

    Donc, soit tu fais ton traitement sur une autre page que celle qui contient le form ou alors affiche les conditions if avant tout le HTML.

    Bon, normalement ça marche comme ça, mais encore une fois, j'peux me tromper

    ++

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 46
    Par défaut
    ok , je regarde çà ,

    j'ai un champ type="text" id="sms" name="sms" et je voudrais limiter qu'aux chiffres et à la touche suppr et backspace

    il faut pas donner le droit a l'utilisateur de taper que des chiffres.

    Et aussi quand je fais l'insert dans la bdd, le numero de télephone est inserer sans le 0.

    exemple taper 0677121314 - envoye - bdd : 677121314 ? as quoi es-ce dû ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/02/2008, 15h46
  2. Réponses: 7
    Dernier message: 29/11/2006, 22h38
  3. Réponses: 3
    Dernier message: 17/08/2006, 12h13

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