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 :

identification d'un utilisateur


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 28
    Points : 15
    Points
    15
    Par défaut identification d'un utilisateur
    Bonjour,

    Je dois élaborer une application en PHP objet, lors du lancement :
    - Je démarre ma session -> session_start();
    - J'instancie un objet qui contiendra dans des tableaux tout les autres objets, je le place en variable de la session -> $si=new SI(); $_SESSION['SI']=$si;
    - Je charge de la base de données les informations des utilisateurs à l'aide d'une fonction que j'ai créée -> chargement_login($si);


    Ensuite l'utilisateur doit s'identifier grâce à un formulaire que j'ai récupéré d'une autre application, mais que j'ai intégré dans une page login.php -> header("location:login.php");

    Le problème se pose ici je ne sais pas comment vérifier si un objet utilisateur existe bien avec ce nom et ce mot de passe.



    Voici la page login.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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <?php
    require ("class_dll");
    $nom = $_POST["nom"];
    $pass = $_POST["pass"];
     
     
    if ($nom=="" or $pass =="") {echo"erreur";}
    else {
    	$uti=$_SESSION['SI']->login_correct($nom, $pass);
    	if($uti!==null) {
    		$_SESSION['UTILISATEUR']=$uti;
    	        echo $_SESSION['UTILISATEUR']->uti_nom;}
    }
     
     
    ?>
     
    <HTML>
      <HEAD>
        <TITLE>GESTION DU COURRIER</TITLE>
        <LINK rel="stylesheet" type="text/css" href="styles.css">
      </HEAD>
      <BODY>
        <FORM name="page" method="POST" action="login.php">
        <TABLE border=0 cellspacing=0 cellpadding=0 width=100% height=100%>
    		<TR>
    			<TD height=150 align=center><IMG src="images/logo.bmp" border=0></TD>
    		</TR>
    		<TR>
    			<TD align=center style="background:url(images/logo_courrier.jpg)" height=80>&nbsp;</TD>
    		</TR>
    		<TR valign=top>
    			<TD align=center>
    				<TABLE style="margin:20px">
    					<TR height=35>
    						<TD width=120 align=right><B>Utilisateur :</B></TD>
    						<TD width=120 align=left><INPUT class="box" type=text name="nom"></TD>
    					</TR>
    					<TR height=35>
    						<TD width=120 align=right><B>Mot de passe :</B></TD>
    						<TD width=120 align=left><INPUT class="box" type=password name="pass"></TD>
    					</TR>
    					<TR height=80>
    						<TD colspan=2 align=center><input type="submit" value="valider"></TD>
    					</TR>
    				</TABLE>
    			</TD>
    		</TR>
    <TR>
    			<TD align=center height=60>
    				<TABLE class="version" align=center width=85%>
    					<TR valign=top>
    						<TD width=50% align=right>Version d'évaluation</TD>
    					</TR>
    				</TABLE>
    			</TD>
    		</TR>
    		    </TABLE>
        </FORM>
      </BODY>
     
    </HTML>


    voici la fonction login_correct qui se trouve dans la classe de l'objet si, et qui concerne le tableau des objets utilisateurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function login_correct($nom,$pass){
    		foreach($this->utilisateur as $uti){
    			if ($uti->uti_nom==$nom){
    				if ($uti->uti_pass==$pass)
    				{return $uti;}
    			}
    		}
    		return null;
    	}

    Merci pour toute aide.

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Tu as déjà un léger souci ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if ($nom=="" or $pass =="") {echo"erreur";}
    else {echo $nom;}
    else {

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    oups ! le "else {echo $nom;}" était un test que j'ai mis en commentaire je vais l'enlever dans mon post !

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Il y a un truc qui m'intrique dans ton procédé, c'est la session SESSION['SI'].
    C'est normal que tous les utilisateurs soient stockés dans la session avec leur login/pass ? (sous entendu : et non pas dans une Bdd, genre table "users").
    La où je veux en venir, c'est que normalement une session est unique, et théoriquement appartient à 1 utilisateur, et uniquement, il n'est donc pas utile (théoriquement) de tous les mettre dans une session, une simple requête suffit pour une vérification et récupérer les donnés de l'utilisateur.

    Après, faudrait au moins confirmer si tu entre ou pas dans la condition : if ($nom=="" or $pass =="")
    Ceci dit, tu fais une comparaison sur une éventuelle chaine vide, mais c'est pas très restrictif, j'aurais plutôt utiliser empty(), qui est plus large (null, vide, 0, ...)
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (!empty($nom) && !empty($pass)) {
    	// Ok ... il y a un login ET un mot de passe
    }
    Après, concernant la fonction login_correct, tu boucle avec un foreach sur $this->utilisateur, et ensuite tu fais une comparaison avec $uti->uti_nom.
    Est tu sur que c'est un attribut 'uti_nom' ? Peut être est un tableau ?
    Tu pourrais faire un print_r($uti) ou un var_dump($uti).
    Faire aussi un echo sur $nom et $pass, sait on jamais.
    Faut voir (à l'oeil) ce qui ce passe dans ces comparaisons.

    Tu peux aussi éviter 2 if dans le login_correct(), et faire qu'un seul :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    			if ($uti->uti_nom==$nom && $uti->uti_pass==$pass) {
    				return $uti;
    			}
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    C'est à dire que la variable $si est passé en session ($_SESSION['SI']) pour permettre que tout les objets instanciés au lancement de l'application puissent passer de page en page. Dans l'application les données de tout les utilisateurs sont requises pour des affichages.
    Mais il est vrai que je pourrais tous les instancier apès le login, est donc passer par une requête pour tester le login et le mot de passe.

    Ensuite j'ai une classe Utilisateur qui a comme attribut uti_id, uti_nom, uti_pass...
    Lors de la création d'un nouvel utilisateur, l'objet est ajouté au tableau utilisateur de l'objet si.


    Je sais pas si cela peut aider à mieux comprendre mon code

  6. #6
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    Je viens de tester ma fonction login_correct() directement dans mon index.php avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     $uti=$si->login_correct("albert","alb");
    	echo $uti->uti_nom;

    Elle m'a bien renvoyé le nom de l'utilisateur. Donc le problème ne viens pas de la fonction de recherche de l'utilisateur.

  7. #7
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Si tu parviens à faire la vérification et obtenir les infos de cette utilisateur, c'est quoi le problème alors ?
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

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

Discussions similaires

  1. identification d'un utilisateur
    Par bouzayani2010 dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 24/03/2010, 10h04
  2. [AJAX] identification d'un utilisateur
    Par bouzayani2010 dans le forum AJAX
    Réponses: 1
    Dernier message: 24/03/2010, 02h32
  3. fonction d'identification d'un utilisateur
    Par new_wave dans le forum Sécurité
    Réponses: 3
    Dernier message: 17/04/2008, 09h32
  4. Réponses: 5
    Dernier message: 14/03/2007, 00h09
  5. Identification de l'utilisateur courant
    Par BSide dans le forum Access
    Réponses: 1
    Dernier message: 06/07/2006, 12h28

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