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 :

Problème d'extraction de données en SESSION


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Problème d'extraction de données en SESSION
    Bonjour ou même bonsoir à vous.

    Aujourd'hui, je m'inscris sur votre site afin d'avoir une réponse (peut-être) à ma question.
    J'ai en effet un problème avec PHP, concernant les Szssions ainsi que les variables.
    Je vous l'expose :
    J'ai un site qui gère une partie membre, ainsi qu'une partie Administration.
    J'ai une base de donnée avec une table nommée membres, et dans celle-ci plusieurs champs.
    Un champs concernant les rangs des utilisateurs est nommé membre_rang.
    Je souhaite faire un accès à l'Administration UNIQUEMENT aux utilisateurs ayant le rang à 2 (Egal ou supérieur) dans la table membre_rang.
    Il me faut faire une condition, ça ok.
    Sauf, qu'il faut 'extraire' les informations de la base de donnée et la retranscrire en variable.
    Pour la connexion d'un utilisateur j'utilise une Session pour le rang :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['membre_rang'] = $result['membre_rang'];
    Sachant que le $result a pour cette valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $result = sqlquery("SELECT COUNT(membre_id) AS nbr, membre_id, membre_pseudo, membre_mdp FROM membres WHERE
    membre_pseudo = '".mysql_real_escape_string($_POST['pseudo'])."' GROUP BY membre_id", 1);
    J'ai essayé à multiples reprises de faire des conditions, mais rien.
    Quelqu'un peut m'aider?
    Cordialement.
    MAXIME.

  2. #2
    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

    Avant tout, sert toi de certaines fonctionnalités qu'offre ce forum, comme mettre les parties de code dans les BBCode "code", "citation".
    Cela améliore le lisibilité du post, du coup incitera plus les membres à t'aider.

    Exemple pour le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    $code = 'Du code Php, pour exemple';
    ?>

    Le problème c'est que tu utilise une fonction sqlquery() qui serait de ta propre création (pas une fonction de Php en tout cas), du coup on ne sait pas quel type de donnée quelle retourne.

    Fait un print_r($result) ou un var dump($result) pour savoir ce que ça retourne.

    L'autre problème c'est que ta requête pourrait retourner plusieurs lignes dans le cas où il y aurait plusieurs membres ayant le même pseudo.

    Dans ton cas il ne faudrait surtout pas qu'il y ait plusieurs lignes car une session par définition doit être unique, donc valable pour un seul utilisateur (poste client), donc 1 seul membre.

    Lors de l'étape de la connexion (les termes authentification ou identification sont plus adaptés à mon sens), normalement le membre qui tente de s'identifier doit théoriquement fournir son pseudo ET son mot de passe, c'est ce couple qui normalement devrait garantir l'unicité du membre.


    Là où je veut en venir, c'est que la requête SQL une fois exécuté DOIT retourner soit 1 ligne (1 membre) ou rien (suite à une erreur de saisie ou autre).


    A mon sens il faudrait en 1er lancer une requête comme :
    (pour l'exemple je ne met que le SQL)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COUNT(*) AS total, membre_id, membre_rang
    FROM membres
    WHERE membre_pseudo = 'le_pseudo_du_membre'
    AND membre_mdp = 'le_mdp_du_membre'
    LIMIT 1
    NB : Il n'y pas lieu de rajouter dans la partie SELECT les champs "membre_pseudo" et membre_mdp" du fait que le membre le fourni.
    Par contre il faut rajouter le champ "membre_rang" afin de l'exploiter pour la condition.

    Puis comme expliqué précédemment, on devrait obtenir un tableau à 1 dimension de la ligne récupérée (le nombre total, l'ID du membre et son rang).

    Donc admettons que $result contienne ce tableau à 1 dimension, suffit de la mettre dans la session :
    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
    <?php
    // La session aura été démarrée au préalable
    session_start();
     
    // Divers code ... etc ...
     
    $result = sqlquery(bla bla bla);
     
    // SI le nombre total vaut 1
    if ($result['total'] == 1) {
        // ERREUR : Aucun résultat dans la requête
     
        // On détruit le tableau de session pour le membre par précaution
        $_SESSION['membre'] = array();
    }
    else {
        // On stock les données du membre dans la session ($_SESSION)
        $_SESSION['membre'] = array(
            'id' => (int)$result['membre_id'],
            'pseudo' => $result['membre_pseudo'],
            'rang' => (int)$result['membre_rang']
        );
     
     
        // On peu désormais exploiter le rang pour faire toute sorte de traitement selon sa valeur
        if ($_SESSION['membre']['rang'] === 1) {
            // Membre
        }
        elseif ($_SESSION['membre']['rang'] >= 2) {
            // Administrateur
        }
    }
    ?>
    Par ailleurs, on peu exploiter les sessions dans toutes les pages qu'on veut, et mettre des conditions comme vérifier l'existence de la variable de session "membre", puis SI elle existe rajouter une autre condition selon la valeur du rang afin de faire des traitements en rapport.
    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]

Discussions similaires

  1. Problème d'extraction de données avec jointure
    Par didier.M dans le forum Développement
    Réponses: 2
    Dernier message: 16/07/2008, 14h28
  2. Problème d'extraction de données sur DD Toshiba
    Par Valentinik35 dans le forum Composants
    Réponses: 2
    Dernier message: 03/06/2008, 21h10
  3. [MySQL] Problème d'extraction de données d'un tableau
    Par cyberdevelopment dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/04/2007, 13h11
  4. [XML][tinyXML] Problême d'extraction de données XML ac tinyxml
    Par Jahprend dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 19/03/2007, 09h35
  5. problème d'extraction de données html
    Par spootnic22 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 01/11/2006, 13h24

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