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 :

Souci de redirection après identification


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Points : 15
    Points
    15
    Par défaut Souci de redirection après identification
    Bonjour,
    J'ai un souci avec un fichier d'authentification. L'utilisateur existe bien dans la base mais quand j'entre le mail et le mdp je ne suis pas redirigé vers la page demandée. Après m'être creusé la tête pas mal de temps je ne comprends pas où est le problème. Je sais que l'erreur doit être d'une simplicité sans nom, mais là je désespère

    Voici mon code :

    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 
    include_once 'Bmanager.php';
     
    if(isset($_POST['submit'])){
     
    	$pseudo = $_POST['pseudo'];
    	$password = $_POST['password'];
    	$rep=  new Connection('localhost', 'membre', 'utf8', 'root', '');
    	$answer=$rep->dbconnect();
    	$user = new Bmanager($answer);
    	$user->login($pseudo, $password);
    	header('Location:membre.php');
     
    }
    ?>
     
    <form method="post" action="">
    	<p>Votre pseudo</p>
    	<input type="text" name="pseudo" placeholder="login" /> <br>
    	<p>Votre mot de passe</p>
    	<input type="password" name="password" placeholder="password" /> <br> <br>
    	<input type="submit" name="submit" value="Se connecter">
    </form>
    <a href="register.php">Pas encore membre</a>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Que fais la méthode "login" ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Points : 15
    Points
    15
    Par défaut
    Normalement elle demande simplement à l'utilisateur de s'authentifier, avec le formulaire qui se trouve plus bas. Elle se trouve dans le fichier Bmanager tel que :
    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
    	public function login($username, $password){
    	try{
    		if(!empty($username) && !empty($password)){
    			$password = sha1($password);
    			$req = $this->db->prepare("SELECT * FROM membre WHERE email=? AND passw=?");
    			$req->execute(array($username,$password));
     
    			if ($req->rowCount()==1){
    				$_SESSION['username']=$username;
    				$_SESSION['mdp']=$password;
    				$donnees = $req->fetch(PDO::FETCH_OBJ);
    				$_SESSION['ident']=$donnees->id;
    			}
    			else{
    				echo "Utilisateur n'existe pas sur la base";
    			}
    		}else{
    			echo "Merci de saisir le login et le mot de passe ";
    		}
    		}catch(Exception $e){
    			$e->getMessage();
     
    		}
    	}

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ta redirection devrait être ici, dans le if de réussite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ($donnees = $req->fetch(PDO::FETCH_OBJ)){
    				$_SESSION['username']=$donnees->username;
    				$_SESSION['mdp']=$donnees->password;
    				$_SESSION['ident']=$donnees->id;
    				header('Location:membre.php');
    			}
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Points : 15
    Points
    15
    Par défaut
    Même si mes deux fichiers Bmanager et membre sont les suivants ? Et j'avoue ne pas voir exactement où mettre le bout de code que tu viens de me donner. En même temps à force j'ai de l'eau dans le cerveau.
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    <?php
    session_start();
    include_once 'connection.php';
     
    Class Bmanager{
     
    	private $db;
     
     
    	public function __construct($db){
    		$this->db=$db;
    	}
     
    	public function login($username, $password){
    	try{
    		if(!empty($username) && !empty($password)){
    			$password = sha1($password);
    			$req = $this->db->prepare("SELECT * FROM membre WHERE email=? AND passw=?");
    			$req->execute(array($username,$password));
     
    			if ($req->rowCount()==1){
    				$_SESSION['username']=$username;
    				$_SESSION['mdp']=$password;
    				$donnees = $req->fetch(PDO::FETCH_OBJ);
    				$_SESSION['ident']=$donnees->id;
    			}
    			else{
    				echo "Utilisateur n'existe pas sur la base";
    			}
    		}else{
    			echo "Merci de saisir le login et le mot de passe ";
    		}
    		}catch(Exception $e){
    			$e->getMessage();
     
    		}
    	}
     
    	//add user
    	public function addUser($nom, $prenom, $specialite, $email, $daten, $password, $repeatpassword) {
    		try {
    			if ($password == $repeatpassword){
     
    				// préparer la requête select 
    				$req=$this->db->prepare("select * from membre where email=?");
    				// exécuter la requête
    				$req->execute(array($email));
    				// Si le nombre de ligne retourné est différent de 0, cela signifie que l'email existe déja dans la table utilisateur
    				if($req->rowCount() !=0){
    					return false;
    					//return false;
    					}else {
    						$password = sha1($password);
    						$reponse = $this->db->prepare("INSERT INTO membre VALUES(Default,?,?,?,?,?,?)");
    						$reponse->execute(array($nom,$prenom,$specialite,$email,$daten,$password));
    						return true;
    			}
    		}
    		}catch (PDOException $e){
    			echo $e->getMessage();
    		}
    	}
     
    	public function getAll(){
    		try{
    			$alluser =  $this->db->prepare("SELECT * FROM membre");
    			$alluser->execute(); 
    			return $alluser;
     
    		}
    		catch(Exception $e){
     
    		}
    	}
     
    	public function rechercher($nom){
    		try{
    			$filtreuser = $this->db->prepare('SELECT * FROM membre WHERE email LIKE ?');
    			$filtreuser->execute(array('%'.$nom.'%'));
    			return $filtreuser;	  
    		}
    		catch(Exception $e){
    			$e->getMessage();
     
    		}
    	}
     
    	public function getUserById($id){
    		try{
    			$user =  $this->db->prepare("SELECT * FROM membre WHERE id= ? ");
    			$user->execute(array($id));
    			return $user;
    		}
    		catch(Exception $e){
    			$e->getMessage();
    		}
    	}
     
    	public function update($id, $pseudo, $mdp) {
    		try{
    			if(!empty($pseudo) && !empty($mdp)){
    				$mdp = sha1($mdp);
    				$modif = $this->db->prepare("update membre set email=? where id =?");
    				$modif->execute(array($pseudo,$id));
    				$modif = $this->db->prepare("update membre set passw=? where id =?");
    				$modif->execute(array($mdp,$id));
     
    				echo "<span>Modification enregistrée!</span>";
    			}
    		}
    		catch(Exception $e){
    			$e->getMessage();
    		}
     
    	}
    	public function delete($id){
    		try{ 
    		if($_SESSION['ident']== $id){
    			echo "Impossible de supprimer l'utilisateur connecté";
    		}else{
    				$st=$this->db->prepare("DELETE FROM membre WHERE id=?");
    				$st->execute(array($id));
    				echo "Utilisateur  suuprimé avec  Succès";
    			}
    		}catch (Exception $e){
    			$e->getMessage();
     
    		}
     
     
    	}
    }
    ?>


    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
    <?php
    session_start();
    if(isset($_SESSION['username'])){
    	echo "Bonjour ".$_SESSION['username'];
    	?>
    <br>
    <br>
    <a href="getall.php">Consulter La liste des utilisateurs</a>
    <br>
    <br>
    <a href="delete.php">Supprimer un utilisateur</a>
    <br>
    <br>
    <a href="chercher.php">Chercher un utilisateur</a>
    <br>
    <br>
    <a href="logout.php">Me déconnecter</a>
    <br>
    <?php 
    }else header('Location:login.php')
     
    ?>

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Dans le cas ou l'authentification n'est pas bonne, tu affiches des messages d'erreur.
    Tu ne peux donc pas avoir une redirection après.
    La redirection n'a lieu que si l'authentification est réussie ; de plus ça n'aurait pas de sens de faire le ping pong de redirections entre les deux fichiers.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Points : 15
    Points
    15
    Par défaut
    Si je comprends bien, le code vient dans le fichier Bmanager. Quand je le change, j'ai le message d'erreur du premier else, l'utilisateur n'existe pas. J'ai enlevé le header('Location:membre.php'); dans login, sinon, en effet je boucle. J'avoue que je fatigue, ça m'aide pas a tout comprendre, désolé.

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pour y voir plus clair fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "Utilisateur n'existe pas sur la base";
    echo $username.':'.$password;
    et contrôle que tu as bien la même chose dans la base de données.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Points : 15
    Points
    15
    Par défaut
    ça, ça fonctionne bien, j'ai la même chose dans la base que dans l'erreur.
    J'avoue que je ne comprends pas pourquoi la redirection ne se fait pas depuis le questionnaire vers membre.php et que l'erreur apparaît si j'enlève cette dernière.
    Cela veut dire que la vérification se fait pourtant, et là, je coince.
    Pourtant j'avais réussi l'autre jour et évidemment au lieu de recommencer sur un nouveau fichier j'ai continué sur le même...un noob quoi.

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux nous remontrer ta méthode login actuelle ?
    Si eventuellement tu peux nous donner un export de la table aussi ...
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Points : 15
    Points
    15
    Par défaut
    Je n'ai pas modifié mon login actuel, je n'ai peut-être pas compris ton premier post.

    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 
    include_once 'Bmanager.php';
     
    if(isset($_POST['submit'])){
     
    	$pseudo = $_POST['pseudo'];
    	$password = $_POST['password'];
    	$rep=  new Connection('localhost', 'membre', 'utf8', 'root', '');
    	$answer=$rep->dbconnect();
    	$user = new Bmanager($answer);
    	$user->login($pseudo, $password);
    	header('Location:membre.php');
     
    }
    ?>
     
    <form method="post" action="">
    	<p>Votre pseudo</p>
    	<input type="text" name="pseudo" placeholder="login" /> <br>
    	<p>Votre mot de passe</p>
    	<input type="password" name="password" placeholder="password" /> <br> <br>
    	<input type="submit" name="submit" value="Se connecter">
    </form>
    <a href="register.php">Pas encore membre</a>
    Fichiers attachés Fichiers attachés

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu n'as fais aucune modification c'est sûr que ça ne risque pas de mieux fonctionner

    Tu essaies avec quel login/password par exemple ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Points : 15
    Points
    15
    Par défaut
    J'ai fais des modifs mais aucune n'a voulu fonctionner.
    Je met deux fois le l@l

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Dans ton code la colonne s'appelle "passw" et dans ton export, c'est "passworda".
    C'est normal ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Points : 15
    Points
    15
    Par défaut
    Pffffffffffffffffff. Bien joué Sabotage. Tout fonctionne normalement, j'suis vraiment nul j'avais même pas vu cette erreur ridicule, j'ai changé le passw par passworda et voilà, ça fonctionne normalement. Finalement le code était bon jusqu'à cette erreur de frappe

  16. #16
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Bon mais illogique quand même.

    Pour ce genre d'erreurs, tu devrais activer les exceptions PDO quand tu developpes.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Points : 15
    Points
    15
    Par défaut
    Oui, je vais faire ça tu as raison. Ce sera la prochaine phase d'apprentissage.
    En attendant je te remercie énormément pour ton aide et te souhaite une bonne nuit
    Sur ce, je met le post en résolu.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/09/2012, 17h24
  2. redirection après l'identification
    Par erehcab dans le forum Zend_Acl & Zend_Auth
    Réponses: 17
    Dernier message: 25/08/2010, 21h59
  3. [Joomla!] problème de redirection apres identification sur frontend en local
    Par dadal56 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 12/01/2010, 16h17
  4. Redirection après identification
    Par ghada025 dans le forum Langage
    Réponses: 6
    Dernier message: 12/09/2008, 14h49
  5. sauvegarder url pour redirection après identification
    Par aurelientp dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 05/03/2008, 10h33

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