trop long !

Répondre
Suta
le 08/03/2006 à 19:32
Suta
bonjour !

voila jai un script qui me semble bien long :

elseif (isset($_SESSION['login']) && ($_SESSION['groupe']!="admin"))
{
if ($data['groupe'] != $_SESSION['groupe'])
{
if ($data['groupe'] != "membre")
{
if ($data['groupe'] != "visiteur")
{
echo 'Vous n\'avez pas acces a cette galerie !';
exit;
}
}
}
}


Je suis sur qu'il y a moyen de le raccourcir non ?

merci pour vos proposition ;)

a bientot
moogli
le 09/03/2006 à 00:49
moogli
salut,

pour ce que tu en fait, ton script est effectivement trop long, tu peut tous mettre dans un seul if !

par contre si tu utilise des elses histoires de mettre un message d'erreur ou une action précise pour chaque cas, dans ce cas ton script est nickel.

par exemple pour la vérification d'un formulaire j'utilise toujours des if / else imbriqué les un dans les autres pour etre qu'a la fin mon action soit exact ( pas de pb de var vide ... )

la seul modif que je pourrais faire sur ton code c'est remplacer iseet par !empty mais la c'est plutot une question d'habitude).

smiley
Il en faut peu pour être heureux !!!!!
Suta
le 09/03/2006 à 01:20
Suta
bonjour,

justement je n'ai pas de else a mettre donc c'est trop long...

mon vrai probleme c'est que je n'arrive pas a mettre tout avec un seul "if" :'(, je ne connais pas tres bien les boleen et les autres truc de ce genre ^^

pourrai tu me donner la solution siltepléé ?

merci d'avance :)
Bzh
le 09/03/2006 à 18:12
Bzh
Dans un seul if:
<?php

elseif ( isset($_SESSION['login']) && ($_SESSION['groupe']!="admin") )
{

if ( $data['groupe'] != $_SESSION['groupe'] && $data['groupe'] != "membre" && $data['groupe'] != "visiteur")
{

echo "Vous n'avez pas acces a cette galerie !";
exit;


}
}

?>


Bye...
LupusMic
le 10/03/2006 à 10:41
LupusMic
(Bzh) Du tout, se sont des « ou logiques » qu'il faut préciser.

Tu coupe tout accès aux membres et au visiteurs :

Parce que si le groupe de la session est visiteur, alors il ne sera pas membre, donc $data['groupe'] != 'membre' && $data['groupe'] != 'visiteur' sera faux.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 10/03/2006 à 10:48
LupusMic
Après mûre réflexion, il s'avèr que je suis un idiot prétenscieux qui en plus se précipite pour le montrer au sus de tous :-D

Mes excuses Bzh, c'est toi qui a raison ;)
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Bzh
le 10/03/2006 à 18:00
Bzh
Nan ! Mais c'est vrai que cela n'est pas forcément facile à percevoir !!!

Mais après nombre d'années à travailler en logique pure (confère api + logosoft ), sa commence à entrer un tit peu !!! smiley

Bye...
Suta
le 12/03/2006 à 17:11
Suta
ok merci de m'avoir réponde :)

toutefois je n'ai pas vraiment compris pourquoi il faut mettre des "&&" et non des "||" ?

je vais tenter de vous expliquer comment est mon espace membre :

voila deja les variables :
<?php

$data['groupe']
//est le groupe attribué au forum ou a la galerie, on va le chercher dans la bdd

$_SESSION['groupe']
//est le groupe du membre connecté
?>


ensuite il y a 3 groupe "exeptionnels" qui peuvent etre attribués au forum ou a la galerie (autrement dit a la variable $data['groupe']

visiteur
membre
admin


si l'internaute n'est pas connecté alors il ne peu voir que le forum dont le $data['groupe'] est "visiteur"

je l'ai traduit comme ceci :
<?php

if (!isset($_SESSION['groupe']) && ($data ['groupe'] != "visiteur"))
{
echo 'Vous n\'avez pas acces a ce forum !';
}
else {
// on affiche le forum
}
?>


jusque la ça va c'est pas trop compliqué...

maintenant si l'internaute est connecté (donc membre):

le membre connecté quelque soit son $_SESSION['groupe'] a toujours acces aux forums dont les $data['groupe'] sont "visiteur" ET "membre"

si son $_SESSION['groupe'] est "admin" alors on affiche le forum

si son $_SESSION['groupe'] == $data['groupe'] du forum alors on affiche le forum

ce que je traduit comme ceci :

<?php

if (isset($_SESSION['groupe'])
{
if ($data['groupe'] != "visiteur" && $data['groupe'] != "membre")
{
if ($_SESSION['groupe'] != "admin" && $_SESSION['groupe'] != $data['groupe'])
{
echo 'Vous n\'avez pas acces a ce forum !';
}
else
{
// on affiche le forum
}
?>


donc au final on peu faire un truc dans ce genre

<?php
if (!isset($_SESSION['groupe']) && ($data ['groupe'] != "visiteur"))
{
echo 'Vous n\'avez pas acces a ce forum !';
}
elseif (isset($_SESSION['groupe'])
{
if ($data['groupe'] != "visiteur" && $data['groupe'] != "membre")
{
if ($_SESSION['groupe'] != "admin" && $_SESSION['groupe'] != $data['groupe'])
{
echo 'Vous n\'avez pas acces a ce forum !';
}
else
{
// on affiche le forum
}
?>



QUESTION :
Il y a t'il un erreur dans ce code ou dans mon resonnement parcque ça ne marche pas mon truc :S ?

merci ;)
Suta
le 12/03/2006 à 17:13
Suta
euh j'ai oublier de petit "}" mais je reitere ma question ;)
Suta
le 12/03/2006 à 17:26
Suta
vu qu'il y a quelque fautes je vous reecri mon code (qui apparament ne suit pas un bon raisonnement car il marche pas :'()

<?php
if (!isset($_SESSION['groupe']) && ($data ['groupe'] != "visiteur"))
{
echo 'Vous n\'avez pas acces a ce forum !';
}
elseif (isset($_SESSION['groupe'])
{
if ($data['groupe'] != "visiteur" && $data['groupe'] != "membre")
{
if ($_SESSION['groupe'] != "admin" && $_SESSION['groupe'] != $data['groupe'])
{
echo 'Vous n\'avez pas acces a ce forum !';
}
else
{
// on affiche le forum
}
?>
Répondre
LoadingChargement en cours