[URL] couplage avec forum punBB

super_g2super_g2 Member
février 2010 modifié dans Entraide
Bonjour à tous et tout d'abord bravo pour votre CMS/Blog PluXML ! quel pied de voir un tel développement prenant en compte la customisation possible par les utilisateurs avec autant de sérieux.

Montant actuellement un "site communautaire" pour une team counter-strike:source, j'ai décidé d'utiliser ce système pour la gestion de la partie "site news" de la plateforme. Souhaitant bien sûr voir les membres avoir qq privilèges, et dans le souci d'offrir une plateforme réellement communautaire, il me fallait un forum. j'ai choisi PunBB 1.3 (je sais, j'aurai pu prendre FluxBB, mais il faut reconnaitre que le boulot sur la monture 1.3 de PunBB est plutôt intéressant, notamment le système de plugin.). J'ai donc dans un premier temps modifié le header.php de mon thème afin d'y inclure les fichiers nécessaires du forum pour accéder aux variables et fonctions utiles.

ensuite, j'ai pu dans un premier temps mettre en place un formulaire de login et j'ai couplé la section commentaires des articles de pluxml avec la détection et le remplissage automatique des champs si la personne est logguée.

Le problème est survenu quand j'ai voulu ajouter un champ/une page de recherche et la page de contact sur le site pluxml. J'ai suivi les 2 tutos du wiki, pas de souci sans l'intégration du forum mais pb si je remets l'intégration.
Je connais la raison : punBB possède un mécanisme de vérification des form via un input hidden contenant un hash de la page d'action du forum, hash créé par une fonction generate_csrf_token(). Ce hash est important car sans lui, mon formulaire se fait refoulé par le gestionnaire de sécurité du forum (erreur csrf_token).

pour palier à ce souci, je pense qu'il me faut mettre l'url "brute" (et non rewritée par pluxml sous la forme /?staticxx/nom-de-la-page) du type index.php?var1=xx&var2=yy etc.. le pb : je ne connais (bien qu'ayant parcouru l'intégralité de ce site) la formulation de cette url, title2url() (je pense que c'est cette fonction) étant trop "présent" ^^

une idée?

merci à tous, désolé si c'est pas clair, je peux développer/éclaircir.

enjoy

ps : ligne à ajouter dans le form :
<input type="hidden" name="csrf_token" value="<?php echo generate_form_token($forum_page['form_action']); ?>" />
lien poitant vers la ressource punBB : [url=http://punbb.informer.com/wiki/punbb13/extern_ed_pun_ext?s[]=csrf#php_specification]ici[/url]


pps : j'ai aussi ajouté pas mal de choses, notamment la gestion des smilies du wiki, la gestion des link vers del.icio.us etc..., et une barre de gestion pour les membres/admins (couplage des rank admin du forum avec l'interface de gestion du site, pas encore finalisée) style facebook : http://www.sohtanaka.com/web-design/facebook-style-footer-admin-panel-part-1/

enjoy

ppps : je n'ai pas encore mis de thème en ligne, j'ai travaillé sur le thème par défaut afin de me faire la main, ce fut très instructif car pluxml est très bien conçu pour cela. promis, une fois le temps de trouvé, je ferai un vrai thème personnalisé !

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour

    Essaye de mettre dans ta page l'instruction suivante, avant l'inclusion du fichier common.php de punbb
    define('PUN_ALLOW_INDEX', 1);
    
    Elle devrait désactiver dans punbb le système de vérification d'url basée sur les tokens

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • super_g2super_g2 Member
    février 2010 modifié
    je vais essayer ;) j'édite si ça marche.
    juste pour info : plus besoin de mon champ hidden alors?

    edit : non, cela ne fonctionne pas.

    voici le haut de mon header.php :
    <?php
    
    // integration forum
    define('FORUM_ROOT', './forum/');
    define('PUN_QUIET_VISIT', 1);
    define('PUN_ALLOW_INDEX', 1);
    
    require FORUM_ROOT.'include/common.php';
    //define('FORUM_DISABLE_CSRF_CONFIRM', 1);
    //require_once FORUM_ROOT.'include/essentials.php';
    
    ?>
    
    <?php if(!defined('PLX_ROOT')) exit; ?>
    <?php include(PLX_ROOT.'plugins/plx.search.php') ?>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    
  • Bonjour,
    des idées ce matin ? car là, je suis désespéré. comment se présente une url sans la réécriture faite par pluxml? index.php?var=... ;)

    enjoy
  • StéphaneStéphane Member, Former PluXml Project Manager
    J'ai écris une classe qui permet de faire un pont avec fluxbb 1.2.22
    Cette classe (en php5) permet de récupérer les infos sur l'utilisateur connecté au forum.
    Si ça peut t'aider....

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • super_g2super_g2 Member
    février 2010 modifié
    why not, mais faudra que j'adapte car je te rappelle (post #1) que j'ai installé punBB 1.3, tu sais la version de scission entre les gens de la team dev de fluxBB et punBB...
    je ne comprends pas trop le pkoi du comment, mais tous les form sont automatiquement checkés (pkoi pas, certain gage de sécurité) par la fonction crsf. Un moyen existe pour envoyer le form de manière parfaite, en adéquation avec cette vérification, mais pour cela il me faudrait savoir (pas faute de chercher dans la doc pluxml ^^) quelle est la forme de l'url sans la réécriture auto de pluxml.

    quelle est la forme par exemple d'une page statique avec cette syntaxe d'url "index.php?var1=XX&var2=YY..." au lieu de la syntaxe "?static1/blabla-blabla" ?

    une fois cela connu, je pourrai essayer via le champ <input hidden... de faire passer mon form.

    Merci beaucoup en tout cas de ton aide :)

    ps : ta solution avec le define ne marche pas sous punBB 1.3 :)
  • bonjour,

    les url de pluxml ne sont pas réecrite , il s'agit simplement d'injecter une variable sans valeurs.

    ex: ?artcle1/ ou ?static3/ ou ?categorie1/
    La variable envoyé permet alors a pluxml de reconnaitre le contenu demandé un artcle et son numero ou une staique et son numero ou une ctegorie et son numero .

    Si la variable envoyé correspond a rien que pluxml connait , alors il renvoi sur la page d'accueil . Si la variable envoi vers un contenu qui n'existe pas ou plus , tu as une page d'erreur . exemple : demander la page statique 72 alors u'auncune n'a ce numero attribué.

    Note que seul la premiere parti de l'url est utile :? + mot clé + N° + / le nom de la page ou de la categorie peut-etre omis , il ne sert qu'a "embellir l'url' .

    si tu appelle ton formulaire de contact via le forum , il faut qu'il redirige vers tonpluxml/index.php?staticX/contact (ou x est le numero de ta page statique contact) et il te faut alors passé les donné avec la methode post .
    ça c'est dans l'idée ou tu te sert d'une page statique.

    Si tu te sert du forum , alors renvoi ton formulaire vers le forum (attribut action de form)

    Enfin sans trop savoir comment tu as integré les deux , il faut que tu comprennes que pluxml se base sur $_GET pour affiché tel ou tel page , probable que ce soit la que tu ai un télescopage .

    GC


    Cordialement,
    gcyrillus

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • super_g2super_g2 Member
    février 2010 modifié
    hehe, très intéressant ça :)
    côté site web (donc pluxml, lequel est couplé au forum via le header précédent), j'aimerai utiliser le formulaire de recherche décrit dans le wiki et la page contact, donc via une page statique.
    le champ caché suivant (avec comme exemple "index.php?static2/rechercher" étant la page de l'action du formulaire de la recherche) est à mettre dans tous les formulaires du site (en théorie, dixit la doc de punBB) afin que ceux-ci puissent passer correctement la fonction de contrôle du token csrf imposé par les fonctions du forum (inclues par le include php vers commons.php (cf. mon header.php).
    <input type="hidden" name="csrf_token" value="<?php echo generate_form_token('index.php?static2/rechercher'); ?>" />
    
    donc, je vais essayer en mettant "index.php?staticX" pour voir, meme si je crois me souvenir avoir essayé :)

    voila, je pense que ça peut être plus clair, mais je ne vois pas comment reformulé de nouveau mes propos.
    merci

    edition : je te propose d'aller voir directement sur le site ;)

    edit2 : grosse correction dans la description de mon formulaire de recherche.
    le formulaire de contact fonctionne (malgré le fait de devoir valider l'authenticité csrf à la main..., essayez..
    par contre, la recherche non, conflit je pense avec une fonction de punBB... je verrai..
  • février 2010 modifié
    ha oki

    manque le / final dans ton url de l'attribut "action" : c'est : ?static2/ qu'il te faut et pas "?static2" .

    Si le bouton confirmation s'intercalle , j'imagine que ce n'est pas vraiment genant au final , si tes ton plux et ton punbb ont le même theme .

    Tu peut même a la rigueur te passer du capcha ou modifier ton fichier common php avec un filtre sur request_url , si la page demandé est contact ou recherche , alors : define('PUN_ALLOW_INDEX', 1); sinon config normal pour cette portion.

    ++


    Cordialement,
    gcyrillus

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • super_g2super_g2 Member
    février 2010 modifié
    ha oki

    manque le / final dans ton url de l'attribut "action" : c'est : ?static2/ qu'il te faut et pas "?static2" .

    Si le bouton confirmation s'intercale , j'imagine que ce n'est pas vraiment gênant au final , si tes ton plux et ton punbb ont le même thème .

    Tu peut même a la rigueur te passer du capcha ou modifier ton fichier common php avec un filtre sur request_url , si la page demandé est contact ou recherche , alors : define('PUN_ALLOW_INDEX', 1); sinon config normal pour cette portion.

    ++
    ah vi, pas mal ça ;)
    je vais retoucher commons.php et vous direz si ca marche ou pas (si oui, je mettrai la modif ici au ca où)
    enjoy


    ____________________________________________________________________________________
    edit : en passant, le fait de mettre"chemin/vers/mon/site/index.php?static2/" (en chemin relatif ça suffit) dans le champ input hidden du csrf permet au formulaire de recherche de fonctionner, malgré le contrôle tjs actif.

    ____________________________________________________________________________________
    edit 2 : là où c'est étonnant, c'est que le formulaire de commentaire fonctionne parfaitement lui, (je l'ai couplé au niveau des champs pour détecter et remplir le cas échéant avec les données adéquat, si l'user est membre et connecté). Pas de confirmation de token... :s

    ____________________________________________________________________________________
    EDIT 3 : solution (provisoire ?) j'ai légèrement contourné le problème avec la méthode de gcyrillus-nomade, c'est-à-dire en désactivant le contrôle du token quand je suis dans une page précise, à savoir ici la page contact ou la page recherche (toutes 2 de type statique).
    j'ai ajouté ce petit bloc en haut de ma page static.php, avant tout autre texte et surtout avant l'inclusion du header.php, dans mon thème :
    <?php if(($plxShow->staticId()==1) | ($plxShow->staticId()==2)) {
    	define("FORUM_SKIP_CSRF_CONFIRM", 1);
          };
    ?>
    
    Les pages Recherche et contact sont les static001 et static002 chez moi.
    Je dis "solution provisoire" car je ne suis pas convaincu de la sûreté d'une telle désactivation.
    voila ;)

    enjoy
Connectez-vous ou Inscrivez-vous pour répondre.