Xavfun Posté 14 Juillet 2005 Posté 14 Juillet 2005 Hello, Je viens d'ouvrir un annuaire, mais la fonction recherche donne un résultat plutôt étrange. Bug n°1 si je lance la recherche "webmaster hub" voici ce que j'ai comme réponse : Site(s) trouvé(s) : 1 à 1 <b>Webmaster</b> <b>Hub</b> - Le Forum du <b>Webmaster</b> Forum <b>Webmaster</b> <b>Hub</b> - Le forum des <b>webmaster</b>s professionnels... Le premier Forum professionnel pour <b>webmaster</b> qui vous aide pour la création, l'hébergement, ... => Catégorie : liens utiles entre le <b> et </b> je devrais avoir le mot en gras, mais ça met juste les balises. dans le fichier fonction.php il y a la fonction function affiche_site et j'ai trouvé la fonction qui doit correspondre à ça : function keyword_in_bold($mots,$chaine)//met en gras les mots cles pour les resultats du moteur de recherche{ return eregi_replace($mots,"<b>\\0</b>",$chaine); } mais je vois pas de balise non fermée Une idée ? ------------------------- Bug n°2 Si on met plus de 255 caractères pour la description du site, on a un message d'erreur et on a une phrase indiquant : Votre description fait 303 caractères et le maximum autorisé est 255 caractères <a href="javascript:history.go(-1);">retour au formulaire</a> alors qu'on devrait avoir la possibilité de cliquer sur le lien "retour au formulaire" => c'est encore dans le fichier fonction.php mais je ne vois pas non plus le problème => mais peut-être est-ce le même soucis ?
lupucide Posté 14 Juillet 2005 Posté 14 Juillet 2005 (modifié) Salut, Dans le premier cas, comment sont affichées les balises dans la source, en dur <b> ou <b> ? Deuxième cas, il me semble que l'attribut maxlength permet de contrôler le nombre de caractères d'un champ texte de type <input /> ou <textarea>. Modifié 14 Juillet 2005 par lupucide
Xavfun Posté 15 Juillet 2005 Auteur Posté 15 Juillet 2005 c'est affiché en <b> l'annuaire est visible sur http//www.annuaire-fun.com
lupucide Posté 15 Juillet 2005 Posté 15 Juillet 2005 (modifié) Dans le onmouseover, il faudrait peut-être remplacer les balises par des entités. Dans le <span class="description_site_annuaire"> ces mêmes balises sont déjà des entités. Modifié 15 Juillet 2005 par lupucide
Eclipsis Posté 15 Juillet 2005 Posté 15 Juillet 2005 Xav, le lien dans ton dernier message n'est pas valide, tu as mis un "http//" de trop Concernant ton problème, ça ne vient pas de la fonction keyword_in_bold, puisque toutes les autres balises (pas juste <b>) sont traitées comme du texte et non du code html. A priori donc, tes deux problèmes sont liés, et seront peut-être accompagnés d'autres bugs que tu n'as pas encore remarqué dans ton annuaire. Difficile de dire d'où ça vient... Si tu ne trouves pas, envoie-moi par MP ton fichier function.php, que je compare avec celui d'un annuaire qui n'a pas ce problème A+
Lurch Posté 15 Juillet 2005 Posté 15 Juillet 2005 Ton script d'annuaire utilise une base de données MySql ? Si oui, il y a possibilité de paramétrer la longueur du champ "description" en lui attribuant, par exemple, la valeur fulltext si ma mémoire est bonne. Enfin je ne suis pas spécialiste en BDD mais sur MéTéOU j'ai modifié la base pour un des champs qui a maintenant une quantité illimitée de caractères (C'est un champ que je suis seul à renseigner). Je peux retrouver le truc si tu as besoin. Mais bon, ça n'empêche qu'il y a effectivement un bug mais je n'utilise pas ce scrtipt.
Xavfun Posté 16 Juillet 2005 Auteur Posté 16 Juillet 2005 C'est bon ça marche grâce à Eclipsis en principe on ne montre pas du doigt, mais là, c'est pour la bonne cause. Voici ce qu'il m'a dit en regardant le code du fichier fonction.php : A mon sens, c'est un abus de htmlspecialchars dans le code-source et non une présence de caractères spéciaux dans celui-ci.Par exemple, echo htmlspecialchars($resultat["titre"]) devrait être remplacé par echo $resultat["titre"]... Et il m'a envoyé le fichier corrigé, et les 2 "Bugs" sont corrigés (si vous avez le même soucis, faites moi signe je vous envoie le mien) Egalement merci à Jan, voici ce qu'il avait remarqué dans le code : De mémoire c'est dans le fichier functions.php, la fonction affiche_site(), il y a des balises <b> au lieu de <b> qui trainent. Tout ça est résolé, merci à tous et en espèrant que ça puisse en aider d'autres
Gribouille26 Posté 18 Juillet 2005 Posté 18 Juillet 2005 Salut, J'ai le même problème. Mais Xav' a la solution avec un annuaire rewrité, et le mien ne l'est pas. Pouvez-vous m'expliquer comment faire !? Merci Gribouille
hcplayer Posté 18 Juillet 2005 Posté 18 Juillet 2005 enlève le htmlentites() ou le htmlspecialchars devant la description et fait une fonction perso à la place qui ne modifie pas les "<" et les ">", d'ailleurs, le mieux est de les supprimer purement et simplement
Gribouille26 Posté 18 Juillet 2005 Posté 18 Juillet 2005 D'accord, merci! ....mais j'ai pas tout compris là.... Gribouille
Dudu Posté 18 Juillet 2005 Posté 18 Juillet 2005 Salut, htmlentities() et htmlspecialchars() sont des fonctions PHP qui encodent tous les caractères qui peuvent servir en HTML. Ainsi, des lettres telles que "a" ou "b" ne vont pas être modifiées, mais des chevrons > ou des esperlettes & oui Les exemples de la doc PHP sont très simples à comprendre: function htmlspecialchars function htmlentities En gros, le problème dans MyPhpAnnuaire, ce sont les balises <b> qui passent dans un htmlspecialchars() non désiré et qui ressortent donc sous la forme <b>
Eclipsis Posté 18 Juillet 2005 Posté 18 Juillet 2005 C'est bon ça marche grâce à Eclipsis En principe on ne montre pas du doigt, mais là, c'est pour la bonne cause. J'aurais jamais cru que je remercierai quelqu'un pour m'avoir montré du doigt (<private chocoku joke> et les doigts Xav, ça le connait </private joke>)Ce qui est étrange avec ce bug, c'est que ça doit venir d'une version récente de MyPHPAnnuaire, vu qu'avec la vieille version (vieille de 12-15 mois), il n'y avait pas ce problème... Gribouille, même proposition que pour Xav, si tu galères vraiment trop, envoie-moi ton fichier functions.php, je te corrigerai ça! (du moment que tu me montres du doigt après ). Allez A+
Gribouille26 Posté 18 Juillet 2005 Posté 18 Juillet 2005 Salut, htmlentities() et htmlspecialchars() sont des fonctions PHP qui encodent tous les caractères qui peuvent servir en HTML. Ainsi, des lettres telles que "a" ou "b" ne vont pas être modifiées, mais des chevrons > ou des esperlettes & oui Les exemples de la doc PHP sont très simples à comprendre: function htmlspecialchars function htmlentities En gros, le problème dans MyPhpAnnuaire, ce sont les balises <b> qui passent dans un htmlspecialchars() non désiré et qui ressortent donc sous la forme <b> <{POST_SNAPBACK}> Merci Dudu ! Je vais plancher là-dessus demain matin... Gribouille, même proposition que pour Xav, si tu galères vraiment trop, envoie-moi ton fichier functions.php, je te corrigerai ça! (du moment que tu me montres du doigt après ). Allez A+ <{POST_SNAPBACK}> Merci pour la proposition !! Je pense à toi au besoin... Gribouille
Gribouille26 Posté 19 Juillet 2005 Posté 19 Juillet 2005 enlève le htmlentites() ou le htmlspecialchars devant la description et fait une fonction perso à la place qui ne modifie pas les "<" et les ">", d'ailleurs, le mieux est de les supprimer purement et simplement <{POST_SNAPBACK}> C'est ce que j'ai fait dans le fichier functions.php. J'ai juste supprimé le htmlspecialchars sans rien mettre d'autre à la place... L'affichage est bon. J'espère que ça ne va pas poser de problèmes !??? J'ai aussi le deuxième bug de Xav' avec le lien qui est mal affiché.... Ca doit venir de cette ligne: $message .= "<a href=\"javascript:history.go(-1);\">retour au formulaire</a>\n"; Gribouille
hcplayer Posté 19 Juillet 2005 Posté 19 Juillet 2005 Le problème que cela peut poser est qu'il te faut vérifer à chaque fois le contenu des descriptions entrées par tes utilisateurs afin qu'ils n'insérent pas de code, ça me paraît limite impossible, en revanche, tu ferais bien de faire une fonction pour les codes des caractères à accents. Comme j'en ai une, je te la donne : function ascii($mots){ $bien = array('é','è','ê','ë','à','â','ï','î','ô','ù','û','ç'); $pas_bien = array('é','è','ê','ë','à','â','ï','î','⊚','ù','û','ç'); $asc = str_replace($pas_bien,$bien,$mots); return $asc;}; Je ne sais pas si j'en ai oublié, mais enfin, voila Pour le reste, je ne connais pas phpmyannuaire pour te répondre bonne chance
Gribouille26 Posté 19 Juillet 2005 Posté 19 Juillet 2005 OUlàlà!!! Ca y est je suis perdue... Une nouvelle fonction !! Je ne sais pas où la mettre.... Gribouille
Eclipsis Posté 19 Juillet 2005 Posté 19 Juillet 2005 Pourquoi, ça ne marche pas après tes modifs? Quels sont les symptomes?
Gribouille26 Posté 19 Juillet 2005 Posté 19 Juillet 2005 Ca marche très bien. Je demandais juste si ça n'allait pas poser de problèmes... Mais visiblement si ! Et le premier c'est que je ne vois pas où mettre cette fonction... Gribouille
hcplayer Posté 19 Juillet 2005 Posté 19 Juillet 2005 si il y a un fichier functions.php ou un truc de ce genre, tu copies colle ce code dedans, sinon tu copies colles ça dans un nouveau fichier, en ajoutant require_once('chemin vers ton fichier') partout. ensuite, tu la plaque sur la description des sites (anciennement avec htmlentities ou htmlspecialchars) de manière à donner un truc du genre : echo ascii($tableau['description']); anciennement : echo htmlspecialchars($tableau['description']); voila, je pense avoir été explicite
nono Posté 22 Avril 2006 Posté 22 Avril 2006 Wow, je vais réveiller un sujet qui date aparemment Eh bien j'ai le même problème, mais le truc c'est que je ne sais vraiment rien en php. Alors comme Xavfun s'est proposé d'envoyer le fichier corrigé, je me suis demandé si il l'avait encore... Voilà, c'était mon premier message sur ce forum... Nono
CeM38 Posté 25 Avril 2006 Posté 25 Avril 2006 (modifié) Bonjour, Même problème ... A l'aide !!! Modifié 25 Avril 2006 par CeM38
nono Posté 26 Avril 2006 Posté 26 Avril 2006 Au fait Cem38, tu t'y conais un peu en php ou pas ? Moi pas du tout, mais bon, j'apprendrai sur le tas Tu as installé quelle script le dernier (appelé maintenant Categorizor) ou l'ancient (phpMyAnnuaire). J'ai regardé le script functions.php du dernier, et apparemment, il n'y a rien de changé. Je ne sais pas pourquoi chez eux ça marche et pas chez moi. Et soit dit en passant, il y a plein de trucs qui ne sont plus valides dans leur code... mais bon... je modifie au fur et à mesure. Il finira bien par passer la validation du W3C. Voilà ! PS : je crie toujours à l'aide. Sur le forum de l'éditeur, il n'y a jamais personne, et mon post reste sans réponse... dommage.
CeM38 Posté 26 Avril 2006 Posté 26 Avril 2006 Salut nono, J'ai la dernière version MyPHPAnnuaire. Et je ne connais pas grand chose à PHP. Je n'ai pas remerqué d'autres probleme que celui des <b> dans le mode recherche.
nono Posté 27 Avril 2006 Posté 27 Avril 2006 Je n'ai pas remerqué d'autres probleme que celui des <b> dans le mode recherche. Essaye de faire une proposition de site dans l'annuaire en faisant des erreurs. Normalement, quand tu valides, il te dit quelles sont tes erreurs et te propose de revenir à la page précédente avec un lien. Essayes d'enregistrer un site sans entrer d'url. Normalement, ça doit afficher un truc du genre Votre url ne peut être vide !<br /><br /> <a href="java script:history.go(-1);">Retour au formulaire</a> Mais ce que l'on veut, c'est le lien et pas le code source Essayes et dit-moi si c'est pareil chez toi.
nono Posté 27 Avril 2006 Posté 27 Avril 2006 (modifié) Yo, ça y est CeM38, j'ai compris !! en fait, c'est tout con, mais quand on ne connait rien en php on ne sait pas quoi faire. Dans le fichier functions.php, remplace la ligne echo htmlspecialchars($resultat["titre"]) par echo $resultat["titre"] En ce qui concerne les erreurs de lien d'entrée du formulaire (y'a pas que pour l'url, mais pour d'autres entrées aussi, je ne sais plus lesquelles, essayes-les), à l'endroit où ça plante (que tu repères avec la phrase qui va avec), remplace le echo htmlspecialchars($message) par echo $message Sinon, envoie-moi ton fichier functions.php, je vérifierai pour toi Modifié 27 Avril 2006 par nono
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant