Bonjour je souhaiterais savoir comment je peux faire pour afficher un lien pour un type de membre (ex:admin)

Voici le code de ma page auth

<?php
class Auth{

    static function isLogged(){
        if(isset($_SESSION'Auth']) && isset($_SESSION'Auth']'log']) && isset($_SESSION'Auth']'pwd']) && isset($_SESSION'Auth']'mail']) && isset($_SESSION'Auth']'statut'])){
            extract($_SESSION'Auth']);
            mysql_connect("sql.free.fr"," ******","******");
            mysql_select_db(" ******");
            $sql = "SELECT id FROM users WHERE log='$log' AND pwd='$pwd'";
            $req = mysql_query($sql) or die(mysql_error());
            if(mysql_num_rows($req)>0){
            return true;    
            }
            else{
                return false;
                }
            }
        else{
            return false;
            }
        }
    }
?>

Je suis chez Free donc pour moi la PDO c'est mort =/
En vous remerciant d'avance =)

14 réponses


WinuX
Réponse acceptée

Je connais pas ta table, mais j'pense que ca serait plutôt ceci :

<?php
    if(Auth::isLogged()){
    $req = mysql_query('SELECT users.*,roles. * FROM users AS users LEFT JOIN roles AS roles ON users.id_roles = roles.id');  
    while($result = mysql_fetch_assoc($req)or die(mysql_error())){
    if($result'statut'] == 1)   
        echo"Test";
    }
}  
?>

Tu veux gérer les droits en fonction du "groupe"?

Si c'est le cas j'te conseille de travailler sur 2 tables.
Une table "permissions" avec id du groupe, et les différent droit qui seront des binaire genre voir, poster, bannir qui prendront comme valeur 1 ou 0 selon le groupe.
Et une table "membres" avec l'id du membre, l'id de son groupe, le titre de son groupe etc....

Ensuite tu fais une jointure dans tes requetes là ou tu affiches ce que tu voudrais caché aux simple membres.

SELECT m.* , p.* FROM membres AS m LEFT JOIN permissions AS p ON m.id_groupe = p.groupe_id WHERE voir=1

Sachant que seul le groupe admin aura une valeur de 1 pour le champs voir.
Ou sinon tu enlèves le where et tu fais ca en php :

$req = mysql_query('SELECT m.* , p.* FROM membres AS m LEFT JOIN permissions AS p ON m.id_groupe = p.groupe_id');
while($result = mysql_fetch_assoc($req)){
    if($result'voir'] == 1) 
        // Tu affiche le mail   
}

Fin bref, j'pense que tu vois le principe non? ^^

yabbix
Auteur

Il n'y a pas plus simple? ^^

yabbix
Auteur

Je viens d'essayer

<?php SELECT users *,roles * FROM users AS users LEFT JOIN roles AS roles ON users.id_groupe = roles.groupe_id WHERE voir=2 
    $req = mysql_query('SELECT users *,roles * FROM users AS m LEFT JOIN roles AS roles ON usersid_groupe = roles.groupe_id');  
    while($result = mysql_fetch_assoc($req)){  
    if($result'voir'] == 2)   
        Section admin   
}  
?>

Mais sa me met une erreur
Parse error: syntax error, unexpected T_STRING in "l'adresse de la page" on line 31

SELECT users *,roles * FROM users AS users LEFT JOIN roles AS roles ON users.id_groupe = roles.groupe_id WHERE voir=2

users.* (ya le point c'est important il me semble, pariel pour roles)

De plus, le "where voir = 2" est totalement inutile si ensuite tu fais un :

if($result'voir'] == 2)

Ca te donnes ca :

<?php 
    $req = mysql_query('SELECT users.*,roles.* FROM users AS users LEFT JOIN roles AS roles ON users.id_groupe = roles.groupe_id');  
    while($result = mysql_fetch_assoc($req)){  
    if($result'voir'] == 2)   
        // Section admin   
}  
?>
yabbix
Auteur

J'ai corrigé mais j'ai toujours la même erreur :s

Je suis débutant en codage php...

yabbix
Auteur

Merci je vais essayer

yabbix
Auteur

J'ai modifier un truc sur la methode a Winux avant sa marche j'arrive a avoir la page mais où le lien doit être affiché j'ai une erreur:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in 'adresse de la page' on line 34

while($result = mysql_fetch_assoc($req)){

ajoute un "or die(mysql_error())" car j'pense que la requete (la tienne) est ptete fausse ^^

yabbix
Auteur

Sa fonctionne mais le soucis c'est que tout les types de membre ont accès a ce lien...

Tu n'as pas compris ou je voulais en venir alors :/

Le but est de faire une condition en fonction du groupe du membre et des droits de ce groupe (comme voir le lien).
Si le groupe à le droit, alors tu affiche le lien, sinon rien les autres ne le verront pas.

Si tu comprends toujours pas, j'vois pas comment t'aider plus. Te donner l'intégralité du code ne t'apprendrais rien, par contre si tu nous montrais ton code intégrale, on pourrait te dire ou se situe les erreurs ;)

yabbix
Auteur

Le voici

<?php
    if(Auth::isLogged()){
    $req = mysql_query('SELECT users.*,roles. * FROM users AS users LEFT JOIN roles AS roles ON users.id_roles = roles.users_id');  
    while($result = mysql_fetch_assoc($req)or die(mysql_error())){
    if($result'statut'] == 2)   
        echo"Test";
    }
}  
?>
yabbix
Auteur

C'est bon sa marche merci =)