Page 1 sur 2 1 2 DernièreDernière
Affichage des résultats 1 à 15 sur 29

Discussion: Authentification simplifiée

  1. #1
    Date d'inscription
    January 2004
    Messages
    68
    Version de vBulletin
    2
    Hébergeur
    Oxyd
    Pouvoir de réputation
    74

    Authentification simplifiée

    Bonsoir,

    suite à ce sujet : http://forum.vbulletin-fr.org/showthread.php?t=5221
    et grace encore une fois à Pitchoune et Foularou

    Il me reste plus qu'une étape avant d'en avoir finit de vous embeter avec mes questions php...

    - J'ai fait mon formulaire pour avoir les infos (pseudo / email / mot de passe) des gens qui veulent voir une page privée. Les infos sont dans la DB dans une table spéciale (photo2)
    - Les informations s'affichent sur une autre page (pour controler que tout va bien sans passer via phpmyadmin) >> page3.php

    - Maintenant, il me faut faire un formulaire d'identification afin que les gens qui sont déjà inscrits puissent s'authentifier et rentrer dans les pages privées

    J'ai donc crée la page "page4.php" qui contient un formulaire tout bête :
    <html>
    <head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>

    <body>
    <p><font size="2" face="Arial, Helvetica, sans-serif"><strong>Identifiaction obligatoire</strong>
    (si vous ne vous &ecirc;tes jamais enregistr&eacute;, <a href="page1.php">cliquez
    ici pour vous enregistrer</a>) </font></p>
    <form name="form1" method="post" action="page5.php">
    <table width="40%" border="0" align="center">
    <tr>
    <td>Pseudo</td>
    <td><input type="text" name="textfield"></td>
    </tr>
    <tr>
    <td>Mot de passe</td>
    <td><input type="text" name="textfield2"></td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td><input type="submit" name="Submit" value="Valider"></td>
    </tr>
    </table>
    </form>
    <p>&nbsp; </p>
    </body>
    </html>
    Et j'ai crée donc "page5.php" qui commence par :

    Code PHP:
    <?php
    require('_connexion.php');

    $db = @mysql_connect("$dbhost""$dbuser""$dbpass") OR DIE("Erreur : la base de données n'existe pas.");
    @
    mysql_select_db("$dbbase",$db) OR DIE("Erreur : la base de données n'est pas accessible.");

    $sql "SELECT * FROM $table";
    Mais quelle requete dois-je lancer ensuite pour que je puisse verifier que le pseudo et le mot de passe corresponde bien à ce qui est dans ma table "photo2" dans les champs : "pseudo" "mdp"

    ?

    J'ai cherché sur plusieurs site mais je ne trouve rien

    Excusez si je suis perseverant mais je trouve le php tellement impressionnant, voir que l'on peut retirer les infos d'une DB est extraordinaire pour moi qui suis un HTMLien de longue date...

    Merci d'avance pour votre aide.

  2. #2
    Date d'inscription
    September 2002
    Localisation
    France
    Âge
    39
    Messages
    11 293
    Version de vBulletin
    5.0
    Hébergeur
    Serveur dédié OVH
    Billets dans le blog
    13
    Pouvoir de réputation
    140
    Là, je ne saurais dire, j'ai jamais eu le cas à affronter.

    Si quelqu'un connait un peu le bout de code pour dire "si pseudo du form = pseudo de la bdd ET mdp du form = mdp de la bdd alors ok sinon pas ok", je suis preneur aussi
    vBulletin Quality Assurance
    Développeur en chef de Project Tools 2.1+ pour vB 4 et 2.0 pour vB 3
    Restera très discret sur toutes les futures fonctionnalités de vBulletin ainsi que de vBulletin 5 Connect jusqu'à leur sortie publique ^^

    Tout MP d'aide -> Supprimé

  3. #3
    Date d'inscription
    January 2004
    Messages
    68
    Version de vBulletin
    2
    Hébergeur
    Oxyd
    Pouvoir de réputation
    74
    sur excel je le fait en deux secondes... mais en php... c'est la colle.

    Merci quand meme pour toute ton aide Pitchoune

    PS : j'ai essayé de copier le code de vB qui lui aussi, utilise un script pour s'identifier, mais c'est trop compliqué avec les templates et tout le bazard...

  4. #4
    Date d'inscription
    September 2002
    Localisation
    France
    Âge
    39
    Messages
    11 293
    Version de vBulletin
    5.0
    Hébergeur
    Serveur dédié OVH
    Billets dans le blog
    13
    Pouvoir de réputation
    140
    Oui, surtout qu'ils se servent du codage des mots de passes en MD5, je sais pas du tout comment l'utiliser.
    vBulletin Quality Assurance
    Développeur en chef de Project Tools 2.1+ pour vB 4 et 2.0 pour vB 3
    Restera très discret sur toutes les futures fonctionnalités de vBulletin ainsi que de vBulletin 5 Connect jusqu'à leur sortie publique ^^

    Tout MP d'aide -> Supprimé

  5. #5
    Date d'inscription
    August 2003
    Localisation
    Paris
    Âge
    43
    Messages
    4 843
    Version de vBulletin
    3.5
    Hébergeur
    me
    Pouvoir de réputation
    100
    Tu peux déjà encoder ton mot de passe lorsque le membre s'inscrit.

    Code PHP:
    $mdp md5($mdp); 
    Ensuite pour controler, tu recherches déjà l'utilisateur dans la base et ensuite si tu le trouves tu controles le mot de passe :

    Code PHP:
    $sql "SELECT * from $table where pseudo= '" addslashes(htmlspecialchars_uni($textfield1)) . "'";

    //on recherche l'utilisateur
    if ($req=mysql_query_first($sql)) {
      
    //utilisateur trouvé on vérifie le mot de passe
      
    if ($req[mdp]==md5($textfield2)) {
        
    //mettre ici l'action qui dirige vers la bonne page etc...
      
    } else {
        echo 
    "mot de passe incorrect";
      }
    } else {
      echo 
    "Utilisateur inconnu";

    Dernière modification par Akex ; 20/02/2004 à 04h37.

  6. #6
    Date d'inscription
    January 2004
    Messages
    68
    Version de vBulletin
    2
    Hébergeur
    Oxyd
    Pouvoir de réputation
    74
    Citation Envoyé par Akex
    Tu peux déjà encoder ton mot de passe lorsque le membre s'inscrit.

    Code PHP:
    $mdp md5($mdp); 
    ahh... alors il faut que je retouche page2.php

    Je ne sait pas ou mettre la requete, peut tu me dire svp ou dans ce fichier (fait par Pitchoune...encore merci) ?
    Code PHP:
    <?php
    if(empty($pseudo) || empty($mdp) || empty($mdp2) || empty($email)) // Si un des champs est vide
    {
    ?>
        <script language="Javascript">
        alert('Un des champs est vide, Veuillez revenir au formulaire d\'enregistrement.');
        history.back();
        </script>
    <?
    }
    else if($mdp!=$mdp2) // Si les 2 mots de passes entrés ne correspondent pas
    {
    ?>
        <script language="Javascript">
        alert('Les mots de passes entrés ne correspondent pas. Veuillez revenir en arrière et vérifiez votre mot de passe.');
        history.back();
        </script>
    <?
    }
    else
    {
        require("_connexion.php"); // Inclus les paramètres de ce fichier externe

        $db = @mysql_connect("$dbhost", "$dbuser", "$dbpass") OR DIE("Erreur : la base de données n'existe pas."); // Connexion à la base de données
        @mysql_select_db("$dbbase",$db) OR DIE("Erreur : la base de données n'est pas accessible."); // Choix de la base de données

        if (verif_email($email)) // Si l'email entré correspond bien a une email
        {
            $rqt = mysql_query("INSERT INTO $table VALUES ('','" . addslashes($pseudo) . "','" . addslashes($mdp) . "','" . addslashes($email) . "')");
        }

        if(!$rqt) // Si requête echoue
        {
    ?>
        <script language="Javascript">
        alert('La requête a échoué, veuiller recommencer ou contactez l\'administrateur.');
        history.back();
        </script>
    <?php
        
    }
        else 
    // Sinon, tout est ok :)
        
    {
    ?>
        <script language="Javascript">
        alert('L'enregistrement s\'est réalisé avec succès !');
        window.location='page1.php';
        </script>
    <?php
        
    }
    }
    ?>
    Sinon si je comprends bien ton deuxieme fichier, ca m'a l'air simple sauf que je ne sait pas comment rediriger vers la page privée... Normalement c'est la page2.php mais dans celles-ci il y a deja le script php de l'enregistrement des personnes.
    en clair, quelle est la commande pour : Si...ok...alors...aller sur telle page.
    J'ai trouvé un autre script php qui ressemble au tiens akex (car j'essayais de trouver comment faire pour rediriger...)
    Le voici
    Code PHP:
    <? 
    <?php
    require('_connexion.php');

    $db = @mysql_connect("$dbhost""$dbuser""$dbpass") OR DIE("Erreur : la base de données n'existe pas.");
    @
    mysql_select_db("$dbbase",$db) OR DIE("Erreur : la base de données n'est pas accessible.");

    $sql="SELECT id,nom FROM membres where login='$login' AND pass='$password'"
    $base = new class_db($sql); 
    //Si il existe au moins un enregistrement on redirige sur la page demandée. 
    if ($base->num_rows() !=){ 
    $base->next_record(); 
    $id_membre $base->Record[id_membre]; 
    //A ce stade vous devez avoir mis dans la variable 
     //id_membre la valeur de l'identifiant de l'utilisateur dans la base. 
    session_start(); 
    session_register(id_membre); 
    if (!isset(
    $retour)){ 
    $retour "http://www.phpteam.net/index.php"
    //on définit une valeur de retour au cas ou. 

    echo 
    "<script language='JavaScript'> 
    document.location.replace('"
    .$retour."'); 
    </script>"

    }else { 
    //Sinon on redirige sur la page d'enregistrement 
    echo "<script language='JavaScript'> 
    document.location.replace('./formulaire.php ?retour=
    $retour'); 
    </script>"



    ?>
    Voila, en fait je croit qu'il redirige si ok alors va sur la bonne page, sinon va t'enregistrer.
    C'est exactement comme le tiens donc à mon avis.
    J'aimerais utiliser le tiens mais svp, explique moi mieux comment completer ton script pour qu'il marche (redirection si oui ou , si non.)

    Merci beaucoup akex & pitchoune & foularou... j'ai déjà identifié les 3 pros du php sur ce forum...

  7. #7
    Date d'inscription
    September 2002
    Localisation
    France
    Âge
    39
    Messages
    11 293
    Version de vBulletin
    5.0
    Hébergeur
    Serveur dédié OVH
    Billets dans le blog
    13
    Pouvoir de réputation
    140
    Pour moi, pro, peux être pas, mais j'essaye de faire ce que je peux comprendre (demande pas à Ambre de lire tout ces discussion ici, elle n'y comprendrait rien )
    vBulletin Quality Assurance
    Développeur en chef de Project Tools 2.1+ pour vB 4 et 2.0 pour vB 3
    Restera très discret sur toutes les futures fonctionnalités de vBulletin ainsi que de vBulletin 5 Connect jusqu'à leur sortie publique ^^

    Tout MP d'aide -> Supprimé

  8. #8
    Date d'inscription
    August 2003
    Localisation
    Paris
    Âge
    43
    Messages
    4 843
    Version de vBulletin
    3.5
    Hébergeur
    me
    Pouvoir de réputation
    100
    Ce n'est pas etre pro , c'est de la base .

  9. #9
    Date d'inscription
    January 2004
    Messages
    68
    Version de vBulletin
    2
    Hébergeur
    Oxyd
    Pouvoir de réputation
    74


  10. #10
    Date d'inscription
    January 2004
    Messages
    68
    Version de vBulletin
    2
    Hébergeur
    Oxyd
    Pouvoir de réputation
    74
    Akex...I need your help !!!


    ..



    ...



    ......


    :062: contre une bouteille est-ce possible ???

  11. #11
    Date d'inscription
    October 2002
    Localisation
    Nord
    Âge
    40
    Messages
    220
    Version de vBulletin
    4.2
    Hébergeur
    evxonline
    Pouvoir de réputation
    80
    V venir te filer un coup de main

    Ton probleme n'a rien a voir avec VB ?

    C'est bien une page d'un site que tu veux faire ?
    Tu ne recup pas les infos du membre de la table user de VB ?!

    Si c'est ca, pour coder le mot de passe en MD5, c pas la peine (enfin t pas obligé) et au moins ca peut te permettre de renvoyer eventuellement aux membres leur mot de passe par mail s'ils l'ont perdu

    Sinon pr l'identification et permettre aux membres de "garder" leur session et surfer sur ton site avec leur pseudo, il faut que tu utilses les sessions en PHP qui en fait te cree, gere tes cookies ...

    Code PHP:
    setcookie("login","$username ||| $mdp",time()+ 150 24 3600 "/"); 
    pour creer un cookie du nom de login qui contient les infos que tu veux (en loccurence ici moi le login ||| mdp

    et ensuite tu verifies la presence du cookie, son contenu grace a cette variable

    Code PHP:
    $HTTP_COOKIE_VARS[login

    Edit : je vais commente run peu le setcookie(), tu dois pas y piger grand chose

    le "login" designe le nom que tu veux donner a ton cookie, tu peux l'appeler jules, tartanpion, ca ne changera rien a son contenu
    La 2e entree de la fonction est le contenu de ce cookie
    La 3e avec le time()+150*24*3600 designe la validite du cookie
    Ici, il sera valide a partir de la date actuelle + 150 * 24 * 3600 secondes soit 150 jours
    Dernière modification par grog6 ; 24/02/2004 à 01h01.

    (¯`·._.·`¯`·._.- vBulletin Hackers Never Die They Go To Hell -._.·`¯`·._.·`¯)

    Hell was full, so I came back

  12. #12
    Date d'inscription
    September 2002
    Localisation
    France
    Âge
    39
    Messages
    11 293
    Version de vBulletin
    5.0
    Hébergeur
    Serveur dédié OVH
    Billets dans le blog
    13
    Pouvoir de réputation
    140
    Je prends note pour les cookies, ça peut servir...
    vBulletin Quality Assurance
    Développeur en chef de Project Tools 2.1+ pour vB 4 et 2.0 pour vB 3
    Restera très discret sur toutes les futures fonctionnalités de vBulletin ainsi que de vBulletin 5 Connect jusqu'à leur sortie publique ^^

    Tout MP d'aide -> Supprimé

  13. #13
    Date d'inscription
    January 2004
    Messages
    68
    Version de vBulletin
    2
    Hébergeur
    Oxyd
    Pouvoir de réputation
    74

    merci

    c'est vraiment super ton explication sur les cookies, j'ai parfaitement compris.

    J'ai par contre peur que cela ne me serve pas, je t'expliques :
    Mon systeme d'autentification ne sert que pour entrer en fait dans une partie privative sur mon site (bien evidemment en dehors de vB). Grace à Pitchoune et Foularou et Alex j'ai pu faire la premiere partie qui est de s'enregistrer (nom, mot de passe, email).
    Maintenant, dans un deuxieme temps, j'aimerais pouvoir faire un petit systeme inverse, d'autentification afin d'éviter à l'utilisateur de s'enregistrer chaque jour (car ils vont voir les pages privées régulierement) dans la DB. Un système qui demande donc juste le nom et mot de passe et qui verifie si il est bien dans la DB, si oui alors il entre dans la partie privative, si non alors il est redirigé vers le formulaire d'enregistrement précedemment crée.

    Deuxieme point, les utilisateurs ne sont censés rester que quelques minutes sur cette partie privée. Il faudrait donc que lorsqu'ils ferment I.E, ils ne soient plus autentifiés. Car les gens qui vont regarder ces pages seront sur des ordinateurs publics, donc utilisés par plusieurs personnes différentes dans la journée. C'est pourquoi je pensait à mon avis qu'il n'y avait pas besoin de cookie. Je n'ai aussi pas besoin d'un systeme completement fiable donc le cryptage en md5 est superflu je pense, ainsi que l'autentification à chaque page... (une seule page d'accès aux autres doit etre bloquée à mon avis, comme une grosse porte blindée lol)

    Tu comprends maintenant mieux ?
    J'ai donc simplement besoin d'une verification à un instant T de si quelqu'un est ds la base ou non.

    Merci de ta réponse que j'attends avec impatience.


  14. #14
    Date d'inscription
    December 2003
    Localisation
    Belgique
    Messages
    293
    Version de vBulletin
    3.0
    Hébergeur
    Nexlink.net
    Pouvoir de réputation
    76
    (J'ai pas tout suivi et j'ai survolé ton sujet, mais je vais essayer de t'aider.)

    Le md5 n'est jamais superflu si je puis dire... Ce que ca change c'est que les pass n'apparaitront en clair nulle part... Si tu n'utilises pas md5, tu verras les pass en clair dans la DB et si tu passes le mot de passe en paramètre d'une page tu verras "&pass=toto"... En md5, "&pass=fgnlk41regf" et fgnlk41regf dans ta base de données... Inconvénient, impossible de redonner le pass, le seul moyen de récupérer un accès est d'en demander un nouveau...
    De plus je dirais que puisque php t'offres quelques facilités au niveau d'une sécurisation simple, prend-la!! Ne jamais dire qu'on a pas besoin de sécurité :s

    Donc voici comment procéder:
    Le code d'identification d'akex tu en fait une fonction avec un return d'un booléen.. tu tapes ca dans un fichier que tu inclus sur chaque page... En haut de chaque page tu executes cette fonction et tu testes son code de retour... Si le gars est authentifier, tu laisses aller, sinon, tu le rediriges vers ta page de login... Ensuite, soit tu utilises des cookies de sessions (qui sont détruits a la fermeture de IE) ou tu passes le mot de passe et le login dans chacun de tes liens...

    Voila, j'essayerai de m'attarder + a ton problème si nécessaire mais la, je suis oqp.
    Autant l'hiver éclate, que l'hétéroclite...

  15. #15
    Date d'inscription
    January 2004
    Messages
    68
    Version de vBulletin
    2
    Hébergeur
    Oxyd
    Pouvoir de réputation
    74
    Citation Envoyé par lanoix
    (J'ai pas tout suivi et j'ai survolé ton sujet, mais je vais essayer de t'aider.)

    Le md5 n'est jamais superflu si je puis dire... Ce que ca change c'est que les pass n'apparaitront en clair nulle part... Si tu n'utilises pas md5, tu verras les pass en clair dans la DB et si tu passes le mot de passe en paramètre d'une page tu verras "&pass=toto"... En md5, "&pass=fgnlk41regf" et fgnlk41regf dans ta base de données... Inconvénient, impossible de redonner le pass, le seul moyen de récupérer un accès est d'en demander un nouveau...
    De plus je dirais que puisque php t'offres quelques facilités au niveau d'une sécurisation simple, prend-la!! Ne jamais dire qu'on a pas besoin de sécurité :s

    Donc voici comment procéder:
    Le code d'identification d'akex tu en fait une fonction avec un return d'un booléen.. tu tapes ca dans un fichier que tu inclus sur chaque page... En haut de chaque page tu executes cette fonction et tu testes son code de retour... Si le gars est authentifier, tu laisses aller, sinon, tu le rediriges vers ta page de login... Ensuite, soit tu utilises des cookies de sessions (qui sont détruits a la fermeture de IE) ou tu passes le mot de passe et le login dans chacun de tes liens...

    Voila, j'essayerai de m'attarder + a ton problème si nécessaire mais la, je suis oqp.
    Merci beaucoup pour ta réponse,

    concernant le MD5, comment integrer cette ligne alors, dans quel fichier ?
    >> $mdp = md5($mdp);

    Sinon pour le reste, je comprends de mieux en mieux la démarche cependant quand tu me parle de return de boléan... là je suis completement paumé.

    Je remet en fichier joint mes fichiers qui composent ce systeme afin que tu voit bien comment ca marche (c'est simple en fait)
    page4.php est la page d'accueil vers la partie privée
    page1.php est la page d'enregistrement
    page2.php est la page d'inscription ds la DB puis de visualisation de ce qui est privé
    page3.php est la page qui liste tout ce qui est ds la base
    page5.php est la page qui verifie dans la DB si l'user est bien dans la base

    voilou... merci de ton aide, j'attends alors que tu ait un peu plus de temps pour m'expliquer ou modifier ces fichier un peu plus...

    merci bcp
    Fichiers attachés Fichiers attachés

Informations de la discussion

Utilisateur(s) sur cette discussion

Il y a actuellement 1 utilisateur(s) naviguant sur cette discussion. (0 utilisateur(s) et 1 invité(s))

Discussions similaires

  1. Authentification htaccess
    Par esf dans le forum Demande de modification
    Réponses: 3
    Dernier message: 31/07/2004, 22h48

Les tags pour cette discussion

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •