Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1799 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Injection des Titres dans title. au secours !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Injection des Titres dans title. au secours !

n°1687642
mkex64
Posté le 18-02-2008 à 06:24:38  profilanswer
 

Bonjour,
 
Je souhaites intégré sous phpBB un agrégateur de Flux RSS... Ca c'est fait. j'ai fait pas mal de modifs.
 
Et j'aimerais rewriter toutes les urls de celui ci.. Je n'ai pas encore commencé.
 
Pour le moment je "m'arrache les cheveux" pour tenter de mettre les titres des Rubriques + Nom des Flux dans le titre de la page (<title> ).
 
J'ai réussit déjà à mettre la pagination dans le titre de la page (Page1, Page2 etc...)
 
Mais là pour injecter les Noms des Rubriques et des Noms de Flux... Ce n'est pas facile pour moi.
 
Voici le début du code. C'est une page que j'ai nommé rss-actus.php avec en début le code de phpBB pour l'inclure à phpBB.
 
Le fichier :

Code :
  1. include('rss/config.php');


contient les infos de connexion à la BDD.
 
Et celui :

Code :
  1. include('rss/functions.php');


Les fonctions du script.
 
 

Code :
  1. <?php
  2. define('IN_PHPBB', true);
  3. $phpbb_root_path = './';
  4. include($phpbb_root_path . 'extension.inc');
  5. include($phpbb_root_path . 'common.'.$phpEx);
  6. //
  7. // Start session management
  8. //
  9. $userdata = session_pagestart($user_ip, PAGE_SEARCH);
  10. init_userprefs($userdata);
  11. //
  12. // End session management
  13. //
  14. make_jumpbox('viewforum.'.$phpEx);
  15. //
  16. // Lets build a page ...
  17. //
  18. $paginationtl = (@$_GET["deb"] != 0) ? ' - Page'  .( floor( (@$_GET["deb"] / '40') ) + 1 ) : '';
  19. $page_title = "Actualités, News du Web - RSS".$paginationtl;
  20. include($phpbb_root_path . 'includes/page_header.'.$phpEx);
  21. /*      Agrégateur RSS v1.0 - PHP4/MySQL
  22.       © Didier YVER 2004
  23.       http://www.ASP-PHP.net
  24. */
  25. include('rss/config.php');
  26. include('rss/functions.php');
  27. // Affichage
  28. ?>
  29.    <style>
  30.       td,input,select { font:normal 8pt Verdana }
  31.       i { font: normal 8pt Arial; color:gray }
  32.       A { text-decoration:none }
  33.       A:hover { text-decoration:underline }
  34.       .a { font:bold 8pt Verdana }
  35.       .stabilo { background:yellow }
  36.    </style>


 
 
 
Il faudrait, je pense, que je récupère les noms de rubrique et Titre depuis la BDD mais le problème c'est que les balises title sont dans :  
 

Code :
  1. include($phpbb_root_path . 'includes/page_header.'.$phpEx);


et si je met les infos de connexions à la BDD du script RSS avec les requetes SQL, ça chamboule tout les connexions à la BDD de phpBB...
 
Alors avec mes 5% de connaissance en php je ne vois pas comment c'est possible de faire ça.
 
Merci pour votre aide.
 
Si, pour m'aider, vous avez besoin d'autres informations ou des fichiers... Je vous les fournirez.
 
Je n'ai pas de lien aussi parce que je travail en local.


Message édité par mkex64 le 18-02-2008 à 07:48:11

---------------
http://www.unicornis.org/
mood
Publicité
Posté le 18-02-2008 à 06:24:38  profilanswer
 

n°1687650
esox_ch
Posté le 18-02-2008 à 08:05:29  profilanswer
 

Je suis pas sur d'avoir compris ton problème.. Mais effectivement si t'inclu les directives de connexion a la base de donnée des rss. ca va te changer celle de phpbb. Donc ce que tu dois faire c'est te connecter en 1er lieu (en haut de ton script) a celle RSS, tu stoques ce que tu as besoin dans un variable, et après tu ouvres celles phpbb (qui donc fermera celle rss). Tu ne pourras plus executer de requetes sur celle rss, donc faut bien sortir toutes les info que t'as besoin avant..


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1687677
mkex64
Posté le 18-02-2008 à 10:08:18  profilanswer
 

Merci esox_ch :)
 
J'ai réussit à faire se que je voulais en mettant les infos de connexions à la BDD des RSS puis ensuite les requêtes SQL pour récupérer le Titre, noms des RSS et mettre ça dans la variable $page_title, avec des if else et tout ce qu'il faut. (car il y a 3 conditions Rubrique, Titre RSS, page accueil) + la pagination dans le title.
 
Puis après tout ça j'ai mis les infos de connexion BDD de phpbb avec le header de celui-ci et ensuite j'ai remis les infos de connexions BDD des RSS avec tout le reste du script.
 
C'est impeccable.
 
Encore Merci.


Message édité par mkex64 le 18-02-2008 à 10:11:49

---------------
http://www.unicornis.org/
n°1688045
mkex64
Posté le 18-02-2008 à 18:39:07  profilanswer
 

Bon voilà j'ai presque terminé le Rewriting des URL, j'ai juste un petit problème.
 
J'ai certains accents qui ne passent pas à la fonction format_url de phpBBSEO :
 

Code :
  1. function format_url( $url, $type = 'topic' ) {
  2.  $url = strip_tags($url);
  3.  $url = htmlentities($url, ENT_COMPAT, $this->encoding);
  4.  $url = preg_replace( "`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i","\\1", $url );
  5.  $url = preg_replace('`&(amp;)?#?[a-z0-9]+;`i','-',$url);
  6.  $url = preg_replace( array("`[^a-z0-9]`i","`[-]+`" ) , "-", $url);
  7.  $url = ( $url == "" ) ? $type : strtolower(trim($url, '-'));
  8.  return $url;
  9. }


 
 
exemple :
 
- Le titre :
Une édition spéciale pour The Witcher
- l'URL :
http://www.unicornis.org/une-ditio [...] -n344.html
 
 
Et d'autres qui passent très bien, toujours sur la même page :
- Le titre :
Arecibo découvre le premier système triple d'astéroïdes
- l'URL :
http://www.unicornis.org/arecibo-d [...] -n345.html
 
 
Voici le code qui crée ces liens :
 

Code :
  1. $news_url = $phpbb_seo->format_url(smart_utf8_decode($val["titre"])).'-n'.$val["ID"].'.html';
  2.   echo "class=a href='".$news_url;
  3.          } else {
  4.             // si c'est un news à description sélectionnée, stabilote
  5.             if(@$_GET["news"]==$val["ID"]) echo "class=stabilo ";
  6.             // lien vers le site
  7.             echo "target='_blank' href='".$val["lien"];
  8.          }
  9.          echo "'>".smart_utf8_decode($val["titre"])."</A>
  10.             <i>[".$val["titre2"]."]</i>


Message édité par mkex64 le 18-02-2008 à 20:49:01

---------------
http://www.unicornis.org/
n°1688083
mkex64
Posté le 18-02-2008 à 20:28:12  profilanswer
 

Je devrais peut être ouvrir un nouveau sujet non ? Parce que le problème et tout autre...


---------------
http://www.unicornis.org/
n°1688141
esox_ch
Posté le 19-02-2008 à 02:01:51  profilanswer
 

A mon sens tu devrais juste fusiller l'accent pour pas l'avoir dans l'URL, parce à mon sens ça apporte rien d'autre que des emmerdes ..

n°1688153
mkex64
Posté le 19-02-2008 à 06:31:59  profilanswer
 

Bonjour,
 
Merci, mais la fonction format_url est la pour virer les accents normalement avec :
 

Code :
  1. $url = preg_replace( "`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i","\\1", $url );


 
D'ailleur dans le deuxième exemple d'URL que j'ai mis les accents et tilde (é,è,',é,¨,) sont bien remplacés.
 
Seul certains, provenant de certains Flux RSS ne passent pas bien au format_url.
 
Et comme je le dis je pense à un problème d'encodage, suivant l'encodage de caractère de certains Flux.
 
En fait ce sont les Flux RSS de clubic qui passe mal. (les titres injectés dans l'URL)
Le flux RSS de futura-science est encodé en UTF-8
celui de PC-Inpact en ISO-8859-1
Et celui de Clubic en ISO-8859-1 je crois ??? Puisque si j'enlève la fonction smart_utf8_decode ça passe bien...
 
Ce qui est bizarre c'est que les accents sont bien affichés sur la page. C'est seulement dans l'url que ça ne passe pas.


Message édité par mkex64 le 19-02-2008 à 10:35:27

---------------
http://www.unicornis.org/
n°1688759
mkex64
Posté le 19-02-2008 à 17:31:33  profilanswer
 

Bon j'ai trouvé le problème. Ca venait du Flux RSS de Clubic qui contient des caractères accentués sous forme d'entités html numériques.
 
Voilà un exemple d'un titre de la source du Flux :

Code :
  1. Microsoft : des outils de d&#233 ;veloppement gratuits


Edit : j'ai mis un espace entre 233 et ; car sinon ça convertit automatiquement en é.
 
 
En cherchant des fonctions j'ai trouvé :
 

Code :
  1. function numericentitieshtml($str){
  2.   return preg_replace('/&#(\d+);/e', 'chr(str_replace(";","",str_replace("&#","","$0" )))', $str);
  3. }


 

Code :
  1. $titre_url= smart_utf8_decode($val["titre"]);
  2. $titre_url = numericentitieshtml($titre_url);
  3. $news_url = $phpbb_seo->format_url($titre_url).'-n'.$val["ID"].'.html';


 
Ceci fonctionne parfaitement ==>> http://www.unicornis.org/rss-actualites-news.html
 
 :D  Merci.


---------------
http://www.unicornis.org/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Injection des Titres dans title. au secours !

 

Sujets relatifs
[opera] problème avec attribut titlesurvol d'un lien, apparition decalee d'une image, au secours !!!!
Au secours de mes Z-index !VBA 2007 et INET: serveur OLE introuvable... Au secours !
Procédures Stockées et SQL Injectiontaille d'un ALT et Title
[HIBERNATE] Table d'association avec element !! Au Secours :D[HIBERNATE] Table d'association avec element !! Au Secours :D
OpenSSL - AU SECOURS !!!!Webcreator OK, mais petite modif dans TITLE
Plus de sujets relatifs à : Injection des Titres dans title. au secours !


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)