il faut savoir que
je suis en train de découvrir les bases de données (j'ai commencé jeudi
dernier à lire une doc de référence) et que je fais juste des petites
pages de test pour voir ce que ça donne. Pour l'une d'elles, j'ai fait
un formulaire dans lequel on est invité à saisir un texte, et mon
programme PHP vérifie que le texte saisi est le même que celui qu'on
avait déjà saisi précédemment. L'endroit où j'ai généré du JavaScript
directement à partir de PHP, c'est la fonction optionnelle qui vérifie
la même chose en JavaScript avant de faire la requête au serveur.
Cela dit, je n'ai pas su trouver (mais j'ai sans doute mal cherché) des
tutoriels donnant quelques méthodes standard du style « page de login »,
« changement de mot de passe », etc.
il faut savoir que
je suis en train de découvrir les bases de données (j'ai commencé jeudi
dernier à lire une doc de référence) et que je fais juste des petites
pages de test pour voir ce que ça donne. Pour l'une d'elles, j'ai fait
un formulaire dans lequel on est invité à saisir un texte, et mon
programme PHP vérifie que le texte saisi est le même que celui qu'on
avait déjà saisi précédemment. L'endroit où j'ai généré du JavaScript
directement à partir de PHP, c'est la fonction optionnelle qui vérifie
la même chose en JavaScript avant de faire la requête au serveur.
Cela dit, je n'ai pas su trouver (mais j'ai sans doute mal cherché) des
tutoriels donnant quelques méthodes standard du style « page de login »,
« changement de mot de passe », etc.
il faut savoir que
je suis en train de découvrir les bases de données (j'ai commencé jeudi
dernier à lire une doc de référence) et que je fais juste des petites
pages de test pour voir ce que ça donne. Pour l'une d'elles, j'ai fait
un formulaire dans lequel on est invité à saisir un texte, et mon
programme PHP vérifie que le texte saisi est le même que celui qu'on
avait déjà saisi précédemment. L'endroit où j'ai généré du JavaScript
directement à partir de PHP, c'est la fonction optionnelle qui vérifie
la même chose en JavaScript avant de faire la requête au serveur.
Cela dit, je n'ai pas su trouver (mais j'ai sans doute mal cherché) des
tutoriels donnant quelques méthodes standard du style « page de login »,
« changement de mot de passe », etc.
Je ne sais pas si je n'aurais pas demandé au php d'écrire le texte
(qu'il vient de recevoir) dans un champs ou fenêtre de texte caché,
le JS n'ayant plus alors qu'à comparer le contenu des 2 champs (celui
caché et celui où on doit réciter).
[...]
Bon, je viens d'essayer,
- J'ai un seul champ de texte nommé 'texte'
- J'y entre : bnr? é trans puis /
- ça envoie bien urlisé : bnr? é trans puis /
- mais au retour dans un string JS nourri par php $_GET['texte']
Je ne sais pas si je n'aurais pas demandé au php d'écrire le texte
(qu'il vient de recevoir) dans un champs ou fenêtre de texte caché,
le JS n'ayant plus alors qu'à comparer le contenu des 2 champs (celui
caché et celui où on doit réciter).
[...]
Bon, je viens d'essayer,
- J'ai un seul champ de texte nommé 'texte'
- J'y entre : bnr? é trans puis /
- ça envoie bien urlisé : bnr? é trans puis /
- mais au retour dans un string JS nourri par php $_GET['texte']
Je ne sais pas si je n'aurais pas demandé au php d'écrire le texte
(qu'il vient de recevoir) dans un champs ou fenêtre de texte caché,
le JS n'ayant plus alors qu'à comparer le contenu des 2 champs (celui
caché et celui où on doit réciter).
[...]
Bon, je viens d'essayer,
- J'ai un seul champ de texte nommé 'texte'
- J'y entre : bnr? é trans puis /
- ça envoie bien urlisé : bnr? é trans puis /
- mais au retour dans un string JS nourri par php $_GET['texte']
$from >>> array("", "'", '"', "r", "n", "xE2x80xA8", "xE2x80xA9");
$to >>> array('\', ''', '"', 'r', 'n', 'u2028', 'u2029');
return str_replace($from, $to, $str);
Désolé, mais je connais mal PHP (je suis plutôt Java), mais je comprend
mal ce que va donner les changement de "r" et "n" en 'r' et 'n'.
Peux-tu m'éclairer, STP ?
Oui, bien sûr. "n" représente l'unique caractère dont le code ASCII ou
Unicode est 10, tandis que 'n' est une chaîne de deux caractères, de
codes respectifs 92 () et 110 (n). Pour info, 'n' signifie la même
chose que "n". Idem avec "r" (code 13) et 'r' (égal à "r").
$from >>> array("\", "'", '"', "r", "n", "xE2x80xA8", "xE2x80xA9");
$to >>> array('\\', '\'', '"', 'r', 'n', 'u2028', 'u2029');
return str_replace($from, $to, $str);
Désolé, mais je connais mal PHP (je suis plutôt Java), mais je comprend
mal ce que va donner les changement de "r" et "n" en 'r' et 'n'.
Peux-tu m'éclairer, STP ?
Oui, bien sûr. "n" représente l'unique caractère dont le code ASCII ou
Unicode est 10, tandis que 'n' est une chaîne de deux caractères, de
codes respectifs 92 () et 110 (n). Pour info, 'n' signifie la même
chose que "\n". Idem avec "r" (code 13) et 'r' (égal à "\r").
$from >>> array("", "'", '"', "r", "n", "xE2x80xA8", "xE2x80xA9");
$to >>> array('\', ''', '"', 'r', 'n', 'u2028', 'u2029');
return str_replace($from, $to, $str);
Désolé, mais je connais mal PHP (je suis plutôt Java), mais je comprend
mal ce que va donner les changement de "r" et "n" en 'r' et 'n'.
Peux-tu m'éclairer, STP ?
Oui, bien sûr. "n" représente l'unique caractère dont le code ASCII ou
Unicode est 10, tandis que 'n' est une chaîne de deux caractères, de
codes respectifs 92 () et 110 (n). Pour info, 'n' signifie la même
chose que "n". Idem avec "r" (code 13) et 'r' (égal à "r").
Le 08/12/2008 23:55, SAM a écrit :Je ne sais pas si je n'aurais pas demandé au php d'écrire le texte
(qu'il vient de recevoir) dans un champs ou fenêtre de texte caché,
le JS n'ayant plus alors qu'à comparer le contenu des 2 champs (celui
caché et celui où on doit réciter).
C'est exactement ce que proposait Alex. Je viens d'essayer, et ça marche
parfaitement. Il me suffit de comparer le « value » de l'élément input
avec le « firstChild.nodeValue » de ce nouveau div ou span.
- mais au retour dans un string JS nourri par php $_GET['texte']
Gniii ?
Le 08/12/2008 23:55, SAM a écrit :
Je ne sais pas si je n'aurais pas demandé au php d'écrire le texte
(qu'il vient de recevoir) dans un champs ou fenêtre de texte caché,
le JS n'ayant plus alors qu'à comparer le contenu des 2 champs (celui
caché et celui où on doit réciter).
C'est exactement ce que proposait Alex. Je viens d'essayer, et ça marche
parfaitement. Il me suffit de comparer le « value » de l'élément input
avec le « firstChild.nodeValue » de ce nouveau div ou span.
- mais au retour dans un string JS nourri par php $_GET['texte']
Gniii ?
Le 08/12/2008 23:55, SAM a écrit :Je ne sais pas si je n'aurais pas demandé au php d'écrire le texte
(qu'il vient de recevoir) dans un champs ou fenêtre de texte caché,
le JS n'ayant plus alors qu'à comparer le contenu des 2 champs (celui
caché et celui où on doit réciter).
C'est exactement ce que proposait Alex. Je viens d'essayer, et ça marche
parfaitement. Il me suffit de comparer le « value » de l'élément input
avec le « firstChild.nodeValue » de ce nouveau div ou span.
- mais au retour dans un string JS nourri par php $_GET['texte']
Gniii ?
A première vue du moment que la chaine ne contient pas de ' et vu ce qui
a été dis (page en UTF-8 et tous les caractères sont corrects) alors
qu'est-ce qui ne pourrait pas aller ?
J'avais posé la question avant d'aller relire attentivement la norme,
mais je savais déjà qu'un saut de ligne ne pouvait pas être transmis
tel quel. Après relecture, je sais maintenant que les seuls caractères
à protéger sont l'apostrophe, la barre oblique , LF (U+000A), CR
(U+000D), LS (U+2028) et PS (U+2029).
A première vue du moment que la chaine ne contient pas de ' et vu ce qui
a été dis (page en UTF-8 et tous les caractères sont corrects) alors
qu'est-ce qui ne pourrait pas aller ?
J'avais posé la question avant d'aller relire attentivement la norme,
mais je savais déjà qu'un saut de ligne ne pouvait pas être transmis
tel quel. Après relecture, je sais maintenant que les seuls caractères
à protéger sont l'apostrophe, la barre oblique , LF (U+000A), CR
(U+000D), LS (U+2028) et PS (U+2029).
A première vue du moment que la chaine ne contient pas de ' et vu ce qui
a été dis (page en UTF-8 et tous les caractères sont corrects) alors
qu'est-ce qui ne pourrait pas aller ?
J'avais posé la question avant d'aller relire attentivement la norme,
mais je savais déjà qu'un saut de ligne ne pouvait pas être transmis
tel quel. Après relecture, je sais maintenant que les seuls caractères
à protéger sont l'apostrophe, la barre oblique , LF (U+000A), CR
(U+000D), LS (U+2028) et PS (U+2029).
on évite en
général de génerer du JavaScript dynamiquement.
Il y a d'abord le problème inhérent à la génération de code en général,
on se retrouve avec deux niveaux de code à débugguer, écrits dans deux
langages différents.
Il y a aussi les problèmes liés à l'optimisation du temps de chargement
des pages. Générer du JavaScript dynamiquement rends difficile et/ou
inefficace la concaténation et la minification du code ainsi que
l'exploitation des caches.
Après, si tu es de ceux qui pensent que mélanger HTML, CSS,
SQL, JavaScript et PHP dans un même fichier ne pose pas de problèmes
particuliers, ce dernier argument ne te parles probablement pas :)
on évite en
général de génerer du JavaScript dynamiquement.
Il y a d'abord le problème inhérent à la génération de code en général,
on se retrouve avec deux niveaux de code à débugguer, écrits dans deux
langages différents.
Il y a aussi les problèmes liés à l'optimisation du temps de chargement
des pages. Générer du JavaScript dynamiquement rends difficile et/ou
inefficace la concaténation et la minification du code ainsi que
l'exploitation des caches.
Après, si tu es de ceux qui pensent que mélanger HTML, CSS,
SQL, JavaScript et PHP dans un même fichier ne pose pas de problèmes
particuliers, ce dernier argument ne te parles probablement pas :)
on évite en
général de génerer du JavaScript dynamiquement.
Il y a d'abord le problème inhérent à la génération de code en général,
on se retrouve avec deux niveaux de code à débugguer, écrits dans deux
langages différents.
Il y a aussi les problèmes liés à l'optimisation du temps de chargement
des pages. Générer du JavaScript dynamiquement rends difficile et/ou
inefficace la concaténation et la minification du code ainsi que
l'exploitation des caches.
Après, si tu es de ceux qui pensent que mélanger HTML, CSS,
SQL, JavaScript et PHP dans un même fichier ne pose pas de problèmes
particuliers, ce dernier argument ne te parles probablement pas :)
Il y a aussi les problèmes liés à l'optimisation du temps de
chargement des pages. Générer du JavaScript dynamiquement rends
difficile et/ou inefficace la concaténation et la minification du code
ainsi que l'exploitation des caches.
Ok pour la concaténation : pour le prb évoqué plus haut, on va avoir
tendance à laisser ce qui est généré dynamiquement "tout seul".
Mais je ne comprend pas pourquoi vous parlez du cache ? Ce n'est aps
parce que l'on génère du JavaScript dynamiquement côté serveur que l'on
ne pourra pas renvoyer les bons entêtes, au contraire !
Reste que l'on a toujours le besoin de fournir à JavaScript des données
et que XHR n'est pas la réponse miracle.
Il y a aussi les problèmes liés à l'optimisation du temps de
chargement des pages. Générer du JavaScript dynamiquement rends
difficile et/ou inefficace la concaténation et la minification du code
ainsi que l'exploitation des caches.
Ok pour la concaténation : pour le prb évoqué plus haut, on va avoir
tendance à laisser ce qui est généré dynamiquement "tout seul".
Mais je ne comprend pas pourquoi vous parlez du cache ? Ce n'est aps
parce que l'on génère du JavaScript dynamiquement côté serveur que l'on
ne pourra pas renvoyer les bons entêtes, au contraire !
Reste que l'on a toujours le besoin de fournir à JavaScript des données
et que XHR n'est pas la réponse miracle.
Il y a aussi les problèmes liés à l'optimisation du temps de
chargement des pages. Générer du JavaScript dynamiquement rends
difficile et/ou inefficace la concaténation et la minification du code
ainsi que l'exploitation des caches.
Ok pour la concaténation : pour le prb évoqué plus haut, on va avoir
tendance à laisser ce qui est généré dynamiquement "tout seul".
Mais je ne comprend pas pourquoi vous parlez du cache ? Ce n'est aps
parce que l'on génère du JavaScript dynamiquement côté serveur que l'on
ne pourra pas renvoyer les bons entêtes, au contraire !
Reste que l'on a toujours le besoin de fournir à JavaScript des données
et que XHR n'est pas la réponse miracle.
Il y a aussi les problèmes liés à l'optimisation du temps de
chargement des pages. Générer du JavaScript dynamiquement rends
difficile et/ou inefficace la concaténation et la minification du
code ainsi que l'exploitation des caches.
Ok pour la concaténation
Mais je ne comprend pas pourquoi vous parlez du cache ?
je veux simplement dire que si le code contient des
données, le navigateur devra télécharger une copie fraîche de ce code à
chaque changement des données (inefficace)
Reste que l'on a toujours le besoin de fournir à JavaScript des
données et que XHR n'est pas la réponse miracle.
Comme je l'ai dit précédemment, le DOM est AMHA la "base de données"
dans le contexte d'exécution d'un navigateur web.
Il y a aussi les problèmes liés à l'optimisation du temps de
chargement des pages. Générer du JavaScript dynamiquement rends
difficile et/ou inefficace la concaténation et la minification du
code ainsi que l'exploitation des caches.
Ok pour la concaténation
Mais je ne comprend pas pourquoi vous parlez du cache ?
je veux simplement dire que si le code contient des
données, le navigateur devra télécharger une copie fraîche de ce code à
chaque changement des données (inefficace)
Reste que l'on a toujours le besoin de fournir à JavaScript des
données et que XHR n'est pas la réponse miracle.
Comme je l'ai dit précédemment, le DOM est AMHA la "base de données"
dans le contexte d'exécution d'un navigateur web.
Il y a aussi les problèmes liés à l'optimisation du temps de
chargement des pages. Générer du JavaScript dynamiquement rends
difficile et/ou inefficace la concaténation et la minification du
code ainsi que l'exploitation des caches.
Ok pour la concaténation
Mais je ne comprend pas pourquoi vous parlez du cache ?
je veux simplement dire que si le code contient des
données, le navigateur devra télécharger une copie fraîche de ce code à
chaque changement des données (inefficace)
Reste que l'on a toujours le besoin de fournir à JavaScript des
données et que XHR n'est pas la réponse miracle.
Comme je l'ai dit précédemment, le DOM est AMHA la "base de données"
dans le contexte d'exécution d'un navigateur web.
J'avais posé la question avant d'aller relire attentivement la norme,
mais je savais déjà qu'un saut de ligne ne pouvait pas être transmis
tel quel. Après relecture, je sais maintenant que les seuls caractères
à protéger sont l'apostrophe, la barre oblique , LF (U+000A), CR
(U+000D), LS (U+2028) et PS (U+2029).
J'ignore ces contraintes, peux tu détailler ?
J'avais posé la question avant d'aller relire attentivement la norme,
mais je savais déjà qu'un saut de ligne ne pouvait pas être transmis
tel quel. Après relecture, je sais maintenant que les seuls caractères
à protéger sont l'apostrophe, la barre oblique , LF (U+000A), CR
(U+000D), LS (U+2028) et PS (U+2029).
J'ignore ces contraintes, peux tu détailler ?
J'avais posé la question avant d'aller relire attentivement la norme,
mais je savais déjà qu'un saut de ligne ne pouvait pas être transmis
tel quel. Après relecture, je sais maintenant que les seuls caractères
à protéger sont l'apostrophe, la barre oblique , LF (U+000A), CR
(U+000D), LS (U+2028) et PS (U+2029).
J'ignore ces contraintes, peux tu détailler ?
Si je peux me permettre, niveau lisibilité du code, je préfère
vachement voir remplacer "r" par "r" que "r" par 'r'. Enfin, les
goûts et les couleurs...
Manuel.
Si je peux me permettre, niveau lisibilité du code, je préfère
vachement voir remplacer "r" par "\r" que "r" par 'r'. Enfin, les
goûts et les couleurs...
Manuel.
Si je peux me permettre, niveau lisibilité du code, je préfère
vachement voir remplacer "r" par "r" que "r" par 'r'. Enfin, les
goûts et les couleurs...
Manuel.