IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème d'envoi de formulaire


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de Gizmil
    Profil pro
    Inscrit en
    Août 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 163
    Par défaut Problème d'envoi de formulaire
    Hello tout le monde !

    Voilà, j'ai un petit souci avec un formulaire ! En fait, quand j'appuie sur le bouton d'envoi (submit), le script recharge la page et est censé m'indiquer "votre message a été envoyé" mais au lieu de ça, il me renvoie vers une autre page !

    Je m'explique : j'ai une page 'index.php' dans laquelle je charge mes contenus au fil de la navigation (le formulaire fait partie de ces contenus). L'adresse de mes pages sont donc toutes les mêmes : 'http://www.monsite.com/index.php'. J'utilise cependant la méthode 'GET', l'URL de mes pages change donc d'aspect en fonction du contenu chargé, genre : 'http://www.monsite.com/index.php?contenu=produits'.

    Bon, je ne m'y connais pas en php, ou très peu, je l'utilise uniquement pour créer une structure de site plus simple à modifier par la suite s'il y a des modifs à apporter. Donc j'ai simplement créer un formulaire via un éditeur online, je l'ai inséré dans ma page.

    L'url de la page où se situe mon formulaire est de ce type :

    'http://www.monsite.com/index.php?contenu=contact'

    Quand je clique sur le bouton d'envoi, le script devrait idéalement recharger cet url avec, dans le corps de ma page, un message indiquant "Votre message a bien été envoyé!".

    Au lieu de ça, c'est la page d'index qui est chargée, c'est à dire le chemin de la page sans les variables :

    'http://www.monsite.com/index.php'

    Du coup, quand je clique sur mon bouton submit, je tombe juste après sur la page d'accueil, c'est à dire le contenu par défaut de la page d'index.

    Donc, ma question : comment fonctionne la méthode submit ? Pourquoi n'est-ce pas l'URL + les variables passées en GET qui sont rechargés ?

    Comment dire au script de recharger ceci : 'http://www.monsite.com/index.php?contenu=contact' plutôt que ça : 'http://www.monsite.com/index.php' ?

    Si ça peut aider, voici la partie 'formulaire' chargée dans ma page d'index :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    <?php
    // Couleur du texte des champs si erreur saisie utilisateur
    $color_font_warn="#FF0000";
    // Couleur de fond des champs si erreur saisie utilisateur
    $color_form_warn="#FFCC66";
    // Ne rien modifier ci-dessous si vous n’êtes pas certain de ce que vous faites !
    if(isset($_POST['submit'])){
    	$erreur="";
    	// Nettoyage des entrées
    	while(list($var,$val)=each($_POST)){
    	if(!is_array($val)){
    		$$var=strip_tags($val);
    	}else{
    		while(list($arvar,$arval)=each($val)){
    				$$var[$arvar]=strip_tags($arval);
    			}
    		}
    	}
    	// Formatage des entrées
    	$f_1=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_1)));
    	$f_2=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_2)));
    	$f_3=strip_tags(trim($f_3));
    	$f_4=trim(eregi_replace("[^0-9\ +]", "", $f_4));
    	// Verification des champs
    	if(strlen($f_1)<2){
    		$erreur.="<li><span class='txterror'>Le champ &laquo; Nom &raquo; est vide ou incomplet.</span>";
    		$errf_1=1;
    	}
    	if(strlen($f_2)<2){
    		$erreur.="<li><span class='txterror'>Le champ &laquo; Prénom &raquo; est vide ou incomplet.</span>";
    		$errf_2=1;
    	}
    	if(strlen($f_3)<2){
    		$erreur.="<li><span class='txterror'>Le champ &laquo; Adresse e-mail &raquo; est vide ou incomplet.</span>";
    		$errf_3=1;
    	}else{
    		if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
    		'@'.
    		'[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
    		'[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',
    		$f_3)){
    			$erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>";
    			$errf_3=1;
    		}
    	}
    	if(strlen($f_5)<2){
    		$erreur.="<li><span class='txterror'>Le champ &laquo; Message &raquo; est vide ou incomplet.</span>";
    		$errf_5=1;
    	}
    	if($erreur==""){
    		// Création du message
    		$titre="Message de votre site";
    		$tete="From:Site@Studiocreapix.com\n";
    		$corps.="Nom : ".$f_1."\n";
    		$corps.="Prénom : ".$f_2."\n";
    		$corps.="Adresse e-mail : ".$f_3."\n";
    		$corps.="Téléphone : ".$f_4."\n";
    		$corps.="Intitulé message : ".$type."\n";
    		$corps.="Message : ".$f_5."\n";
    		//condition if type==$bug ajoutée par moi-même
    		if($type=="bug"){
    			if(mail("guillaume.mory@gmail.com", $titre, stripslashes($corps), $tete)){
    				$ok_mail="true";
    			}else{
    				$erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
    			}
    		}else{
    			if(mail("gizmil@hotmail.com", $titre, stripslashes($corps), $tete)){
    				$ok_mail="true";
    			}else{
    				$erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
    			}
    		}
    	}
    }
    ?>
    <div id="contenerPage">
    	<div class="mainblock_top"></div>
    	<div class="mainblock">
    		<div id="contenerText">
    			<div class="padBot40"></div>
    			<h1 class="darkGreenText" title="Formulaire de Contact">CONTACTEZ-NOUS</h1>
    			<div class="buttonsText padTopA">
    				<a href="index.php?contenu=contact&type=contact" title="Découvrez nos produits">PRODUITS</a> | <a href="index.php?contenu=contact&type=devis" title="Nous demander un devis">DEVIS</a> | <a href="index.php?contenu=accueil" title="Aller à l'accueil">ACCUEIL</a>
    			</div>
    			<div class="horizontalLineTop"></div>
    			<span class="greyText fontSize10">Changer l'intitulé du message (ceci réinitialise les champs texte) : <a class="linkSize10Grey" title="Nous contacter" href="index.php?contenu=contact&type=contact">CONTACT</a> | <a class="linkSize10Grey" title="Nous signaler un bug constaté sur le site" href="index.php?contenu=contact&type=bug">SIGNALER UN BUG</a></span>
    			<div class="horizontalLineTop padBot30"></div>
    			<h2 class="fontSize12 whiteText" title="Service1">
    			<?
    			switch ($type) {
    				case "contact" : print("
    				Nous contacter
    				");break;
    				case "bug" : print("
    				Signaler un bug ou un problème de navigation
    				");break;
    			}
    			?>
    			</h2>
    			<div class="horizontalLineTop padBot20"></div>
    			<?
    			switch ($type) {
    				case "contact" : print("
    				<p class='generalText padBot20'>Vous aimeriez nous transmettre un message ? Alors remplissez le formulaire ci-dessous pour nous en faire part, nous y répondrons dans les plus brefs délais !</p>
    				");break;
    				case "bug" : print("
    				<p class='generalText padBot20'>Nous faisons du mieux que nous pouvons pour que ce site vous soit agréâble à parcourir. Si vous avez constaté un bug ou un problème dans la navigation de celui-ci, quel qu'il soit : un affichage anormal, un libellé erroné, un problème de chargement d'images ou encore une incompréhension dans la manière d'utiliser le site,... n'hésitez pas à nous faire part de vos commentaires.</p>
    				");break;
    			}
    			?>
    			<div class="horizontalLineTop padBot20"></div>
    			<? if($ok_mail=="true"){ ?>
    					<p class='generalText'>
    						Le message ci-dessous nous a bien été transmis, et nous vous en remercions.
    					</p>
    					<?echo nl2br(stripslashes($corps));?>
    					<p class='generalText'>
    						Nous allons y donner suite dans les meilleurs délais.<br>
    						A bientôt.
    					</p>
    			<? }else{ ?>
    				<form action='<? echo $PHP_SELF ?>' method='post' name='Form'>
    						<? if($erreur){ ?>
    							ERREUR, votre message n'a pas été transmis
    							<ul><?echo$erreur?></ul>
    						<?}?>
    						<table id='formularyTable' class='generalText'>
    							<caption>Les champs marqués en rouge sont obligatoires !</caption>
    							<tr>
    								<td>
    									<span class='brightRedText'>Nom :</span><br /><br />
    									<input type='text' <?if($errf_1==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_1' value='<?echo stripslashes($f_1);?>' />
    								</td>
    								<td>
    									<span class='brightRedText'>Prénom :</span><br /><br />
    									<input type='text' <?if($errf_2==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_2' value='<?echo stripslashes($f_2);?>' />
    								</td>
    							</tr>
    							<tr>
    								<td>
    									<span class='brightRedText'>Adresse e-mail :</span><br /><br />
    									<input type='text' <?if($errf_3==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_3' value='<?echo stripslashes($f_3);?>' />
    								</td>
    								<td>
    									<span>Téléphone :</span><br /><br />
    									<input type='text' <?if($errf_4==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_4' value='<?echo stripslashes($f_4);?>' />
    								</td>
    							</tr>
    							<tr>
    								<td colspan='2'>
    									<span class='brightRedText'>Message :</span><br /><br />
    									<textarea <?if($errf_5==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_5' rows='6' cols='40'><?echo$f_5?></textarea>
    								</td>
    							</tr>
    							<tr>
    								<td colspan='2'>
    									<input type='submit' name='submit' value='Envoyer' />
    								</td>
    							</tr>
    						</table>
    				</form>
    			<? } ?>
    			<div class="horizontalLineBottom padTop20"></div>
    			<span class="greyText fontSize10">Changer l'intitulé du message (ceci réinitialise les champs texte) : <a class="linkSize10Grey" title="Nous contacter" href="index.php?contenu=contact&type=contact">CONTACT</a> | <a class="linkSize10Grey" title="Nous signaler un bug constaté sur le site" href="index.php?contenu=contact&type=bug">SIGNALER UN BUG</a></span>
    			<div class="horizontalLineTop"></div>
    			<div class="buttonsText">
    				<a href="index.php?contenu=contact&type=contact" title="Découvrez nos produits">PRODUITS</a> | <a href="index.php?contenu=contact&type=devis" title="Nous demander un devis">DEVIS</a> | <a href="index.php?contenu=accueil" title="Aller à l'accueil">ACCUEIL</a>
    			</div>
    			<div class="padBot40"></div>
    		</div>
    	</div>
    	<div class="mainblock_bottom"></div>
    </div>
    Merci pour votre aide !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="" method="post" name="Form">
    $PHP_SELF (au passage c'est $_SERVER['PHP_SELF'] maintenant) vaut uniquement index.php.
    si tu omets la valeur de l'action, l'url en cours avec toutes les variables sera rappellée.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé Avatar de Gizmil
    Profil pro
    Inscrit en
    Août 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 163
    Par défaut
    Oufff !! Merci, Sabotage !

    Effectivement, ça fonctionne, je suis soulagé !

    En outre, je viens de trouver sur le net à quoi correspondent $PHP_SELF (ou $_SERVER['PHP_SELF'])...

    Encore merci à toi pour avoir pris la peine de consulter mon code !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème d'envoi de formulaire
    Par Rocket666 dans le forum Langage
    Réponses: 4
    Dernier message: 07/07/2008, 09h30
  2. [RegEx] [Formulaire]= problème d'envoi de formulaire avec pièces jointes
    Par lyamarin dans le forum Langage
    Réponses: 22
    Dernier message: 03/04/2007, 13h29
  3. [Mail] problème d'envoi de formulaire par mail
    Par alpking dans le forum Langage
    Réponses: 2
    Dernier message: 13/07/2006, 19h12
  4. Problème d'envoi par formulaire
    Par k o D dans le forum Langage
    Réponses: 3
    Dernier message: 29/12/2005, 18h31
  5. [HTML] Problème d'envoi de formulaire
    Par autumn319 dans le forum ASP
    Réponses: 26
    Dernier message: 03/09/2003, 10h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo