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

Vue hybride

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    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 chevronné
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    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...

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    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 chevronné
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Par défaut
    Ba maintenant compares tes propos a la partie de TON code que j'ai copié.

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

    Informations professionnelles :
    Activité : Étudiant

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

  6. #6
    Membre chevronné
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    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.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    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 chevronné
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    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...

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    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 chevronné
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    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.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    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 ?

Discussions similaires

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

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