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

EDI, CMS, Outils, Scripts et API PHP Discussion :

redirection ->header pour certains ET redirection-> pour d'autres selon la fonction de chacun


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2018
    Messages : 39
    Par défaut redirection ->header pour certains ET redirection-> pour d'autres selon la fonction de chacun
    Alors bonjour,

    je suis actuellement en stage de développeur dans une société de transports en communs, donc pardonnez moi mon niveau.

    Alors mon but est de rediriger, par le biais d' une connexion dans un formulaire :
    • les contrôleurs [->header('Location: rechercheBisTest.php')] = que les contrôleurs auront accès à ce fichier
    • ET tout le reste vers [->header('Location: recherche.php].


    Jusqu' à présent j' ai réussi tant bien que mal à donner l' accès seulement au contrôleur mais je voudrais que n' importe quelle personne, autre que contrôleur puisse être redirigé au fichier [header('Location: recherche.php].

    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
    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
    <?php 
    session_start ();
    require ("connexion.php");
     
     
    if(isset($_POST['login'])){
    if($_POST['login'] != "" && $_POST['mdp'] !=""){
    	$login = $_POST['login']; 
    	$mdp = $_POST['mdp']; 
     
     
    	$reponse = $bdd->prepare('SELECT * FROM utilisateurs WHERE login =:login  AND mdp=:mdp AND fonction="controleur";' );	
            $reponse->bindParam(':login', $login);
            $reponse->bindParam(':mdp', $mdp);
     
            $reponse->execute();
     
    	$donnees = $reponse->fetchAll();
    	if(count($donnees) == 0){
    		echo 'le mot de passe ou le login est incorrecte';
    	}
    	else{
    		foreach($donnees as $ligne)
    		{
        // traitement sur $ligne
     
    			//echo $ligne['nom'] . ' et son prénom est  ' . $ligne['prenom'] . '<br />';
     
    				$_SESSION['nom']= $ligne['nom']; 
    				$_SESSION['prenom']= $ligne['prenom'];
    				$_SESSION['type']= $ligne['type'];
    				$_SESSION['idutilisateur']= $ligne['idutilisateur'];
    				$_SESSION['fonction']= $ligne['fonction'];
     
     
    				 header('Location: rechercheBisTest.php');
     
     
     
     
     
    			//echo "fffffffff ". htmlentities($_SESSION['nom']);
    		}
    		var_dump($donnees);
    	}
     
     
    	$reponse->closeCursor();	
     
    }else{
    	echo "vous devez entrer le login et le mot de passe";
     
     
     
    }
    }
    ?>

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2018
    Messages : 39
    Par défaut
    En fait, je souhaiterais que toute autre personne de la société de transports en communs n' étant pas contrôleur, par exemple chauffeur, personnel de sécurité...puisse se connecter par le même formulaire de connexion que ceux des contrôleurs, soient redirigés vers une autre page ( recherche.php) et non vers (rechercheBisTest.php= page que seuls les contrôleurs peuvent avoir accès).

  3. #3
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Suivant cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(count($donnees) == 0){
    		echo 'le mot de passe ou le login est incorrecte';
    	}
    Seul les controlleurs peuvent se connecter.
    Si vous n'êtes pas controlleurs, alors la requête ne fonctionne pas il faut donc déjà donner la possibilité à tout le monde de pouvoir se connecter.

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2018
    Messages : 39
    Par défaut
    Dois je refaire une requête avec ses parametres ou peux tu m' indiquer la méthode ?

    depuis hier je me creuse la tête, j' ai essayé réessayé, cherché sur internet, je ne trouve pas une explication de code pour mon cas

  5. #5
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Un truc du genre, en comptant sur le fait que login et mdp soit unique

    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
     
    <?php
    session_start();
    require("connexion.php");
     
     
    if (isset($_POST['login'])) {
        if ($_POST['login'] != "" && $_POST['mdp'] != "") {
            $login = $_POST['login'];
            $mdp = $_POST['mdp'];
     
     
           //je récupère le user
           $reponse = $bdd->prepare('SELECT * FROM utilisateurs WHERE login =:login  AND mdp=:mdp LIMIT 1;');
            $reponse->bindParam(':login', $login);
            $reponse->bindParam(':mdp', $mdp);
     
            $reponse->execute();
     
            $donnees = $reponse->fetch();
            if (count($donnees) == 0) {
                echo 'le mot de passe ou le login est incorrecte';
                die('il faut faire quelque chose ici');
            }
            //je vérifie si il es controleur ou non
            if ($donnees['fonction'] == 'controleur') {
     
                $_SESSION['nom'] = $donnees['nom'];
                $_SESSION['prenom'] = $donnees['prenom'];
                $_SESSION['type'] = $donnees['type'];
                $_SESSION['idutilisateur'] = $donnees['idutilisateur'];
                $_SESSION['fonction'] = $donnees['fonction'];
     
     
                header('Location: rechercheBisTest.php');
     
            } else {
                header('Location: recherche.php');
            }
            var_dump($donnees);
        }
     
     
        $reponse->closeCursor();
     
    } else {
        echo "vous devez entrer le login et le mot de passe";
     
     
    }

  6. #6
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2018
    Messages : 39
    Par défaut
    Merci super ton code, j' étais parti pour redoubler mon code avec des conditions !!!

    Juste une question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $reponse = $bdd->prepare('SELECT * FROM utilisateurs WHERE login =:login  AND mdp=:mdp LIMIT 1;');
    J' ai compris ton code dans sa globalité mais le je ne connaissais pas

    Peux tu me dire à quoi il sert je t' en serais reconnaissant !!

  7. #7
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Je suis parti du principe que la db est MySQL/MariaDB et LIMIT 1 , veux dire ne retourne qu'une seule ligne, du coup pasbesoin du fetchall mais juste du fetch. marche aussi avec Limit 6 cela ne retourne alors que les 6 premières lignes

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par keywork Voir le message
    ...mais le LIMIT 1 je ne connaissais pas

    Peux tu me dire à quoi il sert je t' en serais reconnaissant !!
    Euhh... tu ne sais pas FAIRE UNE RECHERCHE ??

    "SQL LIMIT"

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    C'est la logique de ton script qu'il faut revoir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$reponse = $bdd->prepare('SELECT * FROM utilisateurs WHERE login =:login  AND mdp=:mdp AND fonction="controleur";' );
    1- "...AND fonction="controleur" : tu ne cherches QUE les controleurs...

    2- "...AND mdp=:mdp..." : là, c'est plus grave : ça suppose que les mots de passe sont enregistrés EN CLAIR dans la BDD.
    Il NE faut JAMAIS enregistrer EN CLAIR !!!

    3- EVITE de mettre " SELECT * " : il vaut mieux indiquer uniquement les colonnes nécessaires.

    4- Il faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$reponse = $bdd->prepare('SELECT idutilisateur, nom, prenom, mdp, type, fonction FROM utilisateurs WHERE login =:login";' );
    Ensuite, on vérifie, pour CE login, que le mot de passe enregistré est le même que celui tapé.

    Avec le mot de passe EN CLAIR (CE QU'IL NE FAUT PAS FAIRE, je le répète) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if( $ligne['mdp'] == $mdp)
    {
      // OK, on continue...
    }
    5- Enfin, on met une condition, pour rediriger vers le bon fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if( $ligne['fonction'] == 'controleur' )
    {
       header('Location:...............');
    } else {
       header('Location:...............');
    }
    BONNE METHODE pour le Mot de passe :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if( password_verify( $mdp, $ligne['mdp']) ) 
    {
      // OK, on continue...
    }

Discussions similaires

  1. Réponses: 12
    Dernier message: 17/05/2017, 13h00
  2. Probleme de redirection avec Header
    Par ehmppowa dans le forum Langage
    Réponses: 7
    Dernier message: 28/12/2006, 18h26
  3. Script pour identifier une redirection
    Par Raideman dans le forum Langage
    Réponses: 1
    Dernier message: 18/10/2006, 12h25
  4. [PHP-JS] Problème de redirection avec header
    Par pierrot10 dans le forum Langage
    Réponses: 6
    Dernier message: 02/09/2006, 18h01
  5. Réponses: 16
    Dernier message: 01/02/2006, 19h09

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