OVH Cloud OVH Cloud

Forum PHP en HTML et CSS moderne

24 réponses
Avatar
Sebastien
Bonjour,

Je cherche un forum qui produirait du HTML valide (HTML 4.01 strict
serait l'idéal) et séparant structure et présentation (CSS).

J'ai regardé PHPBB (rapidement) et Lussumo (un peu plus) mais aucun ne
produit vraiment du HTML/CSS sémantique et propre (à mon goût).

Je me demande vraiment si ça existe. La liste de scripts de forums est
longue donc si quelqu'un sait de quoi je parle...

Je cherche quelque chose de très simple, voire basique.

Sébastien

10 réponses

1 2 3
Avatar
John GALLET
2) ça se code (de manière
sécurisée) en 30 minutes avec 1 seule table (voire deux si on veut
avoir un accès avec login/pass).

Je maintiens. Le codage c'est du PHP. Y'en a pour 30 minutes pour un


développeur moyen/standard.

Bien sûr ! Avec la bonne convivialité des machins atroces que l'on
voyait il y a 10 ans.
L'ergonomie et la convivialité sont ce qui a permis à internet de se
démocratiser.


1) qu'est-ce qu'une plateforme ergonomique ?

2) qu'est-ce qu'une plateforme conviviale ?

3) qu'est-ce que ça a à voir avec PHP qui ne fait pas de l'affichage (à
part du <?php echo $toto;?> mais du codage de la logique de l'application ?

a++;
JG


Avatar
Sebastien
Au passage je te rappelle que ma demande concernait avant tout la
qualité du HTML produit (HTML 4.01 strict étant le graal),



Quel rapport avec PHP ? Je parle de programmation, pas de rendu
(séparation code/présentation, tout ça...)


plus complète séparation possible entre structure et présentation
(avec CSS).


Donc PHP N'a rien à voir dans cette partie là.


Oui ici c'est un forum PHP et pas un forum dédié à HTML et CSS.

Mais PHP sert à produire du HTML.

HTML est sensé être utilisé pour définir la structure des données et la
présentation est sensée être laissée à CSS.

Donc je cherchais un forum codé en PHP mais avec certaines exigences
côté HTML.

Et ça a tout à voir avec PHP, parce que produit du HTML.

Quant à ton exemple de BB, je ne peux pas l'utiliser car il manque...
tout. Ce dont j'avais besoin c'était d'un script (ensemble de fichiers)
où je n'ai qu'à insérer mes infos de connexion à MySQL, envoyer le tout
sur le serveur, et administrer, sans avoir à réinventer la roue, puisque
les interfaces sont maintenant suffisamment standardisées pour qu'un
webmaster de base prenne la chose en main sans lire la doc.

Dans ton script il manque HTML et CSS, une des composantes du problème,
indissociable de PHP. Nous ne sommes pas non plus sur un forum MySQL.

Sébastien


Avatar
loufoque

J'utilise en validation d'input la fonction que je donne en exemple dans
les docs que je diffuse sur www.saphirtech.com, en interdisant sans
réfléchir tout tag HTML avec strip tags, ou en traduisant toutes lse
entitées html.On peut ici utiliser les sessions natives PHP pour ne pas
se trimballer le login/pass dans toutes les requêtes.


Réaction typique à des concepts de base :
Sécurité à outrance pour corriger des failles qui n'en sont pas. Il faut
juste adapter les données au support.

On insère les données dans une requête SQL => on s'assure qu'on fait
cela correctement pour que la syntaxe soit bonne. Effectivement, la
simple insertion de la chaîne au milieu de la requête ne marche pas.
Le meilleur moyen de faire cela est effectivement d'utiliser un genre de
prepared statements, ce qui ne se limite pas aux SGBDs les supportant
nativement.

On insère les données dans un document HTML => on transforme les données
en noeud texte HTML, ou alors ou fait un autre traitement plus
intelligent pour utiliser des éléments pour texte riche.

Du simple bon sens, et pas d'injections SQL ni de XSS.
La même logique s'applique aux autres problèmes.

Apparemment, au moment de récupérer les données extérieures, tu
conseilles de leur ajouter des slashes, encoder leurs caractères
spéciaux HTML et tout un tas d'autres caractères, enlever les caractères
dits "dangereux" (non seulement ils ne le sont pas, mais ils pourraient
avoir été saisis simplement pour être affichés comme corps du
message)... cela ne fait que corrompre les données et les rendre
encodées en un format difficilement manipulable.
Bref, impossible d'utiliser correctement les fonctions de traitement de
chaînes que ce soit en PHP ou SQL.

Ah oui, autre chose : à ma connaissance, le spoofing d'IP n'est pas
possible avec TCP. Aurais-tu plus d'informations à ce sujet ?


Il est 14h18, soit 8 minutes pour écrire ça.


Oui enfin, soyons honnêtes, c'est pas la fête.
Ça fait plus livre d'or du site à neuneu.

Déjà les tables, il faudrait, selon moi :
users : définition des utilisateurs
groups : définition des différents groupes, et de leur droits
(facultatif, on peut faire ça en dur, mais ça limite en fonctionnalité)
forums : arbre des forums et sous-forums
messages : arbre des messages et de leurs réponses

Personnellement j'aime l'idée de lier les messages aux forums via une
table supplémentaire, ce qui permet de lier les messages à plusieurs
forums en même temps en divers points (pratique pour le cross-post et le
fu2, car on manipule le même message et pas une copie).

Autre chose : les arbres sous forme de listes adjacentes, en SQL, c'est
pas terrible. Pas terrible du tout même pour cette utilisation je dirais.
Mieux vaut utiliser un bon format d'arbre comme les Nested Sets sur
lequel on pourra faire des modifications avec des classes adaptées.

Pour la modération, je préfère donner à chaque utilisateur et à chaque
groupe des droits.
Un truc un peu comme les droits UNIX me semble sympa.


Un peu de PHP autour


Rien qu'avant de commencer à écrire la moindre ligne, il faut créer le
framework de l'application.
Cela inclue les bibliothèques d'accès aux SGBDs, la sortie HTTP (cache,
négociation, compression), le cache serveur (pas hyper efficace pour un
forum mais bon c'est un truc usuel), la gestion d'Unicode pour
l'internationalisation, la localisation, la configuration, un moteur de
sessions plus adapté que celui de PHP, un moteur de rendu pour convertir
du texte brut en texte html selon une certaine syntaxe pour l'enrichir,
et d'autres utilitaires divers comme par exemple des bibliothèques pour
créer et envoyer des mails, enrichis ou non, etc.
Ensuite il faut organiser le code en commençant par choisir quel
composant appeler en fonction de l'URI appelée (de nos jours on utilise
beaucoup les "smart URIs") puis dans le composant lui-même séparer le
code métier du code de structure et d'interface par l'utilisation de
gabarits.

