Bonjour ,
j’ai fait un formulaire de contact (http://www.ladoucaine.fr/Contact.html) qui est sensé fonctionner (du moins, moi,quand je le teste, cela fonctionne niquel…sous IE7 et FF)
Il fonctionne , oui, je reçois bien les infos bidons que je place dans les champs.
Sauf que je reçois des mails bizarres provenant par le biais de ce formulaire avec comme sujet <>, et dans le texte du mail je reçois simplement les intitulés des champs (sans rien derrière ) comme si c’était remplit à l’encre invisible???
-Est-ce un polueur du web qui tente d’envoyer une pub débile?
-Ou est-ce quelqu’un qui envoi ce formulaire avec une police, un ordi un OS particulier, que je ne peux pas décrypter?
-Ou est-ce un marsien?
-Ou autre…
Pouvez-vous m’aider, je ne vois pas du tout le problème…
Petite précision: je ne suis pas un dieu en programmation…
Merci à vous
ça implique que ton register_globals soit activé sinon tu reçoit une erreur car $nom n’a pas été déclaré.
Mais dans tous les cas, register_globals est une aberration! Car en passant des arguments dans l’url on créerait des variables dans ton script sans que tu le veuille!
Bref refait ton script en récupérant proprement tes variables post
OUah!!! Super!, oui, mais heu, je n’ai malheureusement pas tout compris…sorry…
En clair que dois-je supprimer , je ne maitrise pas du tout ce jargon…
Merci de ton aide…
Les paramètres post ou get sont normalement stockées dans des “superglobales” ($_POST, $_GET et $_REQUEST).
Mais il existe une option de php (register_globals) qui transforme ces paramètres en variables classiques ($nom, $email…).
Toi tu récupères tes paramètres comme si register_globals était activé. Ca pose forcément un problème : soit ton register globals n’est en fait pas activé et c’est pourquoi tu n’arrives pas à récupérer tes paramètres, soit il est activé mais c’est mal! (faudra chercher ailleurs le problème mais faut le désactiver).
Il faut que tu appeles la page “phpinfo.php” qui doit se trouver à la racine de ton site. Ca va lister toute la configuration de ton php.
Si tu vois que “register_globals” est à “off”, le réglage est ok mais ça veut dire que ton erreur vient de là.
S’il est à “on”, il faut changer ça! (soit tu as la main sur les fichiers php et faut modifier “config.php”, soit tu dois demander à ton hébergeur. (et dans tous les cas il faudra modifier ta façon de récupérer les arguments dans tout ton site! c’est laborieux mais important!)
par exemple la ligne
$nom = '- Nom du responsable:
OK, merci, je crois commencer à comprendre, d’abord je cherche mon fichier phpinfo.php
Je vais voir ensuite
[quote="_kiki"]
Il faut que tu appeles la page “phpinfo.php” qui doit se trouver à la racine de ton site. ;
[/quote]
Oui, mais peux-tu être encore plus clair, je ne trouve pas ce fichier sur mon serveur, et lorsque je tape mon url de site avec phpinfo.php à la suite, je n’obtiens rien…?
Merci encore
J'oubliais, on m'a parlé aussi de Captcha, ne penses-tu pas que cela soit un "spam" d'ordi?
oui il est possible que tu n’aie pas ce fichier… Demandes à ton hébergeur si register_globals est activé. si oui dit lui de le désactiver.
Une captcha ne servira a rien pour l’instant. Tu as d’autres modifs de sécurités bien plus importantes à faire car si on appelle directement traitement.php on dirait bien que ça t’envoie un mail :ange:
tu dois :
-récupérer les $_POST et pas les variables créées par register_globals
-filter les données : le filtre javascript est un filtre ergonomique, pour la sécurité tu ne peux te fier qu’à php. (tu dois t’assurer que les données que tu va manipuler correspondent à ce que tu attendais) (ça évitera par exemple d’envoyer des emails vides
Edité le 06/03/2009 à 13:01
C’est fort, car, moi, quad je m’envoyais un mail pour essayer, je recevais bien toutes les données que j’avais rentrées…
Bref,
je viens d’effectuer la demande pour le fichier register machin…
J’attends la réponse…et je te tiens au courant
Merci
oui c’est normal qu’avec des données ça passe (et que tu reçoive le mail)! le problème c’est que ça passe aussi sans données! (et même sans passer par le formulaire aparemment)
lol oui c’est moi donc tu as bien le register_globals d’activé!
j’ai fait ce test sans passer par ton formulaire (en appelant directement traitement.php?nom=ceci_est_un_test&prenom=si_tu_lis_cela…)
Donc un script appelant sans cesse ta page pourrait vite saturer ta boite mail… (c’est un exemple bien gentil mais il peut t’arriver bien pire si tu ne filtre pas tes données )
[i]Pour une meilleure sécurité, il est idéal de placer la variable register_globals sur Off.
Cette position est dailleurs demandée par le CMS Joomla lors de son installation.
Il vous faut créer votre fichier php.ini en y plaçant le contenu suivant :
register_globals = Off
Transférez alors le fichier dans lensemble des répertoires de votre application afin de voir la valeur PHP modifiée.[/i]
Je vais donc tenter cette opération…
Ce fihier php.ini n’existe-t-il pas déjà?
Il abusent un peu! mais bon, sur un site mutialisé… peut être que d’autres ont besoin du register_globals…
bref, oui normalement le php.ini est dans les sources de php, mais là ton hébergeur te propose un bricolage.
Essaye de faire comme ils te disent ça devrait marcher.
(et n’oublies pas de faire les modifs que je t’ai proposé )
Bon, visiblement j'ai fait un essai, et je reçois les données que je me place....
mais, ça cela marchait avant,
Je crois qu'il n'y a plus qu'à attendre d'avoir un mail de l'homme invisible(si jamais il réapparaît...)
Que me conseilles-tu d’autre, grandgourou?
Si tu t’y connais aussi en multilinguisme, je me prends aussi la tête avec cela…
Encore merci pour ton temps passé à aider un naze du php comme moi…
ok donc maintenant c’est un peu plus dur de t’envoyer des spams. Mais ce n’est pas parfait.
Si tu ne reçois plus de spams tu peux t’en contenter, mais la règle de l’art voudrais que tu filtre toutes les données avant de le manipuler (vérifier que l’email a la forme d’un email, etc…)
Et si tu veux t’amuser, il faudrait t’assurer que les données viennent obligatoirement de ton formulaire. Par exemple tu hashe un code en sha1, tu le met dans un champ caché, dans traitement.php tu le décrypte, et si ce n’est pas le code attendu tu n’envoie pas le mail.