Aide MDP PunBB & Pluxml !

Salut à tous !

Je vous écrit parce que je cherche à terminer un truc que quelqu'un m'a commencé concernant la synchronisation de certains mots de passe du Forum avec ceux de l'administration de Pluxml. Mais pour en savoir plus aller ici :

http://www.punbb.fr/forums/viewtopic.php?id=5603

En espérant qu'une bonne âme puisse m'aider o_O, merci d'avance...

Réponses

  • J'ai changé ce qu'on m'a dit de changer sur le forum PunBB.fr mais ça ne marche toujours pas parce que j'ai mal compris le truc en fait. Voici les code :
    <?php
    # Copyright (c) 2006 Skyline-arts.com. All rights reserved.
    session_start();
    
    # Recuperation des variables globales de PunBB
    define('PUN_ROOT', './../../forum/');  // <--- A editer
    require PUN_ROOT.'include/common.php';
    
    define('PLX_CONF', '../conf/configuration.xml');
    define('PLX_DOC', '../');
    define('PLX_XML', '<?xml version="1.0" encoding="ISO-8859-1"?>'."\n");
    
    # On inclut les librairies nécessaires
    include(PLX_DOC.'lib/class.pluxml.php');
    include(PLX_DOC.'lib/class.glob.php');
    include(PLX_DOC.'lib/class.recordset.php');
    include(PLX_DOC.'lib/lib.util.php');
    include(PLX_DOC.'lib/functions.php');
    include(PLX_DOC.'lib/class.admin.php');
    
    # Les utilisateurs autre que les admin autorisée
    $auto = array (
    	'Azakronn',
    	'Alfast',
    	'Clement',
    );
    
    # Pour le test
    echo $auto;
    echo $pun_user['username'];
    
    # Si tu n'es pas loggé et admin ou un autorisée du forum, redirection sur la page login.php du forum
    if($pun_user['g_id'] != PUN_ADMIN || $pun_user['username'] != array || $pun_user['group_id'] != '5'){
        header('Location: '.PUN_ROOT.'login.php');
        exit;
    }
    else
    {
    # Création de l'objet 'admin' utile aux fonctions de pluxml
    $admin = new admin(PLX_CONF);
    $_SESSION['author'] = pun_htmlspecialchars($pun_user['username']);
    }
    ?>
    
    Mais ça m'affiche l'erreur suivante quand je me connecte :

    Parse error: syntax error, unexpected T_BOOLEAN_OR, expecting '(' in /home/olympe-network/scoperta/core/admin/prepend.php on line 33
  • Bon bah tant pis, je crois que je vais me mettre sur Puntal, c'est bien plus simple, et ça prend moins la tête.
  • allez je vais essayer de te faire avancer... mais je ne t'apporte pas de solution toute cuite, je ne connais pas les entrailles de PluXml et de PunBB.

    ton problème actuel se situe ligne 33, instruction:
    $pun_user != array

    comme on te l'a indiqué sur PunBB (http://fr.php.net/manual/fr/function.in-array.php), array est un mot réservé en Php servant à définir un tableau de variables $auto = array (...), il faut donc tester si une valeur fait partie du tableau (in_array).

    si tu veux progresser un minimum en php (et la tâche que tu veux faire le nécessite), tu trouveras tout sur php.net. dès que tu ne connais pas un terme, utilise la recherche en haut à droite, tu progresseras pas à pas.

    sans savoir/comprendre où tu vas aboutir, tu devras donc employer:
    ... || !in_array($pun_user,$auto) || ...

    ta condition veut grossièrement dire:
    Si user pun n'est pas du groupe admin
    ou bien si user pun ne fait pas partie du tableau des autorisations
    ou bien si user pun n'est pas du groupe 5
    alors tu le rediriges sur la page d'authentification de punBB (instruction header)

    remarque: tu as placé des 'echo ...' pour tester la valeur de variables, pour le tableau utilises print_r($auto)

    une fois testées, enlèves ces deux lignes, car _aucun_ affichage ne doit être fait avant une instruction header().
  • si j'ai bien compris ta demande, sur PunBB :

    > faire en sorte de demander un MDP lorsque l'on clique sur les paramètres.

    et si tu ne trouves pas ta solution dans un mod déjà fait (il me semble déjà avoir aperçu une gestion des droits), j'essayerai de jouer avec les droits sur core/admin/parametres.php avec un fichier .htaccess dans le répertoire core/admin, protégeant parametres.php.

    c'est moins élégant que de modifier le code de pluxml, mais ça doit faire l'affaire.
  • PaelebenPaeleben Member
    juillet 2007 modifié
    Voilà, voilà, j'ai fait tout ce que tu as dit et plus aucune erreur ne s'affiche. Ce qui est bien. Mais il me redirige sur le forum que je sois admin ou rédacteur...

    Voici la page modifiée :
    <?php
    # Copyright (c) 2006 Skyline-arts.com. All rights reserved.
    session_start();
    
    # Recuperation des variables globales de PunBB
    define('PUN_ROOT', './../../forum/');  // <--- A editer
    require PUN_ROOT.'include/common.php';
    
    define('PLX_CONF', '../conf/configuration.xml');
    define('PLX_DOC', '../');
    define('PLX_XML', '<?xml version="1.0" encoding="ISO-8859-1"?>'."\n");
    
    # On inclut les librairies nécessaires
    include(PLX_DOC.'lib/class.pluxml.php');
    include(PLX_DOC.'lib/class.glob.php');
    include(PLX_DOC.'lib/class.recordset.php');
    include(PLX_DOC.'lib/lib.util.php');
    include(PLX_DOC.'lib/functions.php');
    include(PLX_DOC.'lib/class.admin.php');
    
    # Les utilisateurs autre que les admin autorisée
    $auto = array (
    	'Azakronn',
    	'Alfast',
    	'Clement',
    );
    
    # Pour le test
    print_r($auto);
    print_r($pun_user['username']);
    
    # Si tu n'es pas loggé et admin ou un autorisée du forum, redirection sur la page login.php du forum
    if($pun_user['g_id'] != PUN_ADMIN || !in_array($pun_user['username'],$auto) || $pun_user['group_id'] != '5'){
        header('Location: '.PUN_ROOT.'login.php');
        exit;
    }
    else
    {
    # Création de l'objet 'admin' utile aux fonctions de pluxml
    $admin = new admin(PLX_CONF);
    $_SESSION['author'] = pun_htmlspecialchars($pun_user['username']);
    }
    ?>
    
    J'ai essayé sans les lignes de test et ça me fait la même chose. :/
  • eh bien déjà ça fonctionne, reste plus qu'à peaufiner le test. je ne connais pas la logique de PunBB donc ce que j'écris n'est pas certain.

    quand tu dis:
    > il me redirige sur le forum que je sois admin ou rédacteur...
    tu parles de la page login.php de punbb j'imagine ?

    en commentaire dans le programme, tu indiques:
    # Si tu n'es pas loggé et admin ou un autorisée du forum, redirection ...

    or dans le test, il y a des ou de partout (||).
    le et en php, c'est: &&

    problème de logique ? tu peux être admin mais dans ce cas comme aussi tu n'es pas dans les autorisés, tu passes par login.php quand même, c'est le comportement programmé.

    attention les conditions utilisent des négations (!) ou des différences (!=). l'égalité dans un test c'est ==

    à vue de nez, j'aurai trouvé plus logique:

    if ( $pun_user != PUN_ADMIN
    && !in_array($pun_user,$auto)
    && $pun_user != '5' )
    { ....

    pour revenir à un test plus compréhensible, ama, en inversant les instructions et le test, tu pourrais utiliser:

    if (
    $pun_user == PUN_ADMIN
    || in_array($pun_user,$auto)
    || $pun_user == '5'
    )
    {
    # Création de l'objet 'admin' utile aux fonctions de pluxml
    $admin = new admin(PLX_CONF);
    $_SESSION = pun_htmlspecialchars($pun_user);
    } else {
    header('Location: '.PUN_ROOT.'login.php');
    exit;
    }

    autrement dit, si tu es admin, ou bien si tu es dans les autorisés ou bien du groupe5, alors tu poursuis normalement pluxml, sinon login.php

    est-ce mieux comme ça ?
  • Apparemment, ça marche bien, c'est même super cool en fait !

    par contre, je trouve la ligne suivante écrite en haut de l'administration : Array ( [0] => Azakronn [1] => Alfast ) Paeleben. Cette même ligen s'affiche quan dj'ouvre le fichier prepend.php.

    Et sinon, j'essaie d me déconnecter et de me re-logger avec un autre identifiant mais il me garde l'ancien dans l'administration de Pluxml.

    N'y aurait-il pas moyen de pouvoir se déconnecter de l'admin de Pluxml en même temps que se déonnecter du forum ?
  • >je trouve la ligne suivante écrite en haut de l'administration : Array (...
    à priori, la ligne, avec l'instruction de test print_r($auto); n'est pas commentée, rajoute // en début de ligne pour la mettre en commentaire ou bien supprime là.


    >N'y aurait-il pas moyen de pouvoir se déconnecter...
    heu, je te préviens que je n'ai pas d'install punbb pour tester, alors sans garantie:

    dans le fichier core/admin/auth.php de pluxml, à la ligne 9, si tu rajoutes 3 lignes pour obtenir cette partie:
    # Déconnexion
    if (!empty($_GET['d'])) {
    	$_SESSION = array();
    	session_destroy();
    		// supplément pour déconnexion de PunBB dans la foulée
    	header('Location: '.PUN_ROOT.'login.php?action=out&id='.$pun_user['id']);
    	exit;
    }
    
    qu'est-ce que cela donne?
  • Salut Kyodev !

    Je te remercie énormément pour ton aide parce que qqn a pu finir ce que je voulais hier et tout marche parfaitement bien. Il avait pris ta dernière MAJ #7.

    Eh c'est vrai que je n'avais pas pensé aux commentaires du tout, bien que tu me l'avais dit au dessus. Enfin je suis super content, maintenant, tout fonctionne bien. Ce qui va être moins évident, c'est d'essayer de refaire la même chose avec la prochaine v. de PLuxml. Mais on y est pas encore.

    Merci encore, et @++
  • >tout marche parfaitement bien
    eh bien c'est parfait.
    peut-être pourrais-tu publier la méthode de déconnexion automatique si elle diffère de celle que j'ai pu imaginer? cela pourrait intéresser d'autres personnes.

    >refaire la même chose avec la prochaine v. de PLuxml
    eh bien à la prochaine version alors ;)
  • Oki, je vais voir ça de suite !!! :D
Connectez-vous ou Inscrivez-vous pour répondre.