boite à idées

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Asumbaa
Tyrannosaurus Rex
Messages : 2411
Inscription : 08 déc. 2004, 20:07

Re: boite à idées

Message par Asumbaa »

Salut,

Je suis d'accord avec Calimo sur la nécessité de prendre le temps de te documenter sur les bases.
Pour te donner une idée de ce qui ne va pas dans ton programme, voici quelle structure tu devrais avoir (pour démarrer du bon pied)

- une page HTML avec ton formulaire
- une page de traitement qui va récupérer les données et envoyer le mail. c'est cette page qui est en PHP.

Dans ton formulaire :
- un seul élément <form> est nécessaire. L'attribut "action" est le nom de la page de traitement
- tes labels et tes champs sont liés entre eux par le couple for / id. En clair : <label for="toto">...</label> est lié à un élément de formulaire ayant pour identifiant "toto".
- les données sont passées à la page de traitement par leur "name", qui peut être différent de l'id (si ça te chante. mettre le même est plus simple)

Ce qui donnerait pour ta partie formulaire quelque chose du type :

Code : Tout sélectionner

<form method="post" action="traitement.php">
<p> <label for="Nom">Votre Nom :</label> <input name="Nom"
id="Nom" placeholder="Ex : Moi" size="30" maxlength="10" type="text"> </p>
<p> <label for="Prenom">Votre Prenom :</label> <input name="Prenom"
id="Prenom" placeholder="Ex : Encore Moi" size="30" maxlength="10"
type="text"> </p>
<p> <label for="Email">email : </label> <input maxlength="125" name="Email" id="Email" size="50" class="form-text required email"></p>
<p> <label for="Fonction">Vous êtes : </label>
<select name="Fonction" id="Fonction">
<option selected="selected" value="parent">Parent</option>
<option value="etudiant">Etudiant</option>
<option value="retraite">Retraite</option>
<option value="autre">Autre</option>
</select></p>
<p> <label for="Exprimez">Exprimez-vous !</label><br>
<textarea name="Exprimez" id="Exprimez" rows="10" cols="50"> </textarea>
</p>
<p> <input type="submit" value="Envoyer">
</form>
Voilà pour la partie 1. La validation du formulaire envoie les données vers traitement.php (valeur de l'attribut action)

Dans ce dernier :
- tes données sont contenues dans le tableau PHP $_POST par exemple le nom du gars sera dans $_POST['Nom']
- c'est le bon endroit pour vérifier que ton utilisateur a rempli ce que tu voulais si tu le souhaites - dans le cas contraire tu le renvoies au formulaire avec un message d'erreur
- si tout va bien, tu construis ton mail de la façon la plus simple possible pour commencer, en suivant les exemples de la doc sur la fonction mail.


Bon courage !
fanfanlatulipe
Salamandre
Messages : 27
Inscription : 25 janv. 2012, 11:20

Re: boite à idées

Message par fanfanlatulipe »

Bonsoir,
merci pour tes remarques, je n'ai plus du tout la même chose. On dirait que vous avez différentes façons d'arriver à un résultat, ici et là et je ne fais plus la différence, c'est vraiment trop complexe...
mon fichier était devenu http://cjoint.com/?3BAvfgtvZFe
ne comprenant strictement rien du code php, tu remarqueras que ce n'est que du copier coller. Impossible de suivre.... je me cantonne juste à du html, et c'est déjà beaucoup pour un début...
si je comprends bien, mon mail n'est toujours pas construit?
y a t-il moyen de mettre en couleur dans ma page sources, mes balises dans kompozer ainsi que des numéros à chaque ligne pour identifier facilement mes erreurs? parce que je ne m'en sortirai jamais sinon?!
par avance merci
Asumbaa
Tyrannosaurus Rex
Messages : 2411
Inscription : 08 déc. 2004, 20:07

Re: boite à idées

Message par Asumbaa »

Salut,

Ça devient à peu près fonctionnel là.
Mais il faut que tu places ton code PHP dans un fichier à part nommé traitement.php.

Bon il reste plein de maladresses et de trous de sécurité, mais là en condition "normale" d'utilisation ça devrait fonctionner.
fanfanlatulipe
Salamandre
Messages : 27
Inscription : 25 janv. 2012, 11:20

Re: boite à idées

Message par fanfanlatulipe »

Bonjour,
je vais donc revoir mon formulaire... je pense que tu entends par maladresse, les espaces, les <br> en trop?
les trous de sécurité? si j'opte pour faire l'envoi de mon formulaire par email, ça ne devrait pas poser problème de spams étant donné que c'est envoyé par l'intermédiaire d'une newsletter et seulement à certaines personnes, donc je me demandais pourquoi établir 2 fichiers dans mon cas? tu me propose un en html et un autre en php? c'est valable si je mets directement sur le serveur?
dans le modèle que je présente, est-ce que c'est mal d'inclure les 2?
merci encore pour ton aide
Asumbaa
Tyrannosaurus Rex
Messages : 2411
Inscription : 08 déc. 2004, 20:07

Re: boite à idées

Message par Asumbaa »

Salut,
fanfanlatulipe a écrit :Bonjour,
je vais donc revoir mon formulaire... je pense que tu entends par maladresse, les espaces, les <br> en trop?
Par exemple, oui. Le tableau de mise en forme. Les styles directement dans les balises. L'absence de Doctype / respect des standards qui te garantit que tu auras un rendu différent sur chaque navigateur. Et tu as éliminé dans cette version les liens entre labels et champs, alors que c'était une bonne idée notamment pour l'accessibilité.

Niveau PHP ton script présuppose un certain paramétrage du serveur (magic quotes activées) -- si ce n'est pas le cas tu risques des anomalies.
fanfanlatulipe a écrit :les trous de sécurité? si j'opte pour faire l'envoi de mon formulaire par email, ça ne devrait pas poser problème de spams étant donné que c'est envoyé par l'intermédiaire d'une newsletter et seulement à certaines personnes
Je n'ai pas les détails de qui a accès au formulaire ni à qui est envoyé le mail. Il faut juste penser que si le formulaire est ouvert à tous, n'importe qui peut s'en servir, et donc envoyer des emails (par exemple des spams, mais aussi du phishing, tout est possible)
fanfanlatulipe a écrit :donc je me demandais pourquoi établir 2 fichiers dans mon cas? tu me propose un en html et un autre en php? c'est valable si je mets directement sur le serveur?
dans le modèle que je présente, est-ce que c'est mal d'inclure les 2?
merci encore pour ton aide
Tu peux bien entendu faire tout dans le même fichier. Dans ce cas tu as plusieurs choses à corriger / vérifier :
- modifier le contenu de l'attribut "action" du formulaire pour pointer vers ton fichier (lui-même, donc)
- que ce fichier soit un fichier PHP
- dans ton traitement PHP, commencer par vérifier si on t'envoie bien des données (pour distinguer le cas "premier affichage du formulaire" du cas "envoi du formulaire")
Donc entourer ta partie PHP par quelque chose du type :

Code : Tout sélectionner

if (isset($_POST['nom'])) {
..... (ton code actuel)
} 

Autre chose qui n'a pas encore été abordé : il faut que ton hébergeur propose le PHP, et ait activé la fonction mail (ce n'est pas le cas partout !) donc vérifie bien ce point.
fanfanlatulipe
Salamandre
Messages : 27
Inscription : 25 janv. 2012, 11:20

Re: boite à idées

Message par fanfanlatulipe »

merci beaucoup Asumbaa pour toutes ces pistes, je comprends bien. Je n'ai pas oublié Doctype, en fait je t'avais copié que l'intérieur du formulaire.
J'ai supprimé aussi les balises inutiles....je pense que mon formulaire est complet et est bon cette fois! par contre je n'avance pas côté PHP :
j'ai indiqué à la suite du formulaire :
<?php if (isset($_POST['nom'])) { //IMPORTANT!!
//Put in your email address below:
$to = 'monmail@yahoo.com';
//User info (DO NOT EDIT!)
$name = stripslashes($_POST['name']); //sender's name
$email = stripslashes($_POST['email']); //sender's email
//The subject
$subject = "Le sujet :"; //The default subject. Will appear by default in all messages. Change this if you want.
$subject .= stripslashes($_POST['subject']); // the subject
//The message you will receive in your mailbox
//Each parts are commented to help you understand what it does exaclty.
//YOU DON'T NEED TO EDIT IT BELOW BUT IF YOU DO, DO IT WITH CAUTION!
$msg = "From : $name \r\n"; //add sender's name to the message
$msg .= "e-Mail : $email \r\n"; //add sender's website to the message
$msg .= "$subject \r\n\n"; //add subject to the message (optional! It will be displayed in the header anyway)
$msg .= "---Message--- \r\n\n".stripslashes($_POST['message'])."\r\n\n"; //the message itself
//Extras: User info (Optional!)
//Delete this part if you don't need it
//Display user information such as Ip address and browsers information...
$msg .= "---Contact information--- \r\n\n"; //Title
$msg .= "Son IP : ".$_SERVER["REMOTE_ADDR"]."\r\n"; //Sender's IP
$msg .= "Navigateur : ".$_SERVER["HTTP_USER_AGENT"]."\r\n"; //User agent
$msg .= "Page : ".$_SERVER["HTTP_REFERER"]; //Referrer
// END Extras
if (mail($to, $subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n")){
echo "sent";
}else{
echo "echoue";
}
}?>
</form>
</body>
</html>
franchement je décroche, je n'ai pas oublié mes balises de fermetures, je ne vois pas comment vérifier si l'ensemble est bon? si tu peux me dire si c'est comme ça que tu ferais?
merci beaucoup!
Asumbaa
Tyrannosaurus Rex
Messages : 2411
Inscription : 08 déc. 2004, 20:07

Re: boite à idées

Message par Asumbaa »

Salut,

Si tu testes en local (sur ton ordi) il te faut un serveur web pour interpréter le PHP. Si tu n'as pas ça, il te faudra mettre la page en ligne pour tester.

Tel quel à mon avis tu peux faire des choses encore avant d'envoyer :mrgreen:
Dans ton tableau $_POST, tu récupères les données envoyées par ton formulaire. Les données entrées dans les champs se retrouvent dans $_POST en fonction de leur nom (attribut name)
Là tu testes $_POST['nom'] et tu utilises ensuite $_POST['name'], $_POST['subject'] qui n'ont aucune chance d'être remplies comme par magie ! Si je reprends ton formulaire dans la dernière version présentée ici, tu auras plus de chances en utilisant $_POST['nom'], $_POST['prenom'], $_POST['fonction'], $_POST['texte']... Il faut lier les deux !

Une première chose que tu pourrais faire pour mieux comprendre, ce serait tout simplement d'afficher $_POST.
Tu mets ton formulaire, à la suite dans ton PHP tu colles simplement :

Code : Tout sélectionner

var_dump($_POST);
Tu mets ta page en ligne, tu l'affiches (premier chargement => $_POST est vide a priori) et ensuite tu remplis ton formulaire et tu envoies (données envoyées => tu vas voir le contenu de $_POST). Je pense que ça t'aidera à comprendre comment utiliser les données envoyées.


Sinon pour répondre à ta question, non ce n'est pas comme ça que je ferais *moi* (dont c'est le métier). Mais j'essaye de te guider vers une façon de faire simple pour débuter.
Par ailleurs quand tu nous postes du code, merci de l'encadrer par des balises "code" (dans la barre de mise en forme), c'est plus lisible.
fanfanlatulipe
Salamandre
Messages : 27
Inscription : 25 janv. 2012, 11:20