On voit tout de suite pas mal de composants nécessaires :
- liste des forums et de leurs fils
- affichage d'un fil, plusieurs vues possibles
- affichage d'un message
- composition d'un message
- afficher un profil utilisateur
- effectuer une recherche
- connexion/enregistrement
- configuration de son compte personnel
Bien sûr, c'est personnalisable en fonction des types de vues que l'on
souhaite et de l'approche du forum quant à la conceptualisation des
discussions (discussion par fil ou discussion linéaire).

Tout cela sans compter l'administration et l'assistant d'installation.

Pour bien faire, il faudrait aussi prévoir différentes APIs pour
permettre à l'utilisateur d'ajouter de petites fonctionnalités sans
foutre le bordel, mais cela dépend en partie des composants.

Il faut aussi créer un design pas trop moche via CSS pour que le forum
soit agréable à utiliser.

À moins de réutiliser du bon code déjà développé (et le bon code php est
rare), y'en a pour plus de 22 minutes.
Je rappelle que le but n'est pas de faire un script, mais un forum
fiable, évolutif, maintenable et utilisé par de nombreuses personnes.

Avatar
Sebastien
Whoaaaa, merci loufoque c'est un peu ce que je pensais mais je n'ai pas
le niveau pour l'expliquer aussi clairement.

As-tu un avis sur PunBB (si tu connais) ?


Sébastien
Avatar
John GALLET
Oui ici c'est un forum PHP et pas un forum dédié à HTML et CSS.
On est bien d'accord.


Mais PHP sert à produire du HTML.
Non.

1) PHP *peut* servir à produire du HTML
2) il vaut mieux pour séparer les choses que PHP remplisse des
"placeholders" dans des fichiers HTML/etc...

HTML est sensé être utilisé pour définir la structure des données et la
présentation est sensée être laissée à CSS.
Ne jouons pas avec les mots : HTML ou CSS je m'en fous, on définit des

zones dynamiques dans ce qu'il faut et PHP les remplace par leur bonne
valeur.

Donc je cherchais un forum codé en PHP mais avec certaines exigences
côté HTML.
Libre à toi. Ce que j'en ai dit, c'est que la partie PHP se code en deux

coups de cuillère à pot.


Et ça a tout à voir avec PHP, parce que produit du HTML.
Non.


Quant à ton exemple de BB, je ne peux pas l'utiliser car il manque...
tout.
J'ai juste décortiqué un problème basique en donnant une solution

basique. C'est tout.

Dans ton script il manque HTML et CSS,
Cette phrase est une horreur. Non seulement je n'ai pas écrit de

scripts, mais ni HTML ni CSS ne sont des scripts.


une des composantes du problème, indissociable de PHP.
Une des composantes hors charte de ton problèe, qui n'a rien à voir avec

PHP.

Nous ne sommes pas non plus sur un forum MySQL.
PHP ne fera que de l'interaction bête avec un SGBD. Si je ne te donne

pas un exemple de schéma, on va pas aller bien loin.
a++;
JG

Avatar
John GALLET
Réaction typique à des concepts de base :
Sécurité à outrance pour corriger des failles qui n'en sont pas.


Sécurité à outrance, je revendique, selon un principe de base bien
établit "better safe than sorry". Quant aux failles qui n'en sont soit
disant pas je te conseille vivement d'aller faire un tour sur
fr.comp.securite (modéré) avant de continuer à nous exposer ta science,
qui n'en est pas non plus. Il y a là-bas des gens très bien et
d'ailleurs beaucoup plus compétents que moi à ce sujet qui sont prêts à
t'expliquer en quoi ce sont des failles si tu leur demandes gentiment
(et pas avec ta superbe habituelle, ils n'aiment pas trop être pris à
rebrousse poil).

Le meilleur moyen de faire cela
Un moyen de faire cela. Je crois d'ailleurs que j'ai oublié d'en causer,

j'ai des modifs à intégrer encore.

On insère les données dans un document HTML => on transforme les données
en noeud texte HTML,
Bah voyons. Et puis on fait aussi appel à trois couches dom-xml et 2

validations de DTD pour faire un printf("<B>coucou</B>n");

Apparemment, au moment de récupérer les données extérieures, tu
conseilles de leur ajouter des slashes,
Non. D'échapper les caractères dangereux pour le SGBDR, qui, comme tu le

sais car tu le rappelles régulièrement, ne s'échappent pas de la même
manière. Ton problème est très simple : ou tu ne sais pas lire ou tu lis
ce qui t'arrange.

encoder leurs caractères spéciaux HTML
Oui.


et tout un tas d'autres caractères, enlever les caractères
dits "dangereux"
T'as lu ça où ? Tu n'as toujours rien compris à un principe de base : si

la donnée que je reçois est censée être un ENTIER, elle n'a pas de
raisons de contenir autre chose que des chiffres, POINT BARRE.
Généralisable à tout type fonctionnel de données.


(non seulement ils ne le sont pas, mais ils pourraient
avoir été saisis simplement pour être affichés comme corps du
message)...
Tu parles, comme d'habitude, dans le vide. Ou ces caractères n'ont RIEN

A FOUTRE dans le type focntionnel de données où ils sont et on les vire,
ou alors de toutes façons, ils seront bien *affichés* (quelle que soit
leur forme de stockage).

cela ne fait que corrompre les données et les rendre
encodées en un format difficilement manipulable.
On s'en branle, on va ***pas*** les manipuler.


Bref, impossible d'utiliser correctement les fonctions de traitement de
chaînes que ce soit en PHP ou SQL.
Deuxième édition : on s'en branle.


Ah oui, autre chose : à ma connaissance, le spoofing d'IP n'est pas
possible avec TCP. Aurais-tu plus d'informations à ce sujet ?


Plaît-il ? Quel rapport avec une quelconque choucroute ? Si tu veux
savoir comment on peut jouer avec ARP ou comment faire croire sur une
requête HTTP que ça vient d'une autre IP, direction fcs. Et sur un
réseau local, il y a parfois beaucoup plus simple : débrancher le PC
dont on veut piquer l'IP et se l'affecter.

Oui enfin, soyons honnêtes, c'est pas la fête.
Ça fait plus livre d'or du site à neuneu.


Parce que les BB ça sert à autre chose ? Non, c'est pas un troll, c'est
mon avis et je le partage. Même si personnellement je préfère
l'expression "fête du slip chez les Barbe-à-Papa" mais il ne doit plus y
avoir beaucoup de contributeurs restant ici se souvenant de qui en est
l'auteur.

Déjà les tables, il faudrait, selon moi :
users : définition des utilisateurs
Et la table access_bb elle sent le pâté ? Quant à appeler une table

users, c'est bien un nom à éviter, idem pour groups.
[NB: j'ai oublié d'indiquer que si je prends un login de 60 chars, c'est
pour utiliser une adresse email directement, sinon pas besoin
d'autant, et prévoir un attribut email, probablement UNIQUE).

groups : définition des différents groupes, et de leur droits
(facultatif, on peut faire ça en dur, mais ça limite en fonctionnalité)
forums : arbre des forums et sous-forums
messages : arbre des messages et de leurs réponses


Oui, c'est possible. On peut aussi ajouter une table gérant plus
spécifiquement des binaires attachés à chaque message. On peut aussi
faire monter en graine le machin et en faire un CMS complet, ça s'est
déjà vu (et avec une bonne qualité de codage, comme w-agora par exemple).

Personnellement j'aime l'idée de lier les messages aux forums via une
table supplémentaire, ce qui permet de lier les messages à plusieurs
forums en même temps en divers points (pratique pour le cross-post et le
fu2, car on manipule le même message et pas une copie).


Excellente idée, contacte vite le Komité de fufa, on va refondre Usenet.

Autre chose : les arbres sous forme de listes adjacentes, en SQL, c'est
pas terrible.


Le monsieur a écrit, mais tu ne sais pas lire comme d'habitude, "une
fonction récursive ira très bien vu le nombre de fils qu'on aura". Pour
un forum même actif de type web-based, le stockage en arbre bête suffit
amplement. merci, je n'ai pas besoin de cours sur les structures de
données et les arbres, je peux en donner.


Pas terrible du tout même pour cette utilisation je dirais.
Mieux vaut utiliser un bon format d'arbre comme les Nested Sets sur
lequel on pourra faire des modifications avec des classes adaptées


Ouais, et puis un peu de MVC/Struts/Xtreme-Programming parce que là je
trouve ça pauvret.

Pour la modération, je préfère donner à chaque utilisateur et à chaque
groupe des droits.
Oui c'est en effet possible.


Un truc un peu comme les droits UNIX me semble sympa.
Là je confirme, il n'y a pas mieux.


Rien qu'avant de commencer à écrire la moindre ligne, il faut créer le
framework de l'application.


Tout développeur lambda doit déjà avoir ça dans ses tiroirs. Sinon c'est
un développeur débutant (ce n'est pas une honte, mais ce n'est pas
l'hypothèse que j'avais indiquée).

On voit tout de suite pas mal de composants nécessaires :
On voit surtout que tu es très fort pour compliquer à outrance un truc

super simple.

Il faut aussi créer un design pas trop moche via CSS pour que le forum
soit agréable à utiliser.
Non. Ca c'est pas du développement, c'est du graphisme. Et c'est pas

inclus dans le temps annoncé. Il est de notoriété publique que je n'ai
jamais émis la moindre opinion sur la qualité du HTML (1) car j'en suis
totalement incapable. Faire du HTML strict 4.1 comme demandé, juste pour
faire une page de présentation, si je dois le faire totalement à la main
sans éditeur, il me faudra bien 3 jours rien que pour ça. C'est pas mon
métier.

[ (1) : plus précisement si, à savoir qu'au nom de soit-disant
standards, on favorise la course permanente à la version et à l'armement
au détriment d'un concept primordial qu'est la rétrocompatibilité, mais
j'en ai marre de le dire, donc je ne participerai à aucun pseudo débat à
ce sujet qui est de toutes façons hors Charte ici ]

À moins de réutiliser du bon code déjà développé
Crois-tu que je recommence à zéro à chaque nouveau projet ? J'ajouterais

même à ta liste l'upload de fichiers si on le souhaite.

(et le bon code php est rare),
En effet. Même que m'est idée que nous n'avons aps tous les deux la même

conception de "bon" code d'ailleurs.

fiable, évolutif, maintenable et utilisé par de nombreuses personnes.
Ca se code en 30 minutes, je maintiens, pour la partie PHP, par un

développeur moyen, qui dispose nécessairement déjà d'un certain nombre
d'outils. S'il part from scratch, oui, il lui faudra le temps d'aller à
la pêche ) divers endroits s'enquérir d'un "framework" (ah, le joli mot)
qu'il peut utiliser, ou se développer ses briques de base. Et ça, ça
prend pas 30 minutes, mais plutôt 3 mois de boulot.

Maintenant, en ce qui me concerne, EOT, car un BB, ça ne sert à rien,
donc il doit me manquer des "paradigmes" pour comprendre la problématique.

JG

--
Les autres, c'est l'enfer.

Avatar
loufoque

On insère les données dans un document HTML => on transforme les
données en noeud texte HTML,
Bah voyons. Et puis on fait aussi appel à trois couches dom-xml et 2

validations de DTD pour faire un printf("<B>coucou</B>n");


La transformation en noeud texte se fait en remplaçant les caractères
réservées selon le contexte par leur séquence d'échappement appropriée.
Bref, remplacer <, > et & par &lt; &gt; et &amp;
C'est pas vraiment très compliqué comme traitement, surtout que PHP
propose déjà la fonction htmlspecialchars() pour le faire (qui remplace
aussi " par &quot; mais cela n'est nécessaire que dans les attributs).


Apparemment, au moment de récupérer les données extérieures, tu
conseilles de leur ajouter des slashes,
Non. D'échapper les caractères dangereux pour le SGBDR, qui, comme tu le

sais car tu le rappelles régulièrement, ne s'échappent pas de la même
manière. Ton problème est très simple : ou tu ne sais pas lire ou tu lis
ce qui t'arrange.


Ce ne sont pas des caractères dangereux, simplement réservés par la
syntaxe du langage SQL et qui disposent de mécanismes d'échappement afin
de pouvoir quand même être saisis.
Ensuite ces chaînes ne devraient être échappées qu'au moment de leur
insertion dans la requête SQL à créer. Le meilleur moyen pour réaliser
cela de façon propre, je l'ai dit et tu l'as toi aussi cité dans ton
document, ce sont les 'placeholders'.

Tu sembles encourager le fait qu'on doit passer par ta moulinette toute
donnée extérieure, alors que toute donnée extérieure ne sera pas
nécessairement utilisée pour être insérée dans une requête SQL ou au
final dans un document HTML.


encoder leurs caractères spéciaux HTML
Oui.



Ce qui devrait être fait à l'affichage.
Le SGBD sert à stocker des données, pas des bouts de documents HTML
pré-construits.


et tout un tas d'autres caractères, enlever les caractères dits
"dangereux"
T'as lu ça où ?



Tu as dit toi-même faire usage de strip_tags.


Tu n'as toujours rien compris à un principe de base : si
la donnée que je reçois est censée être un ENTIER, elle n'a pas de
raisons de contenir autre chose que des chiffres, POINT BARRE.
Généralisable à tout type fonctionnel de données.


Le cas auquel je faisais référence était quand on voulait une chaîne et
qui tu lui appliquais strip_tags.



Tu parles, comme d'habitude, dans le vide.


Manifestement je parle dans le vide car je parle d'approches théoriques
réfléchies à un technicien bidouilleur.


Ou ces caractères n'ont RIEN
A FOUTRE dans le type focntionnel de données où ils sont et on les vire,
ou alors de toutes façons, ils seront bien *affichés* (quelle que soit
leur forme de stockage).


On ne parle pas de types de données variés, simplement des traitements
sur les chaînes arbitraires (qui peuvent contenir n'importe quoi), qui
sont, ici (le cas du forum), les principales entrées de l'application.
Si mon texte contient "Ici on a 2<5 donc a>b" strip_tags produira "Ici
on a 2b"
Ouf, c'est bon, c'est "secure". Après tout, le plus important c'est que
ce soit sécurisé, pas que ça marche correctement. (exagération de ton
raisonnement)



cela ne fait que corrompre les données et les rendre encodées en un
format difficilement manipulable.
On s'en branle, on va ***pas*** les manipuler.



C'est vrai, les chaînes de caractères on les manipule pas, on fait que
les prendre à un endroit et les balancer dans un autre. C'est le
copier/coller et le rechercher/remplacer moderne.


Bref, impossible d'utiliser correctement les fonctions de traitement
de chaînes que ce soit en PHP ou SQL.
Deuxième édition : on s'en branle.



Tu t'en branles peut-être, mais d'autres non.
Une chaîne de caractères est un objet fait pour contenir des caractères
auxquels on peut accéder un à un, les compter, les comparer, etc. Pas
pour mettre des trucs en vrac.

Ton SGBD ne pourra même plus trier, comparer ou rechercher correctement
des chaînes. Toutes ses fonctionnalités d'encodages de caractères et de
collations seront inutilisables.
C'est surtout le cas pour le remplacement de é par &eacute; avant
l'insertion.


Ah oui, autre chose : à ma connaissance, le spoofing d'IP n'est pas
possible avec TCP. Aurais-tu plus d'informations à ce sujet ?


Plaît-il ? Quel rapport avec une quelconque choucroute ?


Tu as fait référence à un article à toi, je suis donc allé le lire en
diagonale, et je te pose des questions tant que je t'ai sous la main.


Oui enfin, soyons honnêtes, c'est pas la fête.
Ça fait plus livre d'or du site à neuneu.


Parce que les BB ça sert à autre chose ? Non, c'est pas un troll, c'est
mon avis et je le partage. Même si personnellement je préfère
l'expression "fête du slip chez les Barbe-à-Papa" mais il ne doit plus y
avoir beaucoup de contributeurs restant ici se souvenant de qui en est
l'auteur.


Oui.
Un BB sert à organiser des discussions, du support etc. et il s'y créé
presque une communauté, en fonction de sa popularité.



Déjà les tables, il faudrait, selon moi :
users : définition des utilisateurs
Et la table access_bb elle sent le pâté ? Quant à appeler une table

users, c'est bien un nom à éviter, idem pour groups.


Pour quelle raison ?
De toutes façons on groupe généralement toutes les tables d'une même
application avec un préfixe particulier, donc pas de collisions.


[NB: j'ai oublié d'indiquer que si je prends un login de 60 chars, c'est
pour utiliser une adresse email directement, sinon pas besoin d'autant,
et prévoir un attribut email, probablement UNIQUE).


J'aurais plutôt dit un identifiant, un login, un mot de passe, une date
d'inscription, une adresse email, le groupe d'appartenance/rang, les
préférences utilisateurs...
Enfin ce sont des détails.
On peut effectivement fusionner identifiant, login et email.


Personnellement j'aime l'idée de lier les messages aux forums via une
table supplémentaire, ce qui permet de lier les messages à plusieurs
forums en même temps en divers points (pratique pour le cross-post et
le fu2, car on manipule le même message et pas une copie).


Excellente idée, contacte vite le Komité de fufa, on va refondre Usenet.


Ce n'est pas pareil, les groupes sur Usenet sont indépendants.
Les différents forums d'un Bulletin Board ne le sont pas.


Autre chose : les arbres sous forme de listes adjacentes, en SQL,
c'est pas terrible.


Le monsieur a écrit, mais tu ne sais pas lire comme d'habitude, "une
fonction récursive ira très bien vu le nombre de fils qu'on aura". Pour
un forum même actif de type web-based, le stockage en arbre bête suffit
amplement. merci, je n'ai pas besoin de cours sur les structures de
données et les arbres, je peux en donner.


Vu le nombre de fils qu'on aura ? Tu peux prévoir l'utilisation du truc
? Je rappelle qu'on ne fait pas le forum des merguez party de
Chaunes-sur-Marne mais quelque chose de "scalable".



Pas terrible du tout même pour cette utilisation je dirais.
Mieux vaut utiliser un bon format d'arbre comme les Nested Sets sur
lequel on pourra faire des modifications avec des classes adaptées


Ouais, et puis un peu de MVC/Struts/Xtreme-Programming parce que là je
trouve ça pauvret.


Les Nested Sets n'ont rien à voir avec le genre de choses que tu cites.
Tu disais pourtant connaître parfaitement les structures possibles pour
les arbres dans un SGBD.


On voit tout de suite pas mal de composants nécessaires :
On voit surtout que tu es très fort pour compliquer à outrance un truc

super simple.


C'est une compétence qui n'est pas donnée à tout le monde ;).


Il faut aussi créer un design pas trop moche via CSS pour que le forum
soit agréable à utiliser.
Non. Ca c'est pas du développement, c'est du graphisme. Et c'est pas

inclus dans le temps annoncé. Il est de notoriété publique que je n'ai
jamais émis la moindre opinion sur la qualité du HTML (1) car j'en suis
totalement incapable. Faire du HTML strict 4.1 comme demandé, juste pour
faire une page de présentation, si je dois le faire totalement à la main
sans éditeur, il me faudra bien 3 jours rien que pour ça. C'est pas mon
métier.


Même le travail sur l'ergonomie, l'interface ?


(et le bon code php est rare),
En effet. Même que m'est idée que nous n'avons aps tous les deux la même

conception de "bon" code d'ailleurs.


On peut préférer élégant ou simplement fonctionnel.


S'il part from scratch, oui, il lui faudra le temps d'aller à
la pêche ) divers endroits s'enquérir d'un "framework" (ah, le joli mot)


"L'environnement de travail" ça fait plus penser à EDI.
J'ai pas trouvé de bonne traduction.


Avatar
John GALLET
Bonjour,


La transformation en noeud texte se fait en remplaçant les caractères
réservées selon le contexte par leur séquence d'échappement appropriée.


Ok, question de vocabulaire, c'est le terme "noeud" qui m'a enduit avec
de l'erreur(tm). Il s'agit de remise en forme en sortie (output control)
donc ?

Ce ne sont pas des caractères dangereux, simplement réservés par la
syntaxe du langage SQL et qui disposent de mécanismes d'échappement afin
de pouvoir quand même être saisis.
Une fois de plus, cette vision est beaucoup trop "happy people in a

happy world". M'enfin c'est mon avis et un paquet de gens le partage.

Ensuite ces chaînes ne devraient être échappées qu'au moment de leur
insertion dans la requête SQL à créer.


A mon sens, cette affirmation est vraie en théorie mais dangeureuse en
pratique, et seule l'utilisation de la technique que tu indiques dessous
peut la rendre vivable en production. Il est beaucoup trop facile d'en
oublier, c'est uniquement parce que les placeholders te rappellent qu'il
s'agit d'une donnée qui doit aller en base que le développeur aura une
bonne chance de ne pas oublier d'appeler la fonction de nettoyage ad
hoc, standard ou non.

Le meilleur moyen pour réaliser
cela de façon propre, je l'ai dit et tu l'as toi aussi cité dans ton
document, ce sont les 'placeholders'.


Le meilleur moyen *à ton avis* et j'ajouterais *quand le SGBD le
permet*. C'est un moyen. Que ce soit le meilleur dépendra toujours des
contraintes de la plateforme de développement et du SGBD.

Tu sembles encourager le fait qu'on doit passer par ta moulinette toute
donnée extérieure, alors que toute donnée extérieure ne sera pas
nécessairement utilisée pour être insérée dans une requête SQL ou au
final dans un document HTML.
J'ai bien indiqué que je me place dans le cas précis des webapp où, par

définition, on stocke des trucs (en général en sgbd) et on a *au moins*
comme canal de sortie le HTML, et j'ai bien précisé que je préfère faire
du sanitizing bourrin en entrée quitte à refaire l'opératin inverse si
un canal de sortie (ex. PDF) le nécessite, car dans le cas des webapps,
le canal principal de sortie est le HTML. J'ai aussi indiqué qu'une
autre approche consiste à faire une partie du sanitizing en OUTPUT
sanitizing, ce qui a une logique car il faudrait en faire selon chaque
canal (il y a des failles dans le format PDF aussi). Donc oui, dans ce
cas, on PEUT considérer que toute donnée extérieure doit être purgée
AVANT insert en sgbdr, parce qu'on est définitivement tranquilles. Si
finalement c'est un programme tiers qui récupère les données en base,
elles sont peut-être "pourries" à son sens (& => &amp; ou ' => ') mais
au moins elles ne sont pas *dangeureuses*. Je n'aime pas laisser les
autres faire le boulot, parce qu'ils ne sont parfois même pas au courant
qu'ils doivent le faire.

Maintenant si on veut généraliser à d'autres environnements (hors
webapps), alors le principe général est :

- toute donnée qui arrive est potentiellement vérolée. C'est un fait.

- toute donnée qui arrive doit DONC être purgée

=> tout d'abord au moment de son stockage par rapport au moyen de
stockage (i.e. si c'est en SGBD, se prémunir des injections SQL, que ce
soit en vérifiant le type de donnée pour les injections sur les entiers,
ou en utilisant des place holders, peu importe, c'est une technique de
réalisation dont le choix ne peut être arbitraire, la premièreméthode
étant portable, pas celle des placeholders)

=> puis par canal de sortie pour se prémunir des failles spécifiques à
chaque canal de sortie (spécifique html, spécifique PDF, même spécifique
sortie écran terminal VT).

Dans ce cadre, on retombe sur ce que tu dis (si j'ai bien compris ton
propos).

Ce qui devrait être fait à l'affichage.
Ce qui *peut* être fait à l'affichage. Si tu as un seul programme qui

affiche les données, c'est facile, si tu en as 4 dans 4 technologies
différentes (un en PHP, un en PERL, un en C et un en java, j'ai ça au
quotidien sur un environnement de production) tu ne va pas t'amuser à
coder ça 4 fois de 4 manières différentes en ayant régulièrement des
oublis de reports de modifs.

Le SGBD sert à stocker des données,
Oui.


pas des bouts de documents HTML
pré-construits.


Ce sont des données comme d'autres. Tout dépend de ce que je décide de
mettre dans la définition d'un attribut pour mon dictionnaire de données.

Tu as dit toi-même faire usage de strip_tags.
J'interdits le html dans les saisies, donc oui.


Le cas auquel je faisais référence était quand on voulait une chaîne et
qui tu lui appliquais strip_tags.
De toutes façons, tu lui appliqueras aussi strip_tags, mais tu le feras

en sortie (ou, vu ce que tu indiques plus loin, avec l'exemple
mathématique, tu utiliseras plutôt special chars si je comprends bien).
C'est la seule différence de traitement. Je considère que je suis dans
le cas simple (cf le thread 'strip tags intelligent') où on peut se
permettre d'interdire le html. Sinon on peut utiliser htmlspecialchars.
Ceci est en commentaire dans le code de l'exemple fonction donné.

Tu parles, comme d'habitude, dans le vide.
Manifestement je parle dans le vide car je parle d'approches théoriques

réfléchies à un technicien bidouilleur.


Réfléchies sur la théorie, oui, sur la mise en pratique au quotidien en
entreprise, ça reste à voir; bidouilleur je revendique, au bon sens du
terme, mais dis toi bien que tu ne m'apprends rien sur les grandes
lignes et que la différence d'approche que tu as es seulement liée au
fait qu'une fois de plus tu n'as pas lu les hypothèses de départ ni les
commentaires qui justifient ces choix. Je peux oublier des cas, mais je
fais bien l'application dans un cas particulier précisement décrit de
principes génériques.

