Vous n'êtes pas identifié.
Salut C00lman,
Je me repenche sur le site que j'étais en train de faire, j'ai bien avancé grâce à toi, énorme merci !
J'ai parcouru le forum pour voir si tu n'avais pas déjà répondu au problème que j'ai, j'ai trouvé un post "Free KO" mais ce n'est pas exactement mon problème.
Voici la colle :
J'ai crée un formulaire assez similaire au tiens, et pour être sûr que ça ne vienne pas de moi, j'ai repris celui que tu proposes dans le tuto sur www.creer-un-site.fr. Je l'ai mis en bas de la page "page.php" prise de ton tuto, je clic sur envoyé et BAM, je me retrouve sur l'index. Et ce même si je ne remplis pas certains champs ...
J'ai aussi mis un include du formulaire DANS une page "contact.php", qui figure dans mon menu, et lorsque je ne remplis pas tous les champs, il m'affiche correctement l'erreur.
What's happening ?
Merci d'avance !
Bonne soirée
Hors ligne

Salut jb,
En faite ton soucis est normal et dois être dut à un manque d'attention de ta part
ou alors tu n'as pas tout comprit ...donc je vais faire dans le détail
.
Dans l'entête de page.php, tu as ce code :
if (!isset($_GET["id"]) OR !is_numeric($_GET['id'])){
header('location:http://'.$_SERVER['HTTP_HOST'].'');
}Ce code signifie en gros : Si la variable n'existe pas ou qu'elle n'est pas de type numérique, on redirige vers l'index du site.
Dans mon formulaire, tu as ce code :
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
La variable d'environnement $_SERVER["PHP_SELF"] renvoie le nom du fichier en cours d'exécution soit page.php.
Étant donné que le premier code ne trouve pas la variable $_GET["id"], il te renvoie alors automatiquement sur l'index.
Solution :
Compléter le contenu de la balise action en y insérant l'id de la page :
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>?id=<?php echo $id_transmit;?>">
Hors ligne
Bonsoir,
Comme d'habitude, rapide, efficace, détaillé. Merci encore ;)
Ca fonctionne très bien en effet, mais ça ne fonctionne pas pour le script que j'avais pondu, qui était un foutoir total (mélange de javascript et de PHP, je ne raconte même pas la taille du fichier
)
Merci !
Bonne soirée
Jb
Hors ligne
Bonjour,
J'ai créé des formulaires de contact avec http://www.ge-net.ch pour 2 de mes sites, les 2 fonctionnent correctement.
Je viens d'en créer 1 pour un nouveau site www.ecolovelo.fr/contact.php
ça me donne ces messages:
Notice: Undefined variable: ok_mail in /homez.504/ecolovel/www/contact.php on line 146
Notice: Undefined variable: erreur in /homez.504/ecolovel/www/contact.php on line 157
Ces 3 sites sont hébergés chez le même hébergeur en l'occurence OVH.
Quelqu'un peut-il m'aider?
Merci d'avance
Fred
Hors ligne
Bonjour Fred515,
Les erreurs indiquent que les variables "ok_mail" et "erreur" ne sont pas définit.Pour éviter ce genre de soucis, il faut vérifier au préalable si la variable existe.
if(isset($ok_mail)){
echo $ok_mail;
}Il faut faire la même chose avec l'autre variable.
Hors ligne
Merci beaucoup, je vais essayer ça. Ce qui est bizarre, c'est que ça marche bien sur mes 2 autres sites www.atafana.net et www.authentiquement-tropical.com
Bonne soirée
Hors ligne
Dans l'immédiat et selon ce que je vois sur votre site, toutes les erreurs sont de même types, PHP ne reconnait pas vos variables...le pourquoi du comment, je ne sais pas pour le moment :).
Hors ligne
Bonsoir,
Alors j'ai parcouru ce forum et je n'ai pas trouver de réponse a mon problème. J'ai donc récupéré une parti de code php et je l'ai modifié pour faire un formulaire. Je précise également que mon hébergeur est free. Donc pas de problème la page s'affiche bien, si il me manque une information il le dit, mais quand je valide avec le bouton "Envoyé" rien ne ce passe, enfin si le formulaire s’efface, mais il ne m’envoie pas le mail et affiche encore moins le message comme quoi il est envoyé. Voici le code de la parti de la page concerné:
<?php if ($_POST['Merci, votre message à été envoyé, il sera traité dans les plus berf délais'] == "") { ?>
<form id="Envoi email" name="Envoi email" method="post" action="">
<p>
<label for="Nom2">Votre Nom</label>
<input type="text" name="Nom" id="Nom2" />
</p>
<p>
<label for="email">Votre e-mail</label>
<input type="text" name="email" id="email" />
</p>
<p>
<label for="Sujet">Sujet du message</label>
<input type="text" name="Sujet" id="Sujet" />
</p>
<p>
<label for="Message">Message</label>
<textarea name="Message" id="Message" cols="45" rows="5"></textarea>
<input name="Envoyer" type="submit" id="Envoyer" onclick="MM_validateForm('Nom2','','R','email','','R','Sujet','','R','Message','','R');return document.MM_returnValue" value="Envoyer" />
</p>
</form>
<?php } else {
mail("monadresse@free.fr", $_POST['sujet'], $_POST['message'],"From: ".$_POST['nom2']."<".$_POST['email'].">");
?>
<p></p>
<?php } ?>j’espère que vous allez pouvoir m'aider, passé une bonne soirée, à bientôt
Dernière modification par guiguibap (13-02-2012 19:14:32)
Hors ligne
Bonsoir guiguibap,
Il manque une sacré partie du formulaire visiblement et l'utilisation des variables est plutôt bizarre..
<?php if ($_POST['Merci, votre message à été envoyé, il sera traité dans les plus berf délais'] == "") { ?>C'est la première fois que je vois ça...de plus, rien d'en votre formulaire ne comporte ce texte dans l'attribut "name"..?
La, cette partie du code dit grossièrement que si la variable $_POST['votre texte à rallonge'] est vide, il faut exécuter ce qu'il y a en dessous et comme votre variable ne fait référence à aucun champ du formulaire, bin il fait rien ^^!
De plus, votre formulaire ne peut rien envoyé puisque vous ne lui dite pas à quelle moment l'envoyé...
<?php
//le bouton "Envoyer" est cliqué
if(isset($_POST['Envoyer'])){
//traitement du formulaire
$nom = stripcslashes(htmlspecialchars($_POST["Nom"]));
//etc..
//Gestion des erreurs
if(empty($nom)){
echo 'Le champ "Nom" est vide.';
}
//etc..
//Tout est ok
else{
//envoie du formulaire
@mail($webmaster, $subject, $msg, $mailheaders);
//message d'envoie
echo 'Merci, votre message à été envoyé, il sera traité dans les plus berf délais';
}
}
?>
Formulaire iciHors ligne
Bonjour,
merci de votre réponse, du coup j'ai repris votre formulaire (des tutos) et il fonctionne d'enfer. Par contre j'ai rajouter 2-3 catégorie, dont une qui pose une question de sécurité, par contre j'arrive pas à trouver le code, qui dit que cette case =5
elseif (????????????($_POST["verif"]))
mes point interrogations correspondent au code que je ne sais pas??
Merci de votre aide, bonne journée
Hors ligne
En supposant que votre formulaire dispose d'un simple captcha :
<input type="text" name="verif" id="verif" />
Vous récupérez sa valeur dans une variable :
$verif = $_POST["verif"];
Puis vous comparez :
//Si la variable est différent de 5
elseif($verif != "5"){
echo 'erreur';
}Hors ligne
Merci de votre réponse si rapide.
Wouahhh, vraiment merci, chapeau bas, vraiment!! Des heures de cherche....pfffff...encore merci
Juste une petite question encore, dans un autre formulaire, j'aimerai une rubrique N° de client. Tous mes numéro de client commence par C0, j'ai donc utilisé le même principe que pour le 5, c'est a dire:
elseif ($_POST["numero"] !="C0[0-9a-z]")
Mais dans ce cas, il me dit tous le temps que mon numéro client est incorrect (erreur que j'ai nommé ainsi)...
J'aimerai également faire la même chose pour une liste déroulante composé de 4 choix, mais ça ne fonctionne pas... Je vous poste donc mon code que de la parti concerné
if (isset($_POST["buches"])) $_POST["buches"]=trim(stripslashes($_POST["buches"]));
elseif ($_POST["buches"] !="[choix1-choix3]") { //
$erreur="Dimension non séléctionné";<label for="buches">Bûches: </label>
<br/>
<select name="buches">
<option value="Choix">Dimmension à choisir.</option>
<option value="choix1">1 m</option>
<option value="choix2">50 cm</option>
<option value="choix3">33 cm</option>
<option value="choix4">charbonnette</option>
</select>J’essaie, mais je n'y arrive pas...pffff
Encore merci.
Dernière modification par guiguibap (14-02-2012 17:21:02)
Hors ligne
Bon, je ne suis pas fan des expressions régulières (pas très doué dans le domaine ^^) mais la comparaison que vous tentez de faire ne peut pas aboutir puisque la chaîne [0-9a-z] peut comporter n'importe quelle lettre et chiffre...donc en gros vous ne pouvez pas comparer $_POST["numero"] à une chaîne aléatoire.
Pas certains que le code ci-dessous soit exacte...mais dans l'idée il contrôle uniquement si le numéro de client commence bien par "C0" suivit de chiffres et/ou lettres :
if(!preg_match("#^C0[0-9a-z]*$#", $_POST["numero"]))
{
echo 'Le numéro de client est incorrecte!';
}L'idéal et le plus simple étant de faire soit transiter le numéro de client dans l'url ou par sessions ou par coockies pour l'afficher directement dans le formulaire.. comme ça pas d'erreur possible.
Concernant votre second formulaire :
name="buches" correspond au nom du formulaire donc à $_POST["buches"].
Si l'utilisateur ne sélectionne rien, le formulaire reste sur l'option "Choix" qui correspond à "Dimmension à choisir".
Pour l'obliger à sélectionner un choix :
if($_POST["buches"] == "Choix"){
echo 'Merci de sélectionner votre choix de dimension.';
}Hors ligne
Alors la...tous fonctionne parfaitement, un très grand merci. Il y à du en avoir des heures pour arriver à votre niveau, tous simplement BRAVO.

Dernière modification par guiguibap (14-02-2012 23:43:25)
Hors ligne
Propulsé par PunBB
© Copyright 2007
Forum créer un site