Forums Développement Multimédia

Aller au contenu

Formulaire avec code de sécurité

CODE HTML CSS

73 réponses à ce sujet

#46 goudurisc

  • Members
  • PipPipPipPipPipPipPipPip
  • 674 messages

Posté 23 August 2010 - 15:24 PM

C'est parfait !!!
Et justement pour le piège à bot d'Efred qui m'intéresse forcément, est-ce possible de me délimiter la partie de code à intégrer comme tu la fais pour la version calcul ? bon après ça, je ne tire plus sur la corde ! (et je ne veux pas dire que tu peux aller te faire pendre ! :Hola: )

#47 Eddy.vh

    Éternel apprenti.

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 1194 messages

Posté 23 August 2010 - 20:32 PM

Voir le messagesymphonie, le 23 August 2010 - 06:31 AM, dit :

Je n'ai pas SMTP sur ma machine de test.
Bonsoir.
Je ne comprends pas tout là, je n'ai pas d'SMTP sur ma machine mais j'ai pu tester ce script en local. Si tu as un environnement PHP (Wamp ou autre), le PHP est doté de la fonction mail. (Je sais pas si je m'exprime bien là).

Goudurisc. Arrives-tu à placer le champ caché dans ton formulaire existant ?
Si oui, en début de traitement de ton formulaire, il te suffi de placer le code php de vérification de remplissage de ce champs et d'envoyer un exit si c'est le cas et une suite au script si c'est pas le cas.
Sincèrement, j'y connais que très peu de chose en php et je suis arrivé à personnaliser le script que j'utilise, je doute que tu n'arrives à le faire avec le tien.

#48 goudurisc

  • Members
  • PipPipPipPipPipPipPipPip
  • 674 messages

Posté 23 August 2010 - 21:04 PM

Voir le messageedfred, le 23 August 2010 - 20:32 PM, dit :

Sincèrement, j'y connais que très peu de chose en php.

edfred, je trouve que tu te dévalorises assez vite ! Pour ma part, même si je pense avoir quelques compétences dans d'autres domaines informatique, je suis certainement très (très) loin de pouvoir personnaliser à volonté un doc php dans la mesure où je ne comprends pas l'essentiel des lignes de code. Comme je le précisais, je n'en suis qu'au stade des variables et des conditions dans le tuto du site du zéro...

Alors c'est vrai qu'à ce jour, la seule solution pour moi de pouvoir récupérer la partie qui permet de faire fonctionner le champ masqué, c'est de l'isoler tel que l'a fait symphonie pour le test "calcul".

Mais encore une fois, je sais le temps que prend chaque réponse aux questions et vu la longueur de ce post, je pense avoir déjà bien profité de vos conseils à toi et symphonie. :Hola:

#49 Eddy.vh

    Éternel apprenti.

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 1194 messages

Posté 24 August 2010 - 07:05 AM

Voir le messageGoudurisc, le 23 August 2010 - 21:04 PM, dit :

edfred, je trouve que tu te dévalorises assez vite !

Et pourtant c'est vrai, je tente de comprendre le code que je lis et c'est pas toujours facile.

Pour le temps que prennent les réponses, y pas de problème, on est là pour ça non ???

Essayes de me faire parvenir tes fichiers que j'y jette un œil et si je le peux, je t'aiguillerai le mieux possible. Mais ce sera selon mon temps disponible.

"edfred69 chez gmail.com"

#50 gerard.bartholome

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 110 messages

Posté 24 August 2010 - 07:20 AM

Voir le messageGoudurisc, le 23 August 2010 - 15:24 PM, dit :

Et justement pour le piège à bot d'Efred qui m'intéresse forcément, est-ce possible de me délimiter la partie de code à intégrer comme tu la fais pour la version calcul ?
C'est ici :
// --- test de la validité des champs saisis ---
if (!empty($_POST["site_web"])) {
exit("merci de votre visite");
}
si le champ de formulaire 'site_web' n'est pas vide (not empty) le script s'arrête par exit en envoyant le message "merci de votre visite". Un utilisateur humain ne verra pas le champ si les CSS sont activées sur son navigateur ;
Si les CSS sont désactivées il doit voir aussi le message : "Veuillez ne pas remplir le champ..." détail ci-dessous :
          <p class="dissim">
            <label for="site_web">Veuillez ne pas remplir le champ suivant sous peine de non envoi du formulaire, ceci est
            une protection antispam : </label><!-- Avertissement pour les personnes utilisant des navigateurs en mode texte qui ne tiennent pas compte des CSS. -->
            <input type="text" name="site_web" id="site_web" tabindex="1" />

Je vois que tu as bien avancé.

Bon courage !

#51 gerard.bartholome

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 110 messages

Posté 24 August 2010 - 07:57 AM

Salut Edfred,

Pour envoyer un mail quel qu'il soit, il faut ce qu'on appelle un serveur SMTP qu'il faut configurer dans le php.ini du WAMP. Pour ma part j'utilise EasyPHP et/ou XAMP et pour chacun j'ai du modifier le fichier de configuration.
Sur le portable du boulot, où j'ai fait le test, je n'ai pas de serveur SMTP local d'installé ; et je ne veux pas faire passer mon trafic privé par le serveur SMTP d'entreprise qui est sécurisé et tracé.

#52 goudurisc

  • Members
  • PipPipPipPipPipPipPipPip
  • 674 messages

Posté 24 August 2010 - 10:26 AM

Merci pour votre résistance !!!

Pour savoir enfin s'il est réaliste de faire fonctionner le tout sur mon formulaire, je vous le joins. Il fonctionne en deux parties :

- forumForm.php : le fichier où se trouvent mes éléments de formulaire
-forumValide.php : le fichier php qui gère mon formulaire et qui contient le message de remerciement

(Ne faite pas attention au résidu de construction de pages en tableau, depuis, je fonctionne en div, comme quoi, j'arrive à évoluer un peu... :Hola: )

Fichier(s) joint(s)



#53 gerard.bartholome

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 110 messages

Posté 24 August 2010 - 11:51 AM

Hello Goudurisc,

je n'ai pas su intégrer le contrôle dans la validation du formulaire en javascript. Je l'ai intégré à forumValide.php avec l'inconvénient que si l'utilisateur fait retour après l'erreur, il perds toutes les données entrée.
Il me semble au vu de la validation javascript que tu as Dreamweaver ? Il existe un comportement javascript qui te permet de revenir à la fenêtre précédente (reculer d'une page, comme dans un navigateur); En remplaçant le code php par ce retour, les données ne seront pas effacées. (mais c'est encore bricolage parce que le calcul n'est pas régénéré). Le mieux serait d'intégrer ton formulaire dans ce qu'Edfred t'a envoyé au départ. Cela marche nickel chrome.

Bon, je t'ai laissé encore un peu de travail ... Courage

#54 goudurisc

  • Members
  • PipPipPipPipPipPipPipPip
  • 674 messages

Posté 24 August 2010 - 12:50 PM

Pour l'intégration du code dans mon formulaire, j'ai noté que tu avais ajouté la liste des champs avec un nouveau code soit :
(isset($_POST['Civilite']) ? $Civilite=$_POST['Civilite'] : $Civilite='');

qui remplacerait

$Commentaire .= " Civilité : $Civilite\n";

Est-ce que c'est plus correct ?



Sinon, je voudrais bien exploiter la version de edfred mais je ne comprends pas pourquoi j'ai toujours des problèmes avec :

En local (avec Mamp) ou en distant, le formulaire s'affiche correctement mais après validation, le résultat est :

EEmail Webmaster : webmaster@orange.fr
Entête : From: visiteur@orange.fr Return-Path: webmaster@orange.fr MIME-Version: 1.0 Content-type: text/plain; charset=utf-8
Titre caché : monsite.net Titre : Objet
Nom : test
Message : Message blabla
ip Adresse IP: ::1
ip Navigateur: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; fr-fr) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8
ip Nom du contact : test
Votre message a été envoyé.
Envoyer un autre message...

Et dans ma boîte mail le résultat est :
Adresse IP: 83.202.246.74
Navigateur: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; fr-fr) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8
Nom du contact : nom du visiteur
Message blabla

Bon, la logiique voudrait que le mail de validation n'affiche qu'une chose : "Votre message a été envoyé." Et dans la boîte mail, la réponse à tous les champs (il n'y a que le nom et le message qui s'affichent)...

J'avoue que je souffre un peu :Hola:

#55 gerard.bartholome

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 110 messages

Posté 24 August 2010 - 13:48 PM

Citation

Pour l'intégration du code dans mon formulaire, j'ai noté que tu avais ajouté la liste des champs avec un nouveau code soit :
(isset($_POST['Civilite']) ? $Civilite=$_POST['Civilite'] : $Civilite='');
C'est pour transformer la variable de formulaire $_POST['Civilite'] en variable dynamique $Civilite. Je ne comprends pas comment ton code pouvait fonctionner sans cela.

Citation

En local (avec Mamp) ou en distant, le formulaire s'affiche correctement mais après validation, le résultat est : ...
Ce sont simplement des instructions echo que j'avais ajoutées pour tester le chargement correct des variables dans le script. Tu peux enlever les "echo" qui précèdent ces instructions :
echo '<p>Votre message a été envoyé.</p>';
echo '<p><a href="'.$_SERVER['PHP_SELF'].'">Envoyer un autre message...</a></p>';

Citation

Et dans ma boîte mail le résultat est :
Adresse IP: 83.202.246.74
Navigateur: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; fr-fr) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8
Nom du contact : nom du visiteur
Message blabla
Qui est destinataire de ce mail, le webmaster ?
Si c'est le cas cela me semble correspondre à ce qui est envoyé. Sinon dis moi ce que tu ne veux pas ? Je t'indiquerai les modifs à faire. Mais on y va pas à pas OK ?
@+

#56 goudurisc

  • Members
  • PipPipPipPipPipPipPipPip
  • 674 messages

Posté 24 August 2010 - 18:12 PM

Le destinataire, c'est moi en l'occurrence mais ça pourrait être un client (je sens que ma réponse ne correspond pas à ce que tu attend :lol: ...)

Concernant le mail de réception, j'aurai dû voir apparaître, en plus du nom et du message (ça c'est bon), l'objet et l'adresse mail de l'expéditeur et ces infos n'apparaissent pas

Sinon, je suis parvenu à supprimer tous les champs "inutile" du mail de confirmation d'envoi (mais je n'exige pas dans l'immédiat la médaille olympique du php :Hola: ). Il ne reste donc que "Votre message a bien été envoyé". Pour l'aspect css, comment personnaliser le look de cette page de validation puisque ce n'est pas une page php à part entière mais un simple intitulé de code ?

Pour essayer de retrouver les mêmes infos que mon ancien formulaire, ex : "Inscription à un forum depuis le site monsite.com" , est-ce que j'ajoute tout bêtement la variable :
$sujet = "Inscription à un forum depuis le site monsite.com";

Bon, on a parlé de pas-à-pas, ce qui me va plutôt bien mais si ce n'est pas compliqué, sera t-il possible de permettre à l'emmeteur de recevoir un mail de confirmation de son envoi ? mais cette option est accessoire. ;-)

#57 Eddy.vh

    Éternel apprenti.

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 1194 messages

Posté 24 August 2010 - 19:01 PM

Voir le messagesymphonie, le 24 August 2010 - 07:57 AM, dit :

Salut Edfred,

Pour envoyer un mail quel qu'il soit, il faut ce qu'on appelle un serveur SMTP qu'il faut configurer dans le php.ini du WAMP. Pour ma part j'utilise EasyPHP et/ou XAMP et pour chacun j'ai du modifier le fichier de configuration.
Sur le portable du boulot, où j'ai fait le test, je n'ai pas de serveur SMTP local d'installé ; et je ne veux pas faire passer mon trafic privé par le serveur SMTP d'entreprise qui est sécurisé et tracé.

C'est juste, tu as raison, je me rappelais pas ce changement dans la config. :Hola: Je dis beaucoup de bêtises ces derniers temps, le surmenage peut-être.

#58 gerard.bartholome

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 110 messages

Posté 25 August 2010 - 08:24 AM

Citation

Le destinataire, c'est moi en l'occurrence mais ça pourrait être un client (je sens que ma réponse ne correspond pas à ce que tu attend :Hola: ...)
Si, si c'est bien ce que je voulais savoir...
Dans ce cas, il vaut mieux supprimer les informations inutiles et ne garder que cela.
if (@mail($email_webmaster,$_POST["titre"],$nom.$_POST["message"],$entete)){

Citation

Concernant le mail de réception, j'aurai dû voir apparaître, en plus du nom et du message (ça c'est bon), l'objet et l'adresse mail de l'expéditeur et ces infos n'apparaissent pas
la c'est pareil tu ajoutes dans la ligne de l'email, juste avant ou après $nom, tes variables que tu veux voir apparaître dans le corps du message, séparées par des points.
Exemple :
if (@mail($email_webmaster,$_POST["titre"],$objet.$email_exped.$nom.$_POST["message"],$entete)){
Pour que le code ne soit pas bout à bout et pour aérer un peu, tu peux insérer des retours à la ligne en insérant "\n" pour 1 retour à la ligne.
Exemple :
if (@mail($email_webmaster,$_POST["titre"],.'\nObjet :'.$objet.'\n\nEmail expéditeur : \n'.$email_exped.$nom.$_POST["message"],$entete)){
Tu vois le principe ? Le point est toujours la pour 'coller' (concaténer) les données.
Sur Mac il faut peut-être utiliser \r\n au lieu de \n, je ne sais pas trop, il faudra que tu testes.

Citation

Pour essayer de retrouver les mêmes infos que mon ancien formulaire, ex : "Inscription à un forum depuis le site monsite.com" , est-ce que j'ajoute tout bêtement la variable :
$sujet = "Inscription à un forum depuis le site monsite.com";
C'est presque cela, bravo, tu fais des pas de géant :
C'est mieux comme cela :
$sujet = 'Inscription à un forum depuis le site '.$mon_site
ou $mon_site est le résultat d'une variable formulaire :
if (isset($_POST['site_web'])) {
$mon_site=$_POST['site_web']
}
 
je fais simple, mais il faudrait protéger les entrés de formulaire par stripslashes, htmlentities, mais restons dans le pas à pas ...

On peut facilement ajouter le mail en copie au visiteur, mais on peut aussi faire une page HTML lui disant que le message est envoyé et sera traité, c'est comme tu veux. Si tu veux la copie, on verra au pas suivant, quand tes données correspondront à ce que tu souhaites.

Bravo pour tes progrès en PHP.

@+

#59 goudurisc

  • Members
  • PipPipPipPipPipPipPipPip
  • 674 messages

Posté 25 August 2010 - 11:16 AM

Je tente de prendre le temps de comprendre mais je me suis jeté direct dans ce code sans préparation et sans filet.

D'après ce que je crois comprendre, c'est cette ligne qui permet d'afficher les différentes infos du formulaire :
if (@mail($email_webmaster,$titre_cache.$_POST["titre"],$ip.$nav.$nom.$_POST["message"],$entete)){
 

Si c'est le cas, je n'affiche ici que : le mail du webmaster (moi??? et celui de l'émetteur ?), le titre (comment le nommer plutôt "objet" ?), le message ?
Comment ajouter les autres infos comme le mail de l'expéditeur ?

Bon, depuis le début, je dois reconnaître que je ne comprends pas l'omniprésence de "webmaster". Qu'est ce qui change si c'est un client qui doit recevoir les réponses (au-delà de l'adresse à définir en tête du code) ? ce qui devrait d'ailleurs être le cas la plupart du temps.

Et dans cette partie, il y a pas mal d'infos que je peux supprimer, à voir comment en ajouter :
echo "<p>Email Webmaster : $email_webmaster</p>";
echo "<p>Entête : $entete</p>";
echo '<p>Titre caché : '.$titre_cache. ' Titre : '. $_POST['titre'].'</p>';
echo '<p>Nom : '.$_POST['nom'].'</p>';
echo '<p>Message : '.$_POST['message'].'</p>';
echo '<p>ip '.$ip.'</p>';
echo '<p>ip '.$nav.'</p>';
echo '<p>ip '.$nom.'</p>';
echo '<p>&nbsp</p>';
echo "<p>Votre message a été envoyé.</p>";
echo "<p><a href=\"".$_SERVER["PHP_SELF"]."\">Envoyer un autre message...</a></p>";
}

ce qui pourrait devenir :
echo "<p>Email Webmaster : $email_webmaster</p>";
echo '<p>Titre caché : '.$titre_cache. ' Titre : '. $_POST['titre'].'</p>';
echo '<p>Nom : '.$_POST['nom'].'</p>';
echo '<p>Message : '.$_POST['message'].'</p>';
echo "<p>Votre message a été envoyé.</p>"; //cette partie sera remplacée par l'envoi d'un message de confirmation en html ???????
}

Sinon, pour la validation de l'envoi, je préfère pouvoir proposer un page hml propre et chartée. Comment l'associer à la réponse ?

PS : J'ai bien compris que l'on pouvait ajouter un ou plusieurs retour à la ligne par soucis de clarté (\n\n)

#60 gerard.bartholome

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 110 messages

Posté 25 August 2010 - 14:19 PM

Citation

D'après ce que je crois comprendre, c'est cette ligne qui permet d'afficher les différentes infos du formulaire :

if (@mail($email_webmaster,$titre_cache.$_POST["titre"],$ip.$nav.$nom.$_POST["message"],$entete))
{
Cette ligne envoi le mail.
mail  ( string $to  , string $subject  , string $message  [, string $additional_headers  [, string $additional_parameters  ]] )
avec 3 paramètres obligatoires et 2 facultatifs :

  • $to = le ou les destinataire(s) du mail => chez toi $email_webmaster ;
  • $subject = objet du message => chez toi $titre_cache suivi du contenu du champ "titre";
  • $message = texte du message => chez toi $ip=(adresse IP du serveur) suivi de $nav=(caractéristiques du navigateur) suivi de $nom= "Nom du contact :" suivi du contenu du champ "nom" suivi du contenu du champ "message";
  • $additional_headers = expéditeur, Bc, Bcc, return path, code MIME, Content-type... => chez toi $entete
  • $additional_parameters = ? => chez toi : non utilisé

Est-ce plus clair ?

à suivre...

#61 goudurisc

  • Members
  • PipPipPipPipPipPipPipPip
  • 674 messages

Posté 25 August 2010 - 16:58 PM

Je ne sais pas si la fin de journée approche mais je ne vois pas la ligne suivante dans le code (même pas un string qui ressort dans ma recherche...) :
mail  ( string $to  , string $subject  , string $message  [, string $additional_headers  [, string $additional_parameters  ]] )
 

Bon, je crois que la seule manière de comprendre serait d'ajouter un nouveau champ (ex : Souhaitez-vous une documentation ?+ bouton radio "oui" + "non") et savoir comment il doit apparaître en tête, dans le traitement des données et dans la partie formulaire. Car il faut dire qu'avant de rentrer dans le détail, c'est bien la structure que je ne comprends pas forcément. Par exemple, la première partie "traitement des données", je comprends la mise en forme avec les cinq champs représentés. Pour le test de validité, ça va encore (un peu) mais ensuite...

Le soucis, c'est qu'il faudrait aborder encore en php la partie menu déroulant, case à cocher... ça peut devenir assez long

Bon, Symphonie, je crains que tu ne te lasses maintenant et si j'ai besoin d'un conseil ultérieurement et que tu croises mon post, tu vas fuir en courant.
J'avoue que je stresse aussi avec la fin du mois qui arrive (avec les charges) et mes dossiers qui rament. Je sens surtout que je suis vraiment trop limité techniquement pour te faire perdre encore du temps sur ce dossier. Au mieux, je pourrai le relancer après l'avoir un peu plus décortiqué.

Je te remercie quand même un nouvelle fois d'être allé aussi loin dans ce soutien (record battu, tous forum confondus !) ;-)

#62 gerard.bartholome

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 110 messages

Posté 26 August 2010 - 08:22 AM

Hello Goudurisc,

Elle n'est pas dans ton code cette ligne. C'est moi qui n'ai pas été assez précis dans mes explications, je m'en rends compte maintenant. J'ai mis cette ligne de syntaxe de la commande mail pour préciser ce qu'elle et notamment qu'elle ne permet PAS d'afficher les différentes infos du formulaire, comme tu écris dans ton précédent post :

Elle envoie le mail tout simplement.

Ce qui est "confusant" dans ce script, c'est que l'auteur a collé ensemble (concaténé) plusieurs variables pour certains paramètres de la fonction mail ; ce qui est bien sur correct, mais rend la lecture difficile.

Est-ce plus clair pour toi si cela est écrit ainsi :

 
...
// PREPARATION DES VARIABLES DU MAIL

// on affecte les champs de formulaire aux variables qui sont utilisées comme paramètres de la fonction mail

$to = 'goudurisc@abc.com'; // et ici tu peux rajouter l'expéditeur du message, s'il doit recevoir une copie (*)
$sujet = $_POST["titre"];
$message = $_POST["nom"].'\nEmail : '.$_POST["email_expediteur"].'\nA écrit :\n'.$_POST["message"];
$additional_header = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
$$additional_header.= "Return-Path: ". $email_webmaster . "\n";
$$additional_header.= "MIME-Version: 1.0\n";
$$additional_header.= "Content-type: text/plain; charset=utf-8";

// le [b].=[/b] signifie qu'on met bout à bout les données = concaténation de chaîne de caractères

// ENVOI DU MAIL EN TESTANT LA VALEUR RENVOYEE PAR LA FONCTION if (@mail... renvoie une valeur vrai/faux

if (@mail($to, $sujet, $message, $additional_header)){

// ALTERNAT VRAI : mail envoyé

echo '<p>Votre message a été envoyé.</p>';
echo '<p><a href="'.$_SERVER['PHP_SELF'].'">Envoyer un autre message...</a></p>';

// On affiche l'information "Votre message a été envoyé."
// dans la ligne suivante un lien à l'utilisateur (ici pour Envoyer un autre message...)
// '.$_SERVER['PHP_SELF'].' est une variable serveur Php qui donne le nom de la page web en cours. Le lien renvoie donc sur la page en cours.

// FIN VRAI

}

// ALTERNAT FAUX : une erreur s'est produite durant l'envoi du mail

else {

// MEME PRINCIPE QUE pour l'alternat vrai
// erreur lors de l'envoi du mail
echo '<p>Un problème s\'est produit lors de l\'envoi du message.</p>';
echo '<p><a href=\"'.$_SERVER['PHP_SELF'].'\">Réessayez…</a></p>';

FIN Alternat FAUX
}
...
// (*) Il est cependant plus logique de le mettre en CC (copie) dans les $additional_header, après le FROM ... par exemple
 

Pour la longueur du post : si un modo trouve que c'est trop long, il nous avertira déjà. Vu le nombre de lecture il semble intéresser quand même un certain nombre de personne.

Ce qui me gêne le plus, c'est que tu sembles te mettre la pression et que tu manques peut-être un peu de "recul" par rapport au sujet, qui comme disait Edfred est somme toutes assez simple.

En tous cas j'admire ton courage et je te dis encore une fois, tiens le coup, ne laisse pas tomber maintenant ...
Désolé si j'ai de nouveau été "verbeux"...

Cordialement

#63 goudurisc

  • Members
  • PipPipPipPipPipPipPipPip
  • 674 messages

Posté 26 August 2010 - 10:14 AM

Je n'avais pas remarqué le nombre de visiteurs, il semble effectivement que le sujet interpelle. Bon, je vais essayer d'aller plus loin si ça peut aider quelques centaines de spamés.

Concernant ton code, comme il y a plus de commentaire que de ligne de code, c'est forcément BEAUCOUP plus clair, on y retrouve une vraie logique, ce qui ne veut pas dire que la lumière soit totale.

Détail qui a son importance : ton code remplace exactement quelle partie du code d'edfred ? ;-)

#64 gerard.bartholome

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 110 messages

Posté 26 August 2010 - 18:54 PM

Hello Goudurisc,

Euh ????

sauf erreur, j'ai conservé les noms de variable et champs de formulaire tels qu'ils figurent dans le code d'Edfred.
J'ai juste modifié l'instruction d'envoi du mail en mettant les noms des variables telles qu'elles sont dans le manuel en ligne de Php. Manuel Php
(à part webmaster que j'ai laissé de coté pour coder direct un email bidon goudurisc@abc.com).

#65 goudurisc

  • Members
  • PipPipPipPipPipPipPipPip
  • 674 messages

Posté 26 August 2010 - 20:58 PM

Pour la première partie de ton correctif, je ne suis pas sûr de l'intégrer au bon endroit par rapport aux accolades.
Si me tu donnes différentes portions de code d'un seul tenant, il n'est pas dit que je fasse les remplacement au bon endroit. Ce qui est un grande évidence pour toi est encore pour moi plutôt obscur (pour encore quelques temps).

Faut-t-il par exemple conserver à la même place les
}
else {

Je vois que tu as supprimé la partie
else {

// n'a pas été servi
$ip="n\'a pas été servi" . "\n";
$nav="n\'a pas été servi" . "\n\n";
$nom="n\'a pas été servi" . $_POST['nom']."\n\n";
}

Comme tu vois, c'est pas gagné de mon côté... ;-)

#66 gerard.bartholome

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 110 messages

Posté 27 August 2010 - 09:36 AM

Hello Goudurisc,

Si tu ne souhaites pas les informations :
Adresse IP et caractéristiques du navigateur ... il n'y a pas lieu de garder ces lignes. Comme j'ai aussi remplacé la variable $entete par $additional_header, on peut simplifier aussi cela. Il reste donc :

...
          </p>
          </fieldset>
        </form>
        <?php
}
else {
// le formulaire a été soumis sans erreur, on envoie le mail

/*  tu peux supprimer d'ici

$entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
$entete .= "Return-Path: ". $email_webmaster . "\n";
$entete .= "MIME-Version: 1.0\n";
$entete .= "Content-type: text/plain; charset=utf-8";
if (isset($_SERVER)) {
                $ip="Adresse IP: ". $_SERVER['REMOTE_ADDR'] . "\n";
                $nav="Navigateur: ". $_SERVER['HTTP_USER_AGENT'] . "\n\n";
                $nom="Nom du contact : ". $_POST['nom']."\n\n";
}
else {

// n'a pas été servi

                $ip="n\'a pas été servi" . "\n";
                $nav="n\'a pas été servi" . "\n\n";
                $nom="n\'a pas été servi" . $_POST['nom']."\n\n";
}

if (@mail($email_webmaster,$titre_cache.$_POST["titre"],$ip.$nav.$nom.$_POST["message"],$entete)){
// mail envoyé
echo '<p>Votre message a été envoyé.</p>';
echo '<p><a href="'.$_SERVER['PHP_SELF'].'">Envoyer un autre message...</a></p>';
}
else {
// erreur lors de l'envoi du mail
echo "<p>Un problème s'est produit lors de l'envoi du message.</p>";
echo "<p><a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez…</a></p>";

... jusque la et remplacer par le code que j'ai documenté hier. */


}
}
?>
</body>
</html>

 

ATTENTION : j'ai fait une erreur en recopiant le nom de la variable $additional_header. A partir de la deuxième occurence j'ai mis $$additional_header au lieu de $additional_header ... à corriger.

@+

#67 goudurisc

  • Members
  • PipPipPipPipPipPipPipPip
  • 674 messages

Posté 27 August 2010 - 16:42 PM

Bon symphonie, j'ai compris (pas le code), si tu m'apportes encore des réponses et que tu utilises encore des formules d'encouragement, c'est que tu n'es pas humain, tu es en fait un super programme développé par les modérateurs du site, ce qui leur permet de se reposer en déléguant les posts galères.
Ils t'on appelé "Symphonie" parce que tu connais toutes les partitions et les notes (do, ré, if, else...). Tu es en version béta et moi en mode gros béta, le cobaye parfait pour tester la résistance de tes circuits. Ca devrait commencer à chauffer...

Bon, je joue le jeu quand même. Donc, cher symphonie, j'ai remplacé le code avec succès, ou presque. En résultat d'un envoi, dans ma boîte mail, je ne trouve que :

Adresse IP: 83...
Navigateur: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; fr-fr) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8