Re: boite à idées

Message par fanfanlatulipe »

Bonsoir,
est-ce que xampp peut faire l'affaire?
heureusement que tu précises que c'est simple ^^ autant que j'aime html parce que ça s'apprend, mais là php...c'est franchement laid :)
je ne comprends absolument pas ton approche. Si j'utilise $_POST['nom'], $_POST['prenom'], $_POST['fonction'], $_POST['texte'] et l'email, le contenu il est lié?
je ne comprends pas où je vais le mettre...Donc, si je comprends bien, le script que j'ai trouvé est complètement obsolète...
Asumbaa
Tyrannosaurus Rex
Messages : 2411
Inscription : 08 déc. 2004, 20:07

Re: boite à idées

Message par Asumbaa »

Salut,

Oui Xamp fait l'affaire, pas de problème.
Et non le script n'est pas "obsolète"... Il y a plein de façons de programmer une même chose.

Pour ton code : ce que j'essaye de t'expliquer c'est que tu récupères tes données dans $_POST par leur "name". Si tu as un champ <input type="text" name="prenom">, tu récupères ensuite la valeur entrée dans ton PHP, dans $_POST['prenom'], et pas autre chose.
fanfanlatulipe
Salamandre
Messages : 27
Inscription : 25 janv. 2012, 11:20

Re: boite à idées

Message par fanfanlatulipe »

Bonjour,
un truc du genre :

Code : Tout sélectionner

<?php
if(isset($_POST) && isset($_POST['Votre Nom']) && isset($_POST['Votre Prenom']) && isset($_POST['email']) &&  isset($_POST['Vous êtes'])  && 
isset($_POST['Exprimez-vous!']) extract($_POST);

if(!empty($Votre_Nom) && empty($Votre_Prenom) && empty($email) && empty($Vous_etes) && empty($Exprimez_vous!)) {
$messages=addslashes($message);
$destinataire="monmail@yahoo.fr";
$sujet"Boîte à idées";
$msg"une nouvelle idée est arrivée"\n
Nom : $Nom \n
email : $email \n
Message : $message";
$entete="From: $Nom \n Reply-To: $email";
mail ($destinataire, $sujet, $msg, $entete);

}
else{
	echo "Vous n'avez pas rempli tous les champs";
	}
	}
?>
interdiction de se moquer hein....;)
en fait je n'ai aucune idée du comment m'y prendre...
Asumbaa
Tyrannosaurus Rex
Messages : 2411
Inscription : 08 déc. 2004, 20:07

Re: boite à idées

Message par Asumbaa »

:shock: :| (il manque un smiley avec une goutte de sueur ^^)

Bon...
Si je te traduis ton code avec une analogie foireuse, ça donnerait :

si on m'envoie des carottes, des choux, des navets, des poireaux
ALORS si dans ce qu'on m'envoie, il y a vraiment des carottes, mais pas d'épinards ni de patates
ALORS je fais un chili con carne

:mrgreen:

Plus sérieusement :
- as-tu fait ce que je te conseillais (à savoir afficher $_POST pour comprendre ce qu'il y a dedans) ?

Si je reprends ton dernier code posté, on pourrait imaginer un traitement du type :

Code : Tout sélectionner

<?php
if (isset($_POST['nom'])) {
    
    // Traitement des données reçues du formulaire
    $nom = stripslashes($_POST['nom']);
    $prenom = stripslashes($_POST['prenom']);
    $email = stripslashes($_POST['email']);
    $fonction = $_POST['fonction'];
    $message = stripslashes($_POST['texte']);

    $to = 'monmail@yahoo.fr';
    $sujet = 'Boite à idées';

    // Construction du message
    $msg = "From : $nom $prenom \r\n"; //add sender's name to the message
    $msg .= "e-Mail : $email \r\n"; //add sender's website to the message
    $msg .= "Fonction : $fonction \r\n";
    $msg .= "---Message--- \r\n\n$message\r\n\n";

    // Envoi du mail
    if (mail($to, $sujet, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n")){
        echo "Mail envoyé";
    }
    else {
        echo "Mail pas parti";
    }
}
?>
Avec ça tu devrais avoir un truc "qui marche". Ce n'est pas encore parfait car comme je te l'ai dit avant, ça présuppose que sur ton serveur les magic-quotes sont activées. Mais ça devrait marcher dans des conditions basiques.
fanfanlatulipe
Salamandre
Messages : 27
Inscription : 25 janv. 2012, 11:20

Re: boite à idées

Message par fanfanlatulipe »

Bonsoir,
je l'avais bien dis...je me suis noyée dans les codes...
excuse moi mais je ne comprends toujours pas, je copie ça où :
afficher $_POST
var_dump($_POST); je ne t'ai pas répondu parce que je vois pas comment faire, action, effets? merci de me préciser s'il te plait!
je ne sais pas encore si les sites web bayard activent les magic-quotes...ou si ça peut fonctionner autrement, mais j'attends leur réponse.
Merci mille fois pour ta patience!
Bonne soirée
Asumbaa
Tyrannosaurus Rex
Messages : 2411
Inscription : 08 déc. 2004, 20:07

Re: boite à idées

Message par Asumbaa »

Salut,

http://fr2.php.net/manual/fr/function.var-dump.php
Tu peux coller la ligne où tu veux dans ta partie PHP, au tout début par exemple. C'est juste temporaire, hein, le temps pour toi de comprendre ce fichu tableau $_POST et ce qu'il contient ;-)

Code : Tout sélectionner

var_dump($_POST);
fanfanlatulipe
Salamandre
Messages : 27
Inscription : 25 janv. 2012, 11:20

Re: boite à idées

Message par fanfanlatulipe »

Bonjour,
impossible de comprendre... s'il doit m'afficher les variables? j'entre ces lignes depuis kompozer avec "insertion" "code php" j'enregistre et je lance mon navigateur, mais je ne vois rien?

Code : Tout sélectionner

  
    var_dump($_POST);
  <?php
    if (isset($_POST['nom'])) {
       
        // Traitement des données reçues du formulaire
        $nom = stripslashes($_POST['nom']);
        $prenom = stripslashes($_POST['prenom']);
        $email = stripslashes($_POST['email']);
        $fonction = $_POST['fonction'];
        $message = stripslashes($_POST['texte']);

        $to = 'monmail@yahoo.fr';
        $sujet = 'Boite à idées';

        // Construction du message
        $msg = "From : $nom $prenom \r\n"; //add sender's name to the message
        $msg .= "e-Mail : $email \r\n"; //add sender's website to the message
        $msg .= "Fonction : $fonction \r\n";
        $msg .= "---Message--- \r\n\n$message\r\n\n";

        // Envoi du mail
        if (mail($to, $sujet, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n")){
            echo "Mail envoyé";
        }
        else {
            echo "Mail pas parti";
        }
    }
    ?>
pour le site, la réponse est claire, le responsable technique qui me met un frein à chaque fois que je veux faire quelquechose sur le site, dysfonctionnements, y compris me supprimer par erreur ma newsletter, (heureusement que j'avais prévu une sauvegarde), me dit ce matin en sachant que je n'avais que la partie html à lui présenter, qu'il accepte php! Puis dès lors que je lui dis que je peux fournir php, il m'annonce qu'il ne prend pas php....bref, il lui faut 1/2 journée pour mettre en ligne et tester mon fichier, puisque je n'ai pas accés...
En revanche il me parle d'iframe, qu'à ce niveau là je peux faire toute seule, mais je m'en remets à vous, parce que je pense à <iframe src="http://www.site.com></iframe> mais je ne sais pas comment ça fonctionne. Je ne suis pas sortie de l'auberge...
Asumbaa
Tyrannosaurus Rex
Messages : 2411
Inscription : 08 déc. 2004, 20:07

Re: boite à idées

Message par Asumbaa »

Salut,

var_dump c'est du code PHP... Donc doit être placé après la balise d'ouverture PHP...

Code : Tout sélectionner

<?php
var_dump($_POST);
Je ne vois pas bien ce que viennent faire les iframes dans la bagarre :?:
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités