[EDIT]
Voila un petit résumé des problèmes qui ont été résolu dans ce poste.
Question 1:
COmment verifier un formulaire en php et regex?
Exemple d'un code:
Question n°2:
Comment protéger ces variables d'un code html que le client peut entrer?
Utiliser soit htmlspecialchars soit htmlentities.
Question n°3:
Comment fonctionne isset() et empty()?
Question n°4:
Pourquoi un @ devant mail()?
Il permet de ne pas générer d'erreur à l'écran si l'envoi n'aboutit pas.
Question n°5:
Comment utiliser la fonction header?
La fonction header doit être avant tout affichage, c'est à dire les balises html, head, body...sans oublier le doctype...
Question n°6:
Comment récupérer la valeur d'une checkboxe coché pour l'envoyer par mail?
Voila un code qu'il m'as été donné. Etudié le bien avant de l'utiliser car même avec en l'étudiant j'ai pas réussi du premier coup...
Les conceils que l'on m'as donnés:
*Voir la différence entre include () et require_once().
*regarder la fonction strlen()
*regarder de plus près la fonction header()
*trouver un tut qui traite sur l'implémentation de fonctions personnalisées pour une meilleur gestion
*regarder pour la récupération des valeurs du formulaire lorsqu'il y a eurreur afin que l'utilisateur ne resaisisse pas le tout.
*implémentation d'une meilleur gestion de l'affichage des erreurs par exemple au dessus ou dans le formulaire.
*Je rajouterais aussi de regarder plus précisément comment fonctionne mail().
Voila en gros ce qui est dit dans ce topic.
Bon courage à tous et merci a Nolem et Heyoan pour leur aide.
[/EDIT]
Bonjour a tous,
Voila mon problème, je débute dans les langages php et javascript (et xhtml). En gros je n'utilisai que le css et le html...
Après une bonne semaine de recherche sur le net pour réaliser un formulaire, j'ai réussi la majorité du formulaire...
Le formulaire contient des champs pour les informations nom, email, message...
J'effectue un javascript qui vérifie si elles sont correcte ou pas. Ensuite je les envoie via un post, dans ma boite mail.
Jusque la tous fonctionne, mais j'ai quand même une petite question. Est-il possible de vérifier ces champs (input) sans javascript et juste avec du php?
Donc jusque la le formulaire marche très bien sauf que j'ai voulu rajouter des checkbox pour d'autres informations.
C'est la que je perd mon latin...
Après avoir bidouiller un maximum de truc, j'ai réussi à traiter la sélection d'une seul checkbox (ma volonté serait de pouvoir en cocher plusieur).
Cependant lorsque le formulaire est validé puis envoyé je ne reçois que la valeur de la checkbox selectionné. Les autres données ne sont plus affichées...
Voici mon code. Il est appele par un indexReference et il port le nom de contenu.inc.php
Merci d'avance à tous les courageux qui se pencherons sur la question.
Modifié par Dim (14 Jul 2008 - 20:05)
Voila un petit résumé des problèmes qui ont été résolu dans ce poste.
Question 1:
COmment verifier un formulaire en php et regex?
Exemple d'un code:
// On verifie le nom commence par une majuscule et ne comporte pas de numero
if (preg_match("#^[A-Z][a-z]{2}|[^0,]$#", $nom)) {
$erreur = true;
}else {
$errmsg = 'Votre nom doit commencer par une majuscule et ne peut comporter de numero';
}
Question n°2:
Comment protéger ces variables d'un code html que le client peut entrer?
Utiliser soit htmlspecialchars soit htmlentities.
Question n°3:
Comment fonctionne isset() et empty()?
Heyoan a écrit :
Salut Nolem ,Hmm... non ! Pas tout à fait :
* isset() se contente de vérifier qu'une variable est définie (ou pour simplifier qu'elle existe) :
=> soit parce qu'elle est déclarée dans le code :
---> sous la forme $matable = array(); (déclaration)
---> sous la forme $mavariable = 'mavaleur';(déclaration et affectation d'une valeur)
=> soit parce qu'il s'agit d'une superglobale - cela dépend alors du contexte - (par exemple $_COOKIE['moncookie'], $_POST['mavardeformulaire'], etc...)
* empty() vérifie que si une variable est définie elle est bien vide. Le "problème" est que si une variable n'est pas définie empty() va tout de même retourner VRAI (TRUE)
La particularité (et aussi l'avantage) d'inverser le test avec !empty() est que non seulement on peut vérifier que la variable est définie mais également qu'elle n'est pas vide ! Cela est bien pratique notamment dans le cas d'une soumission de formulaire...
Question n°4:
Pourquoi un @ devant mail()?
Il permet de ne pas générer d'erreur à l'écran si l'envoi n'aboutit pas.
Question n°5:
Comment utiliser la fonction header?
La fonction header doit être avant tout affichage, c'est à dire les balises html, head, body...sans oublier le doctype...
Question n°6:
Comment récupérer la valeur d'une checkboxe coché pour l'envoyer par mail?
Voila un code qu'il m'as été donné. Etudié le bien avant de l'utiliser car même avec en l'étudiant j'ai pas réussi du premier coup...
if (!empty($_POST['option'])) {
$mess .= "Pages contenant l'erreur :<br />\n";
foreach ($_POST['option'] as $option){
$mess .= '> '.$option."<br />\n";
}
}
Les conceils que l'on m'as donnés:
*Voir la différence entre include () et require_once().
*regarder la fonction strlen()
*regarder de plus près la fonction header()
*trouver un tut qui traite sur l'implémentation de fonctions personnalisées pour une meilleur gestion
*regarder pour la récupération des valeurs du formulaire lorsqu'il y a eurreur afin que l'utilisateur ne resaisisse pas le tout.
*implémentation d'une meilleur gestion de l'affichage des erreurs par exemple au dessus ou dans le formulaire.
*Je rajouterais aussi de regarder plus précisément comment fonctionne mail().
Voila en gros ce qui est dit dans ce topic.
Bon courage à tous et merci a Nolem et Heyoan pour leur aide.
[/EDIT]
Bonjour a tous,
Voila mon problème, je débute dans les langages php et javascript (et xhtml). En gros je n'utilisai que le css et le html...
Après une bonne semaine de recherche sur le net pour réaliser un formulaire, j'ai réussi la majorité du formulaire...
Le formulaire contient des champs pour les informations nom, email, message...
J'effectue un javascript qui vérifie si elles sont correcte ou pas. Ensuite je les envoie via un post, dans ma boite mail.
Jusque la tous fonctionne, mais j'ai quand même une petite question. Est-il possible de vérifier ces champs (input) sans javascript et juste avec du php?
Donc jusque la le formulaire marche très bien sauf que j'ai voulu rajouter des checkbox pour d'autres informations.
C'est la que je perd mon latin...
Après avoir bidouiller un maximum de truc, j'ai réussi à traiter la sélection d'une seul checkbox (ma volonté serait de pouvoir en cocher plusieur).
Cependant lorsque le formulaire est validé puis envoyé je ne reçois que la valeur de la checkbox selectionné. Les autres données ne sont plus affichées...
Voici mon code. Il est appele par un indexReference et il port le nom de contenu.inc.php
<?php
if($_POST['action'] == 'submitted')
{
$adress = "MonEmail@mail.fr";
$sujet = "Erreur sur le site signalé par {$_POST['nom']}";
$mess = "Nom: {$_POST['nom']}\nE-mail: {$_POST['email']}\nSite: {$_POST['webSite']}\n";
$mess .= "Message: {$_POST['message']}\n";
$entete = "Return-Path: $adress\r\n";
$entete .= "From: www.monSite.fr<$adress>\n";
$ctrl=sizeof($option);
if($ctrl!=1 ){
echo"SVP précisez moi la page ou se trouve l'erreur";
exit;
}
else{
foreach ($option as $valeur){
$option = "{$valeur}";
}}
mail("{$_POST['email']}", "votre message", $mess, $entete);
mail("$adress", $sujet, $option, $mess, $entete);
//page de sortie
?>
Votre message a bien été envoyé
<?
}
else {
?>
<form name="erreur" method="post" action="#" onSubmit="return verifier()">
<fieldset>
<legend class="texteGrasNoir">Signaler une erreur</legend>
<input type="hidden" name="action" value="submitted" />
<br><br>
<p >
<label class="formulaireTexte1"> Nom* </label>
<input type="text" name="nom" class="champTexteInput" value=""/>
<label class="formulaireTexte1"> Email* </label>
<input type="text" name="email" class="champTexteInput" value=""/>
<label class="formulaireTexte1"> Site internet </label>
<input type="text" name="webSite" class="champTexteInput" value=""/>
</p>
<span class="formulaireTexte21">Page où est l'erreur*</span>
<label class="formulaireTexte2">Accueil</label>
<input type="checkbox" name="option[]" value="Accueil"></input>
<label class="formulaireTexte2">Signaler</label>
<input type="checkbox" name="option[]" value="Signaler"></input>
<label class="formulaireTexte2">Contact</label>
<input type="checkbox" name="option[]" value="Contact"></input>
<label class="formulaireTexte2">CV</label>
<input type="checkbox" name="option[]" value="CV"></input>
<label class="formulaireTexte2">Portfolio</label>
<input type="checkbox" name="option[]" value="Portfolio"></input>
<br /><br /><br />
<div>
<label class="formulaireTexte3"> Message* </label>
<textarea name="message" rows="5" cols="73"></textarea>
</div>
<div>
<input class="bouton" type="submit" value="Envoyer">
</div>
<div class="texteLegende">
<span class="floatRight">
<br /><br />
* Champs obligatoire
</span>
</div>
</fieldset>
</form>
<? } ?>
Merci d'avance à tous les courageux qui se pencherons sur la question.
Modifié par Dim (14 Jul 2008 - 20:05)