FORMULAIRE D'ENREGISTREMENT(AJAX+CODE SECURITÉ+STYLÉ)

wizard512 Messages postés 459 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 11 mai 2013 - 16 mai 2007 à 19:33
Annaloe Messages postés 1 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 10 décembre 2009 - 10 déc. 2009 à 23:10
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/42715-formulaire-d-enregistrement-ajax-code-securite-style

Annaloe Messages postés 1 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 10 décembre 2009
10 déc. 2009 à 23:10
Bonjour, je trouve votre script très utile. par contre il n'accepte pas les "é" et les "è". avez vous une solution pour faire passer un "é" à travers la fonction signin pour le récupérer ensuite dans le signin.php ?
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
23 mars 2008 à 22:13
brocolis78 > de quel mail tu parles ?
brocolis78 Messages postés 1 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 23 mars 2008
23 mars 2008 à 04:52
Bonjour,

Tout est parfait sauf que je ne sais pas où taper mon mail pour recevoir les données de ce formulaire...

Merci de bien vouloir m'aider

:-)
ashro Messages postés 4 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 19 mars 2008
26 févr. 2008 à 10:15
Pour faire une remarque concernant les navigateurs... et IE4 (WIZARD512) : on est loin des 5%. Ok, ta remarque aura bientôt un an, mais on en était déjà loin je pense.

Sur le site dont je m'occupe :

1. Internet Explorer 581,925 73.80%
v 7.0 319,458 54.90%
v 6.0 262,191 45.06%
v 5.5 253 0.04%
v 5.01 17 > 0.00%
v 5.0 4 > 0.00%

2. Firefox 190,152 24.11%
v2.0.0.12 88,338 46.46%
v2.0.0.11 79,427 41.77%
v1.5.0.12 3,309 1.74%
v3.0 2,450 1.29%
v2.0.0.6 2,042 1.07%
v2.0 1,934 1.02%
v2.0.0.9 1,647 0.87%
v2.0.0.7 1,467 0.77%
v2.0.0.4 1,205 0.63%
v1.0.7 1,024 0.54%
3. Safari 10,473 1.33%
4. Opera 3,681 0.47%
5. Mozilla 1,466 0.19%
6. Camino 210 0.03%
7. Netscape 159 0.02%
8. Konqueror 121 0.02%
9. Mozilla Compatible Agent 61 0.01%
10. Playstation Portable 60 0.01%

Donc je ne travaille pas pour les versions antérieures à la v6 pour IE. Faire que les choses tournent sous Safari est plus utile...
Optitech Messages postés 134 Date d'inscription samedi 19 octobre 2002 Statut Membre Dernière intervention 3 janvier 2009
25 juin 2007 à 23:56
Voilà mes impression après avoir testé avec ton exemple !

Utilité d'axaj ici : AUCUNE ... si une sucharger le serveur :) Les quelque test que tu fait se font avec du JavaScript de base, même le test du code de l'image et bien sûr sans recharger la page :) Si j'étais toi je me mettrait à JavaScript d'urgence tu veras que c'est surper puissant avec du PHP même sans passer par AJAX

Ah aussi j'ai trouvé une erreur : tu peux saisir deux mot de passe différent et ton code ne dit rien ! Voilà la raison, ce test :

if($_POST['password1']!=$_POST['password2'] && strlen($_POST['password1'])<4){
$erreurs[]='Veuillez entrer le meme mot de passe';
}

Ce message s'affiche si et sedulement si : Les deux mot de passe sont diférent ET que le permier mot de passe fait moins de 4 caractères, la solution pour corriger cela est simple à mettre en, place mais je te laisse reflechir !

Tient petit idée : regarde la boucle froeach ! Vraiment très pratique pour lister un tableau !

Pour répondre au message de raffoul qui proposait de faire les test au fur et a meusure ! L'idée est super ! mais tu n'as besoin d'AJAX ! Avec un petit code JavaScript de base tu peu le faire !

