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 :

Authentification, formulaire [POO]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut Authentification, formulaire [POO]
    Bonjour a toutes et a tous !

    Alors je me lance dans la POO et j'essaie de faire une partie authentification avec cette fameuse coquinette de POO !
    J'ai donc un formulaire contenu dans log_tech.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
    <?php 
    //Condition if, si le boutons d'un nom des tech est activé alors le post deviens une session
    if (isset ($_POST['nom_acc'])) {
    	$_SESSION['technicien'] = $_POST['nom_acc'];
    }
     
    echo "<pre>";
    print_r($_GET);
    echo "</pre>";
    echo "<pre>";
    print_r($_SESSION);
    echo "</pre>";
     
    //On affiche la valeur de la session 
    echo '<em><center>' ; echo $_SESSION ['technicien'] ; echo '</center></em>';
    ?>
    </h2>
     
    <form method="post" action="erreur.php"/> 
    <input type="password" class="form-control" placeholder="Password" name="pass" value="<?php if (isset($_POST['pass']))echo htmlentities(trim($_POST['pass'])) ; ?>"><br />
     
    <br />
    <input type="submit" name="connexion" class="btn btn-primary btn-lg btn-block" value="Connexion">
    </form>
    La SESSION technicien viens de la page qui précède celle ci ou le user sélectionne son nom et celui ci apparait avec le champ du MDP en dessous.

    Ensuite, j'ai une page appelée erreur.class.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
    <?php
    require_once "connexionBDD.class.php";
    require_once "technicien.class.php";
     
     
    class Erreur {
     
    	public function getNomPass ()
    	{	
    		$connexion = new ConnexionBDD() ;
    		$resultats=$connexion->query('SELECT count(*) as nb FROM `technicien` WHERE `Nom` = "'.$_SESSION['technicien'].'" AND `pass_md5` = PASSWORD( "toto" )'); // on va chercher tous les tech de la table 
     
    		$ligne = $resultats->setFetchMode(PDO::FETCH_OBJ); //On retourne les resultats sous forme d'objets
     
    		$resultats->closeCursor(); // on ferme le curseur des résultats
    	}
    }
     
    ?>
    Et enfin, la page de traitement, erreur.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
    <?php
     
    // on teste si le visiteur a soumis le formulaire de connexion
     
    if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {	
     
    	if(!empty($_POST['pass']) && !empty($_SESSION['technicien'])) {
     
    		if (isset ($_POST['pass'])) {
    			$_SESSION['pass']=$_POST['pass'] ; 
    			$pass=$_SESSION['pass'];		
    		}
     
    		$nomPassReq = new Erreur() ;
    		$resultPass = $nomPassReq->getNomPass() ;
     
    		// si on obtient une réponse, alors l'utilisateur est un membre
    		if ($resultPass['nb']=1) {
    			$_SESSION['log_tech'] = 1 ;
    			header('Location: LCEsa.php');
     
    		}
    		// si on ne trouve aucune réponse, le visiteur s'est trompé dans son mot de passe
    		else {
    			//Envoi du get erreur dans l'url et redirection pour l'afficher et revenir au log
    			$_SESSION['log_tech'] = 0;
    			$erreur=" Le mot de passe est faux";
    			header('Location: log_tech.php?erreur=' . urlencode($erreur) );
     
    		}
    	}
    	else {
    		//Envoi du get erreur 2 dans l'url et redirection pour l'afficher et revenir au log
    		$erreur2=" L'un des champs est vide";
    		header('Location: log_tech.php?erreur2=' . urlencode($erreur2) );
    	}
    }
    ?>
    Le problème est que quoi que j'entre comme MDP il accede a la page lcesa.php ..
    Je ne comprend pas d'où vient le problème ? Requête ? Variables ? Objet ? Tout sa en même temps ?

    Donc je viens a vous dans l'espoir d'avoir un peu d'aide les loulous des bisous !

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if ($resultPass['nb']=1) {
    	$_SESSION['log_tech'] = 1 ;
    	header('Location: LCEsa.php');
    }

    Tout est la dedans...
    Comment fait-on une comparaison en php?


    Enfin après lecture rapide de ton code y'a pas que ça comme problème... (apprends a te relire... car quand je vois un commentaire on retourne le résultat il doit y avoir un return sinon pas de retour c'est juste une affectation)

    Je plains la personne qui va devoir reprendre ton code ou toi même si tu dois les ré-ouvrir dans quelques temps...
    Marcuscircus : La seule différence entre un rêve et sa réalisation, c'est l'envie

  3. #3
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Bonjour ça depend c'est == ou === ou encore <> pourquoi ?

    ----------

    Je viens de remplacer le = par == et bah la c'est pas que sa marche tout le temps c'est que sa marche plus du tout lol

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    Ba maintenant compares tes propos a la partie de TON code que j'ai copié.
    Marcuscircus : La seule différence entre un rêve et sa réalisation, c'est l'envie

  5. #5
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Bah il dis toujours le message d'erreur comme quoi le MDP est faux :s

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    Citation Envoyé par gwendoline-bricout Voir le message
    Le problème est que quoi que j'entre comme MDP il accede a la page lcesa.php ..

    Il accede a la page lcesa.php ou pas?

    En tout cas avec le code que tu as copie => oui c'est sur.
    Marcuscircus : La seule différence entre un rêve et sa réalisation, c'est l'envie

  7. #7
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Quand je met cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // si on obtient une réponse, alors l'utilisateur est un membre
    if ($resultPass['nb']=1) {
    $_SESSION['log_tech'] = 1 ;
    header('Location: LCEsa.php');
    }
    OUI

    Et quand je met cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // si on obtient une réponse, alors l'utilisateur est un membre
    if ($resultPass['nb']==1) {
    $_SESSION['log_tech'] = 1 ;
    header('Location: LCEsa.php');	
    }
    NON

  8. #8
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    Ba c'est normal => voir mon premier post. (une fonction sans return ne renvoie RIEN)

    De plus :
    - Pourquoi un script de connexion s'appelle erreur.php?
    - Pourquoi une méthode de recuperation d'un nombre de techniciens se trouve dans erreur.class.php?


    Sans vouloir te vexer en faisant le code que tu fais, soit tu te tires toute seule une balle dans le pied, soit tu veux la mort du dev qui reprendra ton code...
    Marcuscircus : La seule différence entre un rêve et sa réalisation, c'est l'envie

  9. #9
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Surement les deux :p !

    Je l'ai appelé comme ça car c'est la où sont présent les messages d'erreur ^^ et la classe je l'ai appelé comme ça parce que c'est la classe qui va avec la page erreur.php ^^
    Donc si je met ceci :
    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
    <?php
    require_once "connexionBDD.class.php";
    require_once "technicien.class.php";
     
     
    class Erreur {
     
    	public function getNomPass ()
    	{	
    		$connexion = new ConnexionBDD() ;
    		$resultats=$connexion->query('SELECT count(*) as nb FROM `technicien` WHERE `Nom` = "'.$_SESSION['technicien'].'" AND `pass_md5` = PASSWORD( "toto" )'); // on va chercher tous les tech de la table 
     
    		$ligne = $resultats->setFetchMode(PDO::FETCH_OBJ); //On retourne les resultats sous forme d'objets
     
    		return $resultat ;
     
    		$resultats->closeCursor(); // on ferme le curseur des résultats
    	}
    }
     
    ?>
    Mieux ?

    J'ai modifié les noms des fichiers par traitement_log_tech.php et traitement_log_tech.class.php m'sieur marcus :p

  10. #10
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    Réflechis,

    Est ce que cette méthode te parait correct?
    Pour information : Si tu fais un return php n’exécute pas le code situé dans la suite de la méthode.
    Marcuscircus : La seule différence entre un rêve et sa réalisation, c'est l'envie

  11. #11
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public function getNomPass (){
    	$connexion = new ConnexionBDD() ;
    	$resultats=$connexion->query('SELECT count(*) as nb FROM `technicien` WHERE `Nom` = "'.$_SESSION['technicien'].'" AND `pass_md5` = PASSWORD( "'.$_SESSION['pass'].'" )'); // on va chercher tous les tech de la table 
    	$ligne = $resultats->setFetchMode(PDO::FETCH_OBJ); //On retourne les resultats sous forme d'objets
    	$resultats->closeCursor(); // on ferme le curseur des résultats
    	return $resultat ;
    }
    }
    OUi ça me semble correcte car, on retourne le résultat de la requête non ?

  12. #12
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    T'es sure que $resultat contient le résultat de la requête? Moi non.

    Le nom du script pourquoi pas, mais la classe n'a rien a faire la, la méthode se rapporte au technicien et donc dois être dans la classe technicien.
    Marcuscircus : La seule différence entre un rêve et sa réalisation, c'est l'envie

  13. #13
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    HUmm C'est $ligne alors qui contient le résultat ?

    QUOI ?

  14. #14
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    La c'est une question de base du développement. Si tu n'arrives pas a retenir ca, alors reprends des tutos sur les bases de php. (mais oui)

    La méthode getNomPass() est une méthode lié au technicien et donc elle devrait être dans technicien...
    Marcuscircus : La seule différence entre un rêve et sa réalisation, c'est l'envie

  15. #15
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Je me concentre pas assez ou du moins pas comme il faut malheureusement ... Je suis désolé ...
    J'ai déplacé la focntion dans technicien.class.php
    Par contre ma requete ne fonctionne toujours pas ... dans traitement_log_tech.php est ce que c'est bien cette variables qu'il faut comparer ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // si on obtient une réponse, alors l'utilisateur est un membre
    if ($ligne['nb']==1) {
    	$_SESSION['log_tech'] = 1 ;
    	header('Location: LCEsa.php');
    }

  16. #16
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    C'est toi qui est censé le savoir ca...
    fais un var_dump de ta variable.
    Mais si tu as fais ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $resultPass = $nomPassReq->getNomPass() ;
     
    		// si on obtient une réponse, alors l'utilisateur est un membre
    		if ($ligne['nb']==1) {
    Ca risque pas de marcher. le retour de getNomPass tu l'as stocke dans quelle variable?
    Marcuscircus : La seule différence entre un rêve et sa réalisation, c'est l'envie

  17. #17
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Tu vas me taper mais il est pas récupéré dans $resultPass ?

  18. #18
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    Je vais pas te taper t'es trop loin. mais si tu viens a coté de moi tu prends une petite claque derrière la tete oui. lol

    Mais oui c'est ca. Base de php miss Gwen...
    http://php.net/manual/fr/language.variables.scope.php
    Marcuscircus : La seule différence entre un rêve et sa réalisation, c'est l'envie

  19. #19
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Mais tu me met le doute avec tes questions genre j'te pose la question, même si tu le sais déjà, mais j'te la pose, genre comme si tu te trompes en fait :p
    Si c'est qu'une claque pas grave je mérite quand même un coup de pied aux fesses hin

    Bon bah du coup c'est avec $resultpass que je fais ma condition ? Parce que ca ne fonctionne pas non plus avec elle xD

  20. #20
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    Montres la dernière version de ton code...


    J'oserais pas te le mettre mais oui tu le mérites.
    Marcuscircus : La seule différence entre un rêve et sa réalisation, c'est l'envie

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/04/2009, 13h19
  2. Struts2 authentification formulaire
    Par rikunter dans le forum Struts 2
    Réponses: 2
    Dernier message: 29/01/2009, 15h06
  3. Réponses: 1
    Dernier message: 04/12/2007, 19h49
  4. Authentification Formulaire Php
    Par TheLezard dans le forum Web
    Réponses: 3
    Dernier message: 07/10/2007, 21h42

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