On ne parle pas de types de données variés, simplement des traitements
sur les chaînes arbitraires (qui peuvent contenir n'importe quoi), qui
sont, ici (le cas du forum), les principales entrées de l'application.
Si mon texte contient "Ici on a 2<5 donc a>b" strip_tags produira "Ici
on a 2b"


Alleluia Gloria (Régilait). Tu vois quand tu te donnes la peine
d'argumenter correctement on peut discuter correctement. Je n'ai pas vu
le problème, pour la raison simple que dans les applications sur
lesquelles je travaille, on n'a pas besoin de signes mathématiques dans
les saisies textuelles. Mais il est exact que sur fcs on avait parlé de
ce cas, j'ai oublié de l'intégrer.

D'ailleurs ça me fait penser que donc du coup strip tags pourrait de
toutes façons ne pas être suffisant si on introduit volontairement des
tags sans > fermant, invalides dans l'absolu, mais si le crétin de
navigateur les accepte... A tester.

Ouf, c'est bon, c'est "secure". Après tout, le plus important c'est que
ce soit sécurisé, pas que ça marche correctement. (exagération de ton
raisonnement)


C'est un prérequis, mais cf le parapgraphe d'introduction.

C'est vrai, les chaînes de caractères on les manipule pas, on fait que
les prendre à un endroit et les balancer dans un autre. C'est le
copier/coller et le rechercher/remplacer moderne.


Dans le cas d'une webapp, je ne vois pas ce qu'on va faire comme
manipulations sur des saisies utilisateur dans des zones de type
TEXT/TEXTAREA. On stocke ces informations en tant que donnéees mortes
pour le système. Si on doit prendre une décision sur une donnée
utilisateur, on va pas lui proposer un champ TEXT/TEXAREA, à part pour
lui coller dans un LIKE %$toto% d'un moteur de recherche, on va lui
proposer un choix fermé de valeurs faciles à vérifier et valider.
Même si on fait de la remise en forme style wordwrap, peu importe les
modifs effectuées.

Une chaîne de caractères est un objet fait pour contenir des caractères
auxquels on peut accéder un à un, les compter, les comparer, etc. Pas
pour mettre des trucs en vrac.


Le fait qu'on puisse le faire ne veut pas dire qu'on va le faire.

Ton SGBD ne pourra même plus trier, comparer ou rechercher correctement
des chaînes.
Dès lors que les données à comparer subissent toutes les mêmes

transformations, pourquoi ?

Toutes ses fonctionnalités d'encodages de caractères et de
collations seront inutilisables.
C'est surtout le cas pour le remplacement de é par &eacute; avant
l'insertion.
Je ne vois pas le problème. Je n'ai pas dit qu'il n'y en a pas, je ne le

vois pas. Exemple concret SVP.

Tu as fait référence à un article à toi, je suis donc allé le lire en
diagonale, et je te pose des questions tant que je t'ai sous la main.
Oui,la diagonale j'avais remarqué. Et tu m'avais sous la main autant que

tu voulais quand j'ai publié un article en xpost et fu2 fcs annonçant la
publication du biniou, auquel tu as d'ailleurs répondu évasivement , je
t'ai répondu, mais j'attends toujours tes remarques, elles arrivent
maintenant, mieux vaut tard que jamais mais 1) est-ce bien de le faire
dans ce thread, 2) ne serait-ce pas mieux sur fcs ?

Un BB sert à organiser des discussions, du support etc. et il s'y créé
presque une communauté, en fonction de sa popularité.
Rien que le mot "communauté" m'amuse. Je rappelle que selon le sens

d'origine du dictionnaire, il s'agit "d'un ensemble de personnes suivant
les mêmes règles de vie religieuses" (petit Larousse 1927).

Et la table access_bb elle sent le pâté ? Quant à appeler une table
users, c'est bien un nom à éviter, idem pour groups.
Pour quelle raison ?

Trop proche de mots clefs. Par exemple sous mysql, c'est justement le

nom de la table des users. **De mémoire** il y a une table group ou
groups dans postgresql. Même si informatiquement parlant le risque de
confusion est faible, pour le développeur fatigué qui cherche un bug à
2h du matin et qui lit le code, lui aussi, en diagonale parce qu'il est
à la bourre, la confusion est possible voire probable.

De toutes façons on groupe généralement toutes les tables d'une même
application avec un préfixe particulier, donc pas de collisions.
Oui.


J'aurais plutôt dit un identifiant, un login, un mot de passe, une date
d'inscription, une adresse email, le groupe d'appartenance/rang, les
préférences utilisateurs...
On peut.


Enfin ce sont des détails.
Oui.


On peut effectivement fusionner identifiant, login et email.


En pratique j'ai souvent des users qui se mélangent les crayons dans
leur login, alors que l'adresse email, ils s'en souviennent à peu près.
Mais ce sont en effet des détails.

Vu le nombre de fils qu'on aura ? Tu peux prévoir l'utilisation du truc
?


Statistiquement, je te pifométrise que 80% des threads auront une
profondeur inférieur à 6 niveaux de questions/réponses, y'a qu'à
regarder n'importe quel forum Usenet. Sauf sur fufe ou fsp évidemment,
mais là c'est un sport national.

Je rappelle qu'on ne fait pas le forum des merguez party de
Chaunes-sur-Marne mais quelque chose de "scalable".
Pour un BB, chez moi ça s'arrête à la première solution. Mais c'est un

problème de cahier des charges.

Ouais, et puis un peu de MVC/Struts/Xtreme-Programming parce que là je
trouve ça pauvret.
Les Nested Sets n'ont rien à voir avec le genre de choses que tu cites.

Normal je parlais des classes.


Tu disais pourtant connaître parfaitement les structures possibles pour
les arbres dans un SGBD.
Entre autres dans un SGBD. Toutes je n'en sais rien, il doit bien y

avoir un gars dans son coin qui a trouvé sa solution à lui différente
des classiques. Et connaître ne veut pas dire apprécier, par ailleurs.


On voit tout de suite pas mal de composants nécessaires :
On voit surtout que tu es très fort pour compliquer à outrance un truc

super simple.
C'est une compétence qui n'est pas donnée à tout le monde ;).

Absolument :-)


Non. Ca c'est pas du développement, c'est du graphisme. Et c'est pas
inclus dans le temps annoncé. Il est de notoriété publique que je n'ai
jamais émis la moindre opinion sur la qualité du HTML (1) car j'en
suis totalement incapable. Faire du HTML strict 4.1 comme demandé,
juste pour faire une page de présentation, si je dois le faire
totalement à la main sans éditeur, il me faudra bien 3 jours rien que
pour ça. C'est pas mon métier.
Même le travail sur l'ergonomie, l'interface ?



A mon sens oui. C'est le boulot d'un infographiste. On doit le
restreindre dans ses élans et le guider pour lui rappeler, par exemple,
que tel choix c'est du radio button parce que mutuellement exclusif et
non pas du cumulatif, ou que telle zone de type TEXT est en fait un drop
down, mais ce genre de choses doit être faite en accord avec les
utilisateurs du produit (quand on les a sous la main). Ce n'est pas du
codage de la logique de l'application, ça doit rester du haut niveau.
Charge au développeur derrière de se démmerder pour que ça marche (pas
toujours évident).

On peut préférer élégant ou simplement fonctionnel.
Oui, mais le problème c'est que l'élégant termine souvent dans le "code

d'esthète" tellement élégant que totalement imbittable et impossible à
maintenir, le tout avec des tétrachiées de couches et de surcouches.


S'il part from scratch, oui, il lui faudra le temps d'aller à la pêche
) divers endroits s'enquérir d'un "framework" (ah, le joli mot)
"L'environnement de travail" ça fait plus penser à EDI.

J'ai pas trouvé de bonne traduction.
Je n'en connais pas, à mon sens c'est "librairie" mais ça ne fait pas

assez "orienté objet". En l'occurence, ça ne t'était pas destiné, il y a
suffisement longtemps que je râle sur ce snobisme informatique.

a++;
JG



Avatar
loufoque
Bonjour,


Re :-)


Le meilleur moyen *à ton avis* et j'ajouterais *quand le SGBD le
permet*.


Si le SGBD le permet pas, il suffit de manipuler la chaîne pour le faire
à sa place.
C'est ce que font JDBC, PDO, etc.



J'ai bien indiqué que je me place dans le cas précis des webapp où, par
définition, on stocke des trucs (en général en sgbd) et on a *au moins*
comme canal de sortie le HTML, et j'ai bien précisé que je préfère faire
du sanitizing bourrin en entrée quitte à refaire l'opératin inverse si
un canal de sortie (ex. PDF) le nécessite, car dans le cas des webapps,
le canal principal de sortie est le HTML.


C'est vrai que c'est le canal principal de sortie, mais est-ce une
raison pour se focaliser dessus ?



Tu as dit toi-même faire usage de strip_tags.
J'interdits le html dans les saisies, donc oui.



Tu interdis non seulement le html mais aussi tout texte du type <w+.*?w+>


Alleluia Gloria (Régilait). Tu vois quand tu te donnes la peine
d'argumenter correctement on peut discuter correctement. Je n'ai pas vu
le problème, pour la raison simple que dans les applications sur
lesquelles je travaille, on n'a pas besoin de signes mathématiques dans
les saisies textuelles. Mais il est exact que sur fcs on avait parlé de
ce cas, j'ai oublié de l'intégrer.


Il y a sûrement encore d'autres cas où on peut utiliser les caractères <
et > de façon tout à fait légitimes, pas uniquement dans un domaine lié
au maths.

Après tout c'est un caractère comme un autre. Je juge qu'il faut
permettre à l'utilisateur, du moins sur un forum, d'intégrer n'importe
quel caractère affichable dans son texte afin de ne pas entraver son
expression.


Le fait qu'on puisse le faire ne veut pas dire qu'on va le faire.


Exemple simple : je veux afficher les x premiers caractères d'un
enregistrement dans la base de données, pour donner un genre d'aperçu de
son contenu.
&lt; fait 4 octets mais n'est qu'un caractère. D'où le problème, mon x
ne sera qu'approximatif.


Je ne vois pas le problème. Je n'ai pas dit qu'il n'y en a pas, je ne le
vois pas. Exemple concret SVP.


- Comparaison approximative pour la recherche (é ~= e ~= è)

- Tri des données

Normalement on devrait avoir
Tablature
Téléphone
Transaction

Si é est &eacute; on obtient
Téléphone
Tablature
Transaction

C'est aussi gênant dans le cas où < est &lt;, mais bon c'est moins
grave, tout simplement parce que moi même j'ai aucune idée de où on
classe < normalement pour le tri.

De toutes façons, il est souvent dit sur fciwa que les entités (autres
que celles pour les caractères réservés) sont inutiles, il suffit de
gérer correctement l'encodage des caractères ; ce qui offre d'ailleurs
bien plus de possibilités, suivant l'encodage choisi.


Rien que le mot "communauté" m'amuse. Je rappelle que selon le sens
d'origine du dictionnaire, il s'agit "d'un ensemble de personnes suivant
les mêmes règles de vie religieuses" (petit Larousse 1927).


Bon ben 'un groupe qui partage les mêmes centres d'intérêts' si tu préfères.


Trop proche de mots clefs. Par exemple sous mysql, c'est justement le
nom de la table des users. **De mémoire** il y a une table group ou
groups dans postgresql. Même si informatiquement parlant le risque de
confusion est faible, pour le développeur fatigué qui cherche un bug à
2h du matin et qui lit le code, lui aussi, en diagonale parce qu'il est
à la bourre, la confusion est possible voire probable.


Ils ont du mettre ça dans une base de données à part quand même
j'imagine (flemme de vérifier) justement pour éviter ce genre de conflits.


Statistiquement, je te pifométrise que 80% des threads auront une
profondeur inférieur à 6 niveaux de questions/réponses, y'a qu'à
regarder n'importe quel forum Usenet. Sauf sur fufe ou fsp évidemment,
mais là c'est un sport national.


Ce qui laisse quand même une chance sur 5 que le fil ait une
arborescence complexe et que donc le traitement soit lent.
Un petit malin pourrait s'amuser à exploiter le cas où ton application
n'est pas performante rien que pour la faire ramer, ou tout simplement
planter car PHP s'impose lui-même une limite dans la récursivité qui se
traduit par une erreur fatale.


Normal je parlais des classes.


Qui dit classes ne veut pas dire programmation objet à tout bout de
champ comme en Java (ce qui apporte une lourdeur certaine).


A mon sens oui. C'est le boulot d'un infographiste. On doit le
restreindre dans ses élans et le guider pour lui rappeler, par exemple,
que tel choix c'est du radio button parce que mutuellement exclusif et
non pas du cumulatif, ou que telle zone de type TEXT est en fait un drop
down, mais ce genre de choses doit être faite en accord avec les
utilisateurs du produit (quand on les a sous la main). Ce n'est pas du
codage de la logique de l'application, ça doit rester du haut niveau.
Charge au développeur derrière de se démmerder pour que ça marche (pas
toujours évident).


Justement pour faciliter la tâche à l'infographiste ne faudrait-il pas
mieux créer un squelette simpliste avec les formulaires qui pointent là
où il faut et les champs qui vont bien ? Même chose pour les liens
importants etc.
L'infographiste est ensuite libre de modifier.

Après le truc à la mode c'est de faire un code HTML générique puis
ensuite de réaliser tout le côté graphique avec CSS.
Ce qui n'est pas évident du tout, en fait.


Oui, mais le problème c'est que l'élégant termine souvent dans le "code
d'esthète" tellement élégant que totalement imbittable et impossible à
maintenir, le tout avec des tétrachiées de couches et de surcouches.


Tout dépend des mainteneurs.
Si on intègre du code qu'on ne comprend pas, on va avoir du mal à le
maintenir, effectivement.


Je n'en connais pas, à mon sens c'est "librairie"


La traduction de /library/ c'est plutôt 'bibliothèque'.
La différence (du moins telle que je la perçois) c'est que le framework
définit le coeur de l'application, et que les bibliothèques ne font
qu'apporter des outils qu'on peut ou non utiliser.
La gestion des erreurs, l'accès à la config, tout ça, ça se fait de la
même manière où qu'on soit dans l'application donc ça fait partie du
framework.
Dans le cas où on a exclusivement des données en utf-8, les fonctions de
traitements de chaînes utf-8 sont considérées indispensables et en font
donc partie aussi.


Avatar
John GALLET
Re,


Si le SGBD le permet pas, il suffit de manipuler la chaîne pour le faire
à sa place.
C'est ce que font JDBC, PDO, etc.
Bof. Choisir une méthode de développement/un ensemble de classes en

ayant pour critères qu'elles gèrent le bind à la place du sgbd, ça ne me
plaît pas. Mais ce n'est pas un point de vue illustré, ça me parait un
critère à la con, comme ça, à froid. Mais oui, c'est tout à fait
possible. Enfin, il est probable que quasiment toutes celles qui sont un
minimum intéressantes le fasse.


J'ai bien indiqué que je me place dans le cas précis des webapp où, par
définition, on stocke des trucs (en général en sgbd) et on a *au moins*
comme canal de sortie le HTML, et j'ai bien précisé que je préfère faire
du sanitizing bourrin en entrée quitte à refaire l'opératin inverse si
un canal de sortie (ex. PDF) le nécessite, car dans le cas des webapps,
le canal principal de sortie est le HTML.
C'est vrai que c'est le canal principal de sortie, mais est-ce une

raison pour se focaliser dessus ?


C'est un choix, le mien, personne n'est obligé de fair pareil.

Tu as dit toi-même faire usage de strip_tags.
J'interdits le html dans les saisies, donc oui.

Tu interdis non seulement le html mais aussi tout texte du type <w+.*?w+>

Oui, vu sur ton exemple le rappelant, en effet.


Exemple simple : je veux afficher les x premiers caractères d'un
enregistrement dans la base de données, pour donner un genre d'aperçu de
son contenu.
&lt; fait 4 octets mais n'est qu'un caractère. D'où le problème, mon x
ne sera qu'approximatif.


Je n'ai jamais vu un client demander les x premiers caractères, parfois
les x premiers mots, jamais en caratères. Mais oui, si c'est dans les
demandes, le résultat sera faussé, et si on s'amusait aussi à traduire
ESPACE en nbsp; on aurait le même problème pour compter les mots.

Je ne vois pas le problème. Je n'ai pas dit qu'il n'y en a pas, je ne le
vois pas. Exemple concret SVP.
- Tri des données

Normalement on devrait avoir
Tablature
Téléphone
Transaction
Si é est &eacute; on obtient
Téléphone
Tablature
Transaction
C'est ça qui est plus que dommage avec toi, c'est que 90% de tes

contributions sont en rapport signal/bruit négatif et se résument à "ta
méthode c'est de la merde"+"il suffit de bon sens", alors que quand tu
te donnes la peine de t'expliquer, tes arguments sont intéressants. Si
seulement tu pouvais faire un minimum d'efforts pour illustrer un peu
tes contributions (comme ceci par exemple), tout le monde y gagnerait.

Oui en effet, je n'ai jamais rencontré ce problème car à mon sens un
ORDER BY ne se fait que sur des valeurs clef connues et vérifiées à
l'avance (i.e. des valeurs internes) ou alors des entiers/floats, mais
tu as tout à fait raison.

De toutes façons, il est souvent dit sur fciwa que les entités (autres
que celles pour les caractères réservés) sont inutiles, il suffit de
gérer correctement l'encodage des caractères ; ce qui offre d'ailleurs
bien plus de possibilités, suivant l'encodage choisi.


C'est une approche, il est possible qu'elle soit faisable maintenant. Il
y a ne serait-ce que 5 ans, tous les character set n'étaient aps
systématiquement dispo sur toutes les machines, donc la seule véritable
compatibilité résidait dans l'asci 7bit. Mais maintenant peut-être. Mais
de toutes façons, loin de moi l'idée d'aller perdre mon temps sur fciwa.

Ils ont du mettre ça dans une base de données à part quand même
j'imagine (flemme de vérifier) justement pour éviter ce genre de conflits.
Tout à fait, raison pour laquelle je disais bien que le risque n'est pas

informatique mais humain.

Ce qui laisse quand même une chance sur 5 que le fil ait une
arborescence complexe et que donc le traitement soit lent.
Pas "lent", "plus lent potentiellement".


Un petit malin pourrait s'amuser à exploiter le cas où ton application
n'est pas performante rien que pour la faire ramer,
Pas difficile, il suffit de faire #!/bin/ksh while(true) wget

http://..../n'importequoi.php en boucle à mort et pas besoin d'un script
qui rame.

ou tout simplement
planter car PHP s'impose lui-même une limite dans la récursivité qui se
traduit par une erreur fatale.
Si on arrive à faire pêter le nombre d'appels empilés de PHP sur un

*thread de forum* j'en veux des cacahuètes.

Qui dit classes ne veut pas dire programmation objet à tout bout de
champ comme en Java (ce qui apporte une lourdeur certaine).
Mouais, bof.


Justement pour faciliter la tâche à l'infographiste ne faudrait-il pas
mieux créer un squelette simpliste avec les formulaires qui pointent là
où il faut et les champs qui vont bien ? Même chose pour les liens
importants etc.
L'infographiste est ensuite libre de modifier.
L'oeuf ou la poule ? En pratique, c'est souvent le développeur qui

intègre la maquette graphique, pas l'inverse.

Après le truc à la mode c'est de faire un code HTML générique puis
ensuite de réaliser tout le côté graphique avec CSS.
Ce qui n'est pas évident du tout, en fait.
Je n'ai jamais dit le contraire, et justement totu ce que j'en dit c'est

que j'en suis actuellement incapable (et que ça ne m'intéresse pas).

Oui, mais le problème c'est que l'élégant termine souvent dans le "code
d'esthète" tellement élégant que totalement imbittable et impossible à
maintenir, le tout avec des tétrachiées de couches et de surcouches.
Tout dépend des mainteneurs.



Non, tout dépend des connards qui ont pondu le code à la base.

Si on intègre du code qu'on ne comprend pas, on va avoir du mal à le
maintenir, effectivement.
Et c'est souvent le cas avec du code d'esthète, ledit esthète étant

largement au dessus, c'est bien connu, des auters, et ne s'abaissera pas
à mettre des commentaires dans son code parce que "c'est trivial".

La traduction de /library/ c'est plutôt 'bibliothèque'.
Les deux ont été utilisés il y a quelques années quand je gérais des

choix d'achat de libs c++. Ene effet, le terme le plus approprié serait
plutôt bibliothèque, mais tout le monde paralit de "lib". Maintenant, on
dit "framework", c'est 'achement mieux.

La différence (du moins telle que je la perçois) c'est que le framework
définit le coeur de l'application, et que les bibliothèques ne font
qu'apporter des outils qu'on peut ou non utiliser.
Vision intéressante, je l'ignore.


a++;
JG



1 2 3