A quoi peu servir AJAX dans un formulaire comme celui-là a tester si le pseudo choisi n'est aps déjà pris ou si d'adresse email saisite n'ai pas déjà dnas la base de donnée !
Utilisateur anonyme
24 juin 2007 à 17:20
Si ...
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
23 juin 2007 à 19:56
carré avec une croix rouge, c'est utuliser par ie pour repmlacer les images qui ne s'affiche pas,donc tu n'a pas encore regler le prob
visite le demo:http://abdilah.freehostia.com/formulaire
Utilisateur anonyme
23 juin 2007 à 18:35
Ah si mais l'image est remplacée par un carré avec une croix rouge
Utilisateur anonyme
23 juin 2007 à 18:31
Je ne trouve pas php.ini (wamp5) ...
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
23 juin 2007 à 18:20
dans php.ini
tu cherche "gd2.dll"
tu trouves la ligne
;extension=php_gd2.dll
ou bien
#extension=php_gd2.dll
tu enleves le ';' ou '#' et tu sauvgarde tout et tu redémmares les services
biensur c'est en local
Utilisateur anonyme
23 juin 2007 à 18:16
Comment l'activer ?
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
23 juin 2007 à 18:06
salut,
si l'image ne s'affiche pas, c'est parce que l'extension gd_2 n'est pas activé chez toi
Utilisateur anonyme
23 juin 2007 à 17:40
Bonsoir l'image ne s'affiche pas ...

Merci d'avance !
cs_macada Messages postés 5 Date d'inscription dimanche 27 mai 2007 Statut Membre Dernière intervention 28 mai 2007
27 mai 2007 à 20:25
Désolée Amezghal,

j'ai mis ça là parce que ton source me semblait assez proche de ce que je recherche et que visiblement, il intéresse (j'ai trop trouvé de trucs nuls ailleurs)...et je n'avais pas vu qu'il y avait des forums.

Mais, tu as raison, j'ai mis le message dans le forum
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
27 mai 2007 à 20:12
salut
quelle relation avec cette source :s
tu doit poster ça aux forum's
cs_macada Messages postés 5 Date d'inscription dimanche 27 mai 2007 Statut Membre Dernière intervention 28 mai 2007
27 mai 2007 à 19:28
Bonjour tout le monde,
Voilà, j'aimerais bien avoir vos conseils.

J'ai fait un site web avec des pages html et php mais sans rien y connaître ni à l'un, ni à l'autre.
Si ce n'est à force de copier-coller, d'essai-erreurs, être capable de reperer à peu près les paramètres et les modifier.
Tout ça pour vous dire, qu'il faut me parler simplement mais alors très simplement...:-)

Mon problème : le livre d'or !
J'ai pris 2, 3 de vos sources et j'ai réussi à en mettre un en oeuvre. Un qui n'utilise pas de base de données
Sa gestion est sensée être la suivante :
Je récupère par ftp le fichier comment.txt
Je le modifie sur ma machine
Je le remets sur le serveur (free en l'occurrence)
Problème : il est tout chamboulé quand je le réaffiche à partir du site
(et ceci même si je ne modifie rien)
J'ai pensé à un problème d'encodage de texte pendant l'un des 2 transferts (précisons que je suis sous Mac OX) mais mes différents tests n'ont rien donné.

Je vois différentes solutions (avec votre aide) :
- soit vous pouvez me dire exactement comment faire pour encoder correctement les transferts
- soit vous avez/connaissez un source (qui marche !) qui permet une administration en ligne

et dans le 2ème cas, je ne suis pas contre l'utilisation d'une base de données, si elle me permet d'attacher des commentaires spécifiques à certaines pages de mon site (comme dans les blogs où les commentaires sont attachés aux posts où ils sont faits). Et puis, j'aimerais bien un minimum de sécurité (style recopier un code aléatoire "humain" pour vérifier que le posteur n'est pas une machine).

Je suis trop difficile ?
J'espère que non...

Merci
raffoul Messages postés 12 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 24 mai 2007
24 mai 2007 à 16:28
Je savais bien que j'avais oublié quelque chose. Il faut que tu vérifie également que le pseudo n'est pas pris et que l'adresse email n'est pas déjà utilisée. Car ce serait quand même dommage d'avoir plusieurs comptes avec le même pseudo et la même adresse email !

Pour ta création d'image, c'est pas mal mais tu entres 34 3-4fois pour le nombre de caractères de la string. Plutôt que de réécrire à chaque fois 34, tu mets une constante en haut de ta page.
define('NB_CARACTERES_IMAGE',34);
Un truc comme ca.

Autre idée si t'as le temps :
Et je pense aussi qu'il serait bon d'utiliser AJAX de tel façon qu'il vérifie tes champs au fur et à mesure que tu les remplis. En gros, dès que le champ est déselectionné, la vérification est lancé et le message d'erreur apparait s'il y a besoin sinon par exemple tu colores ton champ en vert.
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
24 mai 2007 à 02:33
merci rafoul :)
c'est pour demain,car là c'est trop tard
raffoul Messages postés 12 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 24 mai 2007
24 mai 2007 à 02:30
C'est encore moi lol. J'ai regardé les regex.

Je pense qu'il faudrait améliorer le regex de vérification du pseudo : ~^[a-zA-Z0-9\._-]{4,20}$~ car de la façon dont tu la fais, l'utilisateur pourra commencer ou terminer son pseudo par un . ou un - ou _
Je pense qu'il faudrait le modifier de telle sorte que ces caractères ne s'affichent qu'au milieu du champ rentré par l'utilisateur, et également que l'utilisateur ne puisse écrire à la suite plusieurs de tes caractères optionelles : ._-

Car là un pseudo comme raffoul--_. ca passe :s ou encore --raffoul..-qs

Et améliorer la vérif du mot de passe, ça peut être bien aussi avec un petit regex. Par exemple, vérification qu'il ne contienne pas de caractères spéciaux, espace, accents ou autres.
raffoul Messages postés 12 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 24 mai 2007
24 mai 2007 à 02:04
Je viens de revoir le code.
Tu fais deux fois la même vérication : voir si la longueur de ton mot de passe est inférieur à 4. Plutôt que de tester 2 fois, tu stock le résultat de ton test dans une variable et tu la réutilise après.

exemple :
if (strlen($champ) < 4)
$booleen = false;

if (tanouvellecondition && $booleen=false)
> ton instruction

C'est pas mieux comme ca ? :p

Dernière chose, à la fin, pour traiter les éléments du tableau, un simple foreach aurait suffit ;).

C'est tout pour le moment.
raffoul Messages postés 12 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 24 mai 2007
24 mai 2007 à 01:50
L'idée est bonne mais bon on est là pour critiquer lol. Dans le bon sens du terme :).

La vérification AJAX est bonne mais on fait comment si javascript est désactivée ou si le navigateur n'est pas compatible AJAX ou JS. Ben la personne ne pourra pas s'enregistrer. Pourquoi ? car il n'y a pas de solution de rechange.

Donc, dans ton fichier JS,
if (Oajax){
// tu vérifie ici avec AJAX
}
else{
// simple vérification javascript si AJAX non opérationel
}

Et puis, tu redirige ton formulaire vers une page spécifique pour inscrire le visiteur qui n'a pas JS. Après, tu peux jouer aussi avec les balises <noscript> pour ceux qui n'ont pas JS. Enfin, il y a plein de solutions.

Et à ce moment là, ton code sera complet et accessible à tous, du moins je pense :)
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
21 mai 2007 à 13:01
j'ai mis a jour la source
-séparation de js et css.
-amélioration captcha
-simples cotes

pour afficher le captcha(image code) le serveur doit supporté la biblio gd
jackie0000 Messages postés 22 Date d'inscription dimanche 24 juillet 2005 Statut Membre Dernière intervention 3 août 2009
21 mai 2007 à 09:21
j ai deux erreurs générées
- l image du code n est pas affichée
- meme si je saisie un pass diff de son re-pass on me renvoie pas cette erreur
quelq un aurait il une idée?
wizard512 Messages postés 459 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 11 mai 2013 2
19 mai 2007 à 19:41
Skreo > Certe apparament parmit tous les visiteurs de ton site
il n'y aurai personne qui utilise IE 4....et?
Supposont qu'il y ait actuellement un navigateur voir plusieurs
( IE 4 comme par hasard ) sur ton site,
et qu'il ne puisse maleureusement pas utilliser "completement"
ton site...

...sa ne vodrait pas le cout de rajouter seulement quelque
centaine d'octets pour assuré une meilleur compatibilité?
( précisément 235 octets si tu veux parler de la taille )

Dans tous les codes orienter web,
que je fais ou que j'ai fais j'essaye toujours d'assurer
une compatibilité maximum, pour que tous le monde sois a l'aise.
Et pourquoi ne pas en faire autant pour ce code?


WEBDEB > pourquoi pas redéfinir innHTML via une fontion?
Aprés avoir vu l'article suivant,
j'ai décider de créer la fonction innerHTML( id , content )
plus bas qui elle est valide DOM....


url :

http://www.journaldunet.com/developpeur/tutoriel/dht/050524-javascript-innerhtml-equivalent-dom-getelementbyid-replacedata.shtml

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

var innerHTML = function( id , content )
{
longueurCible = getElement( id ).firstChild.length;
getElement( id ).firstChild.replaceData( 0 , longueurCible , content );
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
19 mai 2007 à 12:31
Il faut noter aussi que innerHTML n'est pas valide DOM !
Skreo Messages postés 53 Date d'inscription samedi 12 novembre 2005 Statut Membre Dernière intervention 25 août 2008
19 mai 2007 à 11:42
Et l'objet XHR ?
Quand je regarde les stats de mon sites, sur 137 431 visiteurs j'ai 0,00 % de visiteurs ayant la version 4 de IE (5 visiteurs), sachant que le taux de visiteurs de mon site utilisant IE est au dessus de la moyenne avec 82,97 % au total...
A ce niveau là je ne pense pas qu'il soit nécessaire de donner des alternatives à toutes les fonctions non supportées par IE4, en tenant compte du poids qu'elle peuvent prendre (un fichier js trop lourd peut être très désagréable, je parle en connaissance de cause...)
wizard512 Messages postés 459 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 11 mai 2013 2
19 mai 2007 à 10:09
oui, innerHTML est supporter par IE 4 et plus...
...mais pas par les versions précédentes de IE.
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
19 mai 2007 à 00:23
en parle de getElementById mais, eske ie 4 supporte innerHTML ??
wizard512 Messages postés 459 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 11 mai 2013 2
18 mai 2007 à 23:07
Certain utilisateurs ignorant, et même si sa simbolise juste 5%
c'est comme même 5% !!!
c'est pour sa qu'il ne faut pas exclure les minoriters quelqu'elle soit....

...c'est avec des minorités qu'on fait une majorité.
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
18 mai 2007 à 23:04
Qui utilise encore des versions aussi obsolètes de navigateurs ?
wizard512 Messages postés 459 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 11 mai 2013 2
18 mai 2007 à 21:17
Skreo > non pas du tous certaine version de quasiment tous les navigateurs ne prennent pas en charge "getElementById"....

Comme par exemple IE qui la prit en charge que a partir de la version 4,
NS a partir de la version 4 aussi, ....

Donc je croie que le rajout de ce petit bout de code est loin d'etre inutile...

Exemple d'article sur le sujet :
"http://www.metalusions.com/backstage/articles/8/"

Bon codage i++
Skreo Messages postés 53 Date d'inscription samedi 12 novembre 2005 Statut Membre Dernière intervention 25 août 2008
18 mai 2007 à 13:14
wizard512, ceci est totalement inutile car getElementById est géré par tous les navigateurs depuis bien longtemps.

Sinon amezghal, ton code a l'air pas mal dans l'ensemble, j'apprécie la validité du code xhtml et le js propre. Par contre il est toujours préférable d'externaliser le js et le css, pour des questions de propreté, de validité, et de chargement (un fichier .js ou .css sera mis en cache, alors que directement dans la page il sera rechargé à chaque fois).

Côté php par contre j'aime pas vraiment ton code. Déjà il est mal indenté, et je te conseillerais d'utiliser les simples quotes ' au lieu des doubles quotes " pour tes chaînes de caractères. Et puis ce n'est pas une bonne idée d'utiliser la fonction array_push alors qu'un opérateur [] peut la remplacer en augmentant les performances et en améliorant la lisibilité.
Remplace donc ça :
array_push($erreurs,"pseudo: seulement des chiffres et des nombres , entre 4 et 20 caracteres");

Par ça :
$erreurs[] = 'Pseudo: seulement des chiffres et des nombres, entre 4 et 20 caractères';

Humm et puis je pense que ton captcha est trèèèèès facile à lire avec un OCR, il faudrait donc t'attaquer un peu à faire un captcha plus évolué (rotation des caractères, couleurs, déformations).
Voilà j'ai fini de râler ^^
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
18 mai 2007 à 10:47
Très bonne idée wizard512 ! :)
Je prends !
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
16 mai 2007 à 20:04
merci
c'est fait + quelques corrections
wizard512 Messages postés 459 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 11 mai 2013 2
16 mai 2007 à 19:33
Joli code, sauf qu'il fodrait peut etre changer ce bout la :

"document.getElementById('msg')"

par celui si

"getElement( 'msg' )"

et rajouter la fonction suivante,
pour une meilleur compatibilité des navigateurs....

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function getElement( id )
{
if ( document.getElementById )
{
return document.getElementById( id );
}

if ( document.layers )
{
return document.id;
}

return document.all.id;
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~