Nom du contact : Nom contact

blaabla (c'est ce que j'ai rempli dans la case message mais le terme "message" n'apparaît pas) ;-)

#68 goudurisc

  • Members
  • PipPipPipPipPipPipPipPip
  • 674 messages

Posté 29 August 2010 - 16:13 PM

Symphonie, j'espère que tu n'as pas mal réagi à mon denier post, désolé mais je n'ai pas trouvé le smiley "humour douteux". Je ne vais donc pas aller beaucoup plus loin dans mon projet de formulaire et je préfère malgré tout finir par un franc remerciement pour ton endurance bien humaine (sans humour !). ;) :D :)

#69 gerard.bartholome

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 110 messages

Posté 30 August 2010 - 06:27 AM

Hello Goudurisc,

Le "programme" était en stand-by ce week-end pour maintenance ;) , je n'ai pris connaissance des nouveaux post que ce matin. Tu sais, j'ai commencé comme toi et j'ai toujours trouvé sur les forums, des personnes patientes pour m'expliquer et prendre du temps quand je ne comprenais pas. Ce n'est donc qu'un juste retour des choses.

Si cela peut t'aider, je peux te joindre une version que j'ai élaborée pour mon site. Si tu as encore des questions n'hésites pas.

Bon courage,

Cordialement

#70 goudurisc

  • Members
  • PipPipPipPipPipPipPipPip
  • 674 messages

Posté 30 August 2010 - 09:39 AM

Ca me rassure donc

...sinon, un exemple de formulaire qui fonctionne, c'est forcément idéal, pour peu qu'il y ait la gestion d'un menu déroulant, ce serait parfait... mais je n'abuse pas trop malgré tout ;)

#71 gerard.bartholome

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 110 messages

Posté 30 August 2010 - 15:00 PM

Menu déroulant ? Pour ?

#72 goudurisc

  • Members
  • PipPipPipPipPipPipPipPip
  • 674 messages

Posté 30 August 2010 - 15:43 PM

Jusqu'à présent, chaque fois que j'ai créé un formulaire, j'ai eu besoin de menu déroulant, de case à cocher et de bouton radio. J'utilisais donc les objets formulaire dispos dans Dreamweaver.
Maintenant, si je veux travailler entièrement en php, il semble que ces objets formulaires (à l'instar des cases de saisie) doivent être créés à partir de code php. D'où ma demande/question ;)

#73 gerard.bartholome

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 110 messages

Posté 30 August 2010 - 16:38 PM

Tu peux tout à fait utiliser Dreamweaver, pour ajouter tes éléments de formulaire à ta guise (boutons, menus déroulants etc...) Php sert uniquement à contrôler les données "côté Serveur" et peut très bien être entré depuis Dream. Je travaille exclusivement avec Dreamweaver justement parce que j'apprécie sa qualité d'intégration (HTML, CSS, Js Php etc...)

Là j'ai un taf urgent à finir pour un client, (c'est la rentrée), mais dès que j'ai un moment, un peu plus tard dans la soirée, je t'envoie un exemple de formulaire simple que j'utilise sur un site. Tu regardes avec Dream, si cela te convient on en reparles. Puis, si tu veux ajouter quelques champs, on tâchera de bricoler cela ensemble. OK ?

Cordialement

#74 goudurisc

  • Members
  • PipPipPipPipPipPipPipPip
  • 674 messages

Posté 30 August 2010 - 16:42 PM

On en est plus à quelques heures prés, merci



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP