Version complète: sur le forum Webmaster Hub : MyPHPAnnuaire : bug dans la recherche et retour
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Xavfun
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 :

CITATION
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 :

CODE
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 huh.gif
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 :

CODE
Votre description fait 303 caractères et le maximum autorisé est 255 caractères <br><br> <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
Salut,

Dans le premier cas, comment sont affichées les balises dans la source, en dur <b> ou &lt;b&gt; ?

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>.
Xavfun
c'est affiché en <b>

l'annuaire est visible sur http//www.annuaire-fun.com
lupucide
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.
Eclipsis
Xav, le lien dans ton dernier message n'est pas valide, tu as mis un "http//" de trop smile.gif
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 wink.gif
A+
Lurch
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
C'est bon ça marche grâce à Eclipsis smile.gif

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 :

CITATION
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 :

CITATION
De mémoire c'est dans le fichier functions.php, la fonction affiche_site(), il y a des balises &lt;b&gt; 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
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
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 wink.gif
Gribouille26
D'accord, merci!
....mais j'ai pas tout compris là.... blush.gif

Gribouille
Dudu
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 wink.gif

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 &lt;b&gt; wink.gif
Eclipsis
CITATION(Xavfun @ samedi 16 juillet 2005, 19h29)
C'est bon ça marche grâce à Eclipsis smile.gif

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 laugh.gif (<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
CITATION(Dudu @ lundi 18 juillet 2005, 18h48)
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 wink.gif

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 &lt;b&gt; wink.gif
*

Merci Dudu !
Je vais plancher là-dessus demain matin...

CITATION(Eclipsis @ lundi 18 juillet 2005, 19h14)
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+
*

Merci pour la proposition !! blush.gif
Je pense à toi au besoin...

Gribouille
Gribouille26
CITATION(hcplayer @ lundi 18 juillet 2005, 17h41)
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 wink.gif
*

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... unsure.gif
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:
CODE
$message .= "<a href=\"javascript:history.go(-1);\">retour au formulaire</a>\n";

Gribouille
hcplayer
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 :

CODE
function ascii($mots){
    $bien = array('&eacute;','&egrave;','&ecirc;','&euml;','&agrave;','&acirc;','&iuml;','&icirc;','&ocirc;','&ugrave;','&ucirc;','&ccedil;');
    $pas_bien = array('é','è','ê','ë','à','â','ï','î','&ocir;','ù','û','ç');
    $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 smile.gif

bonne chance wink.gif
Gribouille26
OUlàlà!!! Ca y est je suis perdue... :gueule:
Une nouvelle fonction !!
Je ne sais pas où la mettre.... blush.gif

Gribouille
Eclipsis
Pourquoi, ça ne marche pas après tes modifs?
Quels sont les symptomes? smile.gif
Gribouille26
Ca marche très bien.
Je demandais juste si ça n'allait pas poser de problèmes... whistling.gif
Mais visiblement si !
Et le premier c'est que je ne vois pas où mettre cette fonction...

Gribouille
hcplayer
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
CODE
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 :

CODE
echo ascii($tableau['description']);

anciennement :

CODE
echo htmlspecialchars($tableau['description']);


voila, je pense avoir été explicite wink.gif
nono
Wow, je vais réveiller un sujet qui date aparemment biggrin.gif

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... rolleyes.gif

Voilà, c'était mon premier message sur ce forum... smile.gif

Nono
CeM38
Bonjour,

Même problème ...
A l'aide !!! blink.gif
nono
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. rolleyes.gif

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
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
CITATION(CeM38)
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

CITATION
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
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 wink.gif
CeM38
Merci nono,
Je vais regarder ça
CeM38
Bon, bin ça marche pas ...
Nono, je t'ai envoyé un MP
cs3
En suivant les indications j'ai réussi à résoudre les problèmes de texte gras pour les résultats de recherche et la longueur du texte pour la description des sites, en résumé :

Pour les balises <b></b> qui s'affichent au lieu de mettre le texte en gras :
1 - Il faut donc ouvrir le fichier functions.php

2 - ligne 58 : remplacer htmlspecialchars($resultat["titre"]) par echo $resultat["titre"] pour les titres

3 - et ligne 97 : remplacer htmlspecialchars($resultat["description"]) pour la description des sites

Pour pouvoir entrer un texte plus long dans la description des sites :

1 - Ouvrir le fichier admin_annuaire.php

2 - ligne 62 : remplacez 255 par le nombre de caractères voulus :
est_trop_long($description,255,"Votre description");
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.