Archives FluxBB.fr

Les archives de FluxBB.fr

Vous n'êtes pas identifié(e).

#1 19-02-2008 17:08:50

Awnorus
Membre

Utiliser les groupes du forum pour limiter les accès à certaines pages

Bonjour.

J'ai installé un forum punBB sur mon site, et j'aimerai y développer en parallèles d'autres pages.

I - J'aimerai que ces pages ne soient accessibles que pour les membres d'un groupe :
par exemple, si un invité clique sur le lien, un message lui indique qu'il n'a pas accès aux données, si un membre du groupe clique, la page s'affiche.
Quels codes dois-je ajouter sur mes pages ? A quels emplacements ?

II - J'aimerai aussi que certains liens ne s'affichent que pour les membres de certains groupes. Par exemple : le lien qui mène à une page "exemple.php" n'est affiché que si le visiteur est membre du groupe X ayant la possibilité de le voir.

Je vous remercie de votre aide pour un néophyte comme moi happy

Hors ligne

#2 19-02-2008 18:04:48

Apophis
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

De memoire je dirais un test if sur $pun_user['g_id'].
Je pense que les id des groupes sont dans cette variable. Au dernieres nouvelles, le groupe admin avait g_id < 4 je crois. Je vais reverifier mais de votre coté essayez aussi de faire quelques petits tests sur la-dite variable (en creant des groupes)
L'idée serait qu'au tout debut de la page dont vous souhaiteriez que l'acces soit reistreint, il y ait un

if ($pun_user['g_id'] > /* l'id du groupe que tu veux */) {
          echo "Vous n'avez pas la permission de voir cette page";
}
else {
/* On poursuit avec le contenu normal de la page */
}

Dernière modification par Apophis (19-02-2008 18:05:32)


Join us now and share the software, Hackers you'll be FREE!

Hors ligne

#3 19-02-2008 19:16:04

Awnorus
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

Merci bien, j'ai testé deux trucs :

<?php
if ($pun_users['group_id'] > 1) {
          echo "Vous n'avez pas la permission de voir cette page";
}
else {
/* On poursuit avec le contenu normal de la page */
}
?>

/* code source de la page */

et

<?php
if ($pun_groups['g_id'] > 1) {
          echo "Vous n'avez pas la permission de voir cette page";
}
else {
/* On poursuit avec le contenu normal de la page */
}
?>

/* code source de la page */

Aucuns des deux ne fonctionne... Je sais bien qu'il y a une erreur, mais étant donné mes connaissances en php (qui se résument à savoir lire), je ne sais que faire...

Hors ligne

#4 19-02-2008 19:28:54

M@x
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

Voilà ce que je mettrait :

if ($pun_user['g.id'] > ton_id_de_groupe )
message('Vous n\'avez pas l\'autorisation de consulter cette page !');

M@x.


...

Hors ligne

#5 19-02-2008 19:45:07

Awnorus
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

Je viens d'essayer et ça ne fonctionne pas... Je commence à désespérer de mon incapacité.

Pour info : les noms employés par ma base de donnée sont "pun_users" et "group_id"
(J'ai eu beau adapter, ça ne restreint absolument pas les accès...)

Pourriez-vous faire une page type avec le code inséré ? (en faisant figurer sur le code, /* le code source de la page */ afin que je puisse insérer directement mon code source et vérifier si cela fonctionne).

Je vous remercie.

Dernière modification par Awnorus (19-02-2008 19:46:27)

Hors ligne

#6 19-02-2008 19:52:27

Apophis
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

Hop là je viens de vérifier, c'est bien $pun_user['g_id'] mais il semble que tu ais besoin de include/common.php.
Par conséquent, pour que les moderateurs et les admins puissent accéder à la page, et pour reistreindre l'acces aux autres membres n'etant pas du groupe que tu veux:

require PUN_ROOT.'include/common.php';

if ( ($pun_user['g_id'] < PUN_GUEST) || ($pun_user['g_id'] ==  id_du_groupe)) {

/* contenu normal de la page */

}
else {
       message('Vous n\'avez pas l\'autorisation de consulter cette page !');
}

C'est un peu bourrin, mais l'idée y est happy

EDIT: ne pas oublier de definir la racine de ton forum avant le require
i.e define('PUN_ROOT', 'chemin vers la racine de tes forums');

Dernière modification par Apophis (19-02-2008 20:10:41)


Join us now and share the software, Hackers you'll be FREE!

Hors ligne

#7 20-02-2008 07:06:40

Awnorus
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

J'ai testé...

<?php
define('PUN_ROOT', 'forum/');
require PUN_ROOT.'forum/include/common.php';

if ( ($pun_users['group_id'] < PUN_GUEST) || ($pun_users['group_id'] ==  1)) {
Affichage de la page.
} else {
       message('Vous n\'avez pas l\'autorisation de consulter cette page !');
}
?>

Et j'ai le droit à ceci :

Parse error: syntax error, unexpected T_STRING in /home.39/a/l/i/alidhana/www/test.php on line 6

D'où vient le problème ?

Hors ligne

#8 20-02-2008 15:37:47

M@x
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

$pun_user

M@x.


...

Hors ligne

#9 20-02-2008 15:42:28

vin100
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

"Affichage de la page." est du texte brut au milieu du code PHP cela produit une parse_error ; normal smile

il faut mettre par exemple

echo "Affichage de la page.";

ou

?>
Affichage de la page.
<?php

Hors ligne

#10 20-02-2008 16:09:37

M@x
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

Ah oui aussi happy

Voici un code propre, à la PunBB ! ^^

<?php
define('PUN_ROOT', 'forum/');
require PUN_ROOT.'include/common.php';

if ($pun_user['group_id'] == PUN_GUEST)
 message('Vous n\'avez pas l\'autorisation de consulter cette page !');
?>

ET la tout le reste de ta page pour les invités.

Dans ce cas, les invités ne peuvent pas visiter la page.

Voici sinon, les groupes principales (Dans include/common.php)
define('PUN_ADMIN', 1);
define('PUN_MOD', 2);
define('PUN_GUEST', 3);
define('PUN_MEMBER', 4);

M@x.


...

Hors ligne

#11 20-02-2008 16:26:07

Apophis
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

En plus des deux erreures precédentes, vous avez faits plein de petites erreures aussi. Je vais essayé de corriger pour que vous comprenniez un peu mieux. Voici un exemple de bon code:

<?php
define('PUN_ROOT', 'forum/');
require PUN_ROOT.'include/common.php';

if ( ($pun_user['g_id'] < PUN_GUEST) || ($pun_user['g_id'] == /* id_du_groupe_autorisé */)) {
       message("Vous êtes autorisé à consulter le contenu de cette page. Bravo");
} 
else {
       message('Vous n\'avez pas l\'autorisation de consulter cette page !');
}
?>

Voila donc je repete encore une dernière fois pour que vous comprenniez: il faut que dans ce code, vous remplaciez  /* id_du_groupe_autorisé */ par l'id du groupe que vous autorisez à consulter cette page.
Si vous ne connaissez pas cet id, c'est tres simple:
- le groupe admin ont l'id 1 par defaut je crois,
- le groupe moderateurs c'est l'id 2
- groupe invité, c'est l'id 3
- groupe membres, c'est l'id 4
- pour les autres groupes (donc ceux que vous allez creer ulterieurement), ils ont tous des id superieurs à 4. Le premier groupe que vous allez creer aura l'id 5, le second aura l'id 6 ...
D'ailleurs si vous allez dans Administration -> Groupes , les groupes d'utilisateurs sont classés (vers le bas de la page) de haut en bas par leur id (voila, comme ca je pense que c'est plus facile à comprendre).

EDIT: oups désolé j'ai été devancé de quelque peu par M@x. Mais je laisse car ca peut servir

EDIT bis: juste comme ça (pour ma propre culture de punbb) comment se fait-il que $pun_user['g_id'] et $pun_user['group_id'] soient pareils?

Dernière modification par Apophis (20-02-2008 16:36:36)


Join us now and share the software, Hackers you'll be FREE!

Hors ligne

#12 20-02-2008 18:31:50

M@x
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

Apophis a écrit :

En plus des deux erreures precédentes, vous avez faits plein de petites erreures aussi. Je vais essayé de corriger pour que vous comprenniez un peu mieux. Voici un exemple de bon code:

Mon code fonctionne parfaitement !

Si on regarde dans la table user, on ne trouve pas de g_id donc ça m'étonnerai que ça fonctionne !

De plus votre méthode concernant le if et le else n'est pas vraiment adopté par PunBB, elle ne sert à rien ! Un if bien "réfléchit" est appréciable.

M@x.


...

Hors ligne

#13 20-02-2008 18:52:31

PascL
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

$pun_user n'est pas la table users

Ce qui est dans $pun_user est la table users ET la table groups (+ 2 champs de online)
d'où le g_id (de groups) et le group_id (de users) équivalents

ça se passe dans la fonction check_cookie dans functions.php

Hors ligne

#14 20-02-2008 20:08:22

M@x
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

PascL a écrit :

$pun_user n'est pas la table users

Ce qui est dans $pun_user est la table users ET

Donc ça l'est quand même happy

M@x.


...

Hors ligne

#15 21-02-2008 00:09:35

Apophis
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

Désolé je ne parlais pas de vous M@x mais plutot de celui qui a posé le problème. En plus de l'erreur que vous avez trouvé et de celle que vin100 a trouvé, il avait fait pleins de petites erreures en plus aussi.
Sinon merci pour les renseignements sur $pun_user. J'avais dejà jeté un coup d'oeil sur la requette dans functions.php mais je n'avais pas tout saisi. Et donc ça confirme que $pun_user['g_id'] et $pun_user['group_id'] soient équivalents. Merci


Join us now and share the software, Hackers you'll be FREE!

Hors ligne

#16 22-02-2008 17:56:46

Awnorus
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

Bonjour.

Le code fonctionne impeccablement ^^
Mais, si je souhaite rediriger les invites vers une autre page, qu'est-ce que je peux mettre à la place de

if ($pun_user['group_id'] == PUN_GUEST)
 message('Vous n\'avez pas l\'autorisation de consulter cette page !');
?>

Merci, vos réponses sont très enrichissantes.

Hors ligne

#17 22-02-2008 18:27:49

Apophis
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

Essayez avec

header(location: /* url de la page ou vous voulez les rediriger */ );

Pas sur que ça fonctionne mais essayez quand même tongue

Dernière modification par Apophis (22-02-2008 18:28:07)


Join us now and share the software, Hackers you'll be FREE!

Hors ligne

#18 22-02-2008 18:43:16

M@x
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

Apophis, PunBB tu connait ?! happy

Voici le code idéale :

if ($pun_user['group_id'] == PUN_GUEST)
redirect('tapage.php', 'Vous n'avez pas l\'autorisation d\'accèder à cette page !');

M@x.


...

Hors ligne

#19 22-02-2008 19:26:25

Apophis
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

Sorry M@x j'en connais beaucoup moins que vous (seulement trois mois d'"addiction" happy )


Join us now and share the software, Hackers you'll be FREE!

Hors ligne

#20 22-02-2008 19:38:13

M@x
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

Pas de soucis, maintenant tu connait cette fonction happy

M@x.


...

Hors ligne

#21 25-02-2008 17:43:18

Awnorus
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

Bonjour.

Ca fonctionne parfaitement, les non-connectés sont redirigés vers la page de mon choix.

Néanmoins, j'aimerai que vous m'éclairiez sur deux petits points :

- Avec le code actuel, je redirige les invités, mais je voudrais plutôt n'accepter qu'un seul groupe ; soit, rediriger tout le monde sauf un seul groupe. Que puis-je faire ?


-
J'ai un petit message d'erreur qui dure deux secondes lorsque je tente d'ouvrir la page sans être connecté :

Warning: Missing argument 2 for redirect() in /home.39[...]www/forum/include/functions.php on ligne 876

[large]Redirection[/large]

Cliquer ici si vous ne voulez pas attendre (ou si votre navigateur ne vous redirige pas).

Dernière modification par Awnorus (25-02-2008 17:44:17)

Hors ligne

#22 25-02-2008 17:50:03

Herbivor
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

Voici comment fonctionne la fonction redirect() :

redirect('page_de_redirection.php', 'Message de redirection');

Dans ta page, tu n'as pas mis le message de redirection wink

Dernière modification par Herbivor (25-02-2008 17:50:22)

Hors ligne

#23 25-02-2008 17:53:36

Awnorus
Membre

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

Très bien, merci ; je comprends mieux maintenant... smile

N'est-il pas possible de changer le style de la page qui affiche le message de redirection ? Actuellement, la police est noire sur fond blanc.

Dernière modification par Awnorus (25-02-2008 17:53:57)

Hors ligne

#24 25-02-2008 19:24:00

Mpok
Néo Admin

Re : Utiliser les groupes du forum pour limiter les accès à certaines pages

Awnorus a écrit :

N'est-il pas possible de changer le style de la page qui affiche le message de redirection ?

Oui, dans include/template/redirect.tpl.

Hors ligne

Pied de page des forums