Bonjour - Probleme envoi variable en POST

Eléphanteau du PHP | 19 Messages

28 juil. 2006, 15:55

Salut à tous, j'ai un souci, j'envoi mon formulaire par méthode POST , rien ne fonctionne, alors que si je passe en GET, tout fonctionne correctement !!

Tout mon code est ok, les variables sont bien récupérée en GET donc par l'url, mais pas qd je met en POST. ma page ne fonctionne plus ..

Si quelqu'un à une info à ce sujet

Merci

Pb

Eléphant du PHP | 177 Messages

28 juil. 2006, 16:04

Normal la methode post et get font appel à deux superglobale differente.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 juil. 2006, 16:42

Ben pas mieux qu'aelurus.. si tu envoi en get, tu dois récupérer dans $_GET alors que si tu envois en post, il te faut récupérer dans $_POST... donc forcément, si tu ne fais le changement dans tout ton code, tu ne récupéreras pas les valeurs :)

Eléphanteau du PHP | 19 Messages

28 juil. 2006, 16:53

En fait exactement, tout mon code est en POST ( méthode de formulaire , récupération des variables ...) , ca ne marche pas ,

en revanche, si je change juste la méthode du formulaire et que je la passe en get, en laissant tout le reste en POST, ca marche..

j'ai donc du GET et du POST dans mon code, j'esper etre clair

notion de superglobale ; vous pouvez m'en dire plus ?

MErci pour votre rapidité

Pb

Eléphant du PHP | 88 Messages

28 juil. 2006, 17:53

Salut!

Tu veux dire que tu as <form action="traitement.php" method="GET"> et dans ta page traitement.php tu récupere tes champs avec $_POST?

C'est bien cela?

@+

Eléphanteau du PHP | 19 Messages

28 juil. 2006, 18:02

effectivement je n'avais que la balise method du formulaire en GET

tout le reste était en POST , j'ai modifié tou en GET, cela fonctionne effectivement,
je me demande quand meme comment c'est possible que les variables soient récupérées du GET alors qu'elles sont en $_POST !!!

cela dit tou est en GET et ca marche , mais je voudrais tout repasser en POST et que cela fonctionne !!

j'ai pourtant déjà fait des formulaire en POST ou tout fonctionnait !
aucune erreur ds mon script !

peut etre qq1 a déjà eu ce souci et a une solution, nous sommes plusieurs a avoir eu le meme probleme !! meme mon prof !! lol

Merci

@+

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 juil. 2006, 23:36

C'est effectivement des plus étrange... Tu pourrais nous montrer ton code en Post ? celui du formulaire et celui du traitement.. :)

Eléphant du PHP | 177 Messages

29 juil. 2006, 00:00

Wé moi aussi je suis curieux de voir sa car si c'est effectivement un formulaire melanger les deux ????
Ou alors pour des valeures cachés et encore j'ai du mal la.
Mais il serait vraiment pas mal d'avoir un support car n'etant ni medium ni extralucide j'ai du mal avec des si...
Et puis question bete si tout fonctionne comme tu avec $_GET qui est aussi la variable des formulaires, pourquoi changer ????

Eléphanteau du PHP | 19 Messages

29 juil. 2006, 14:51

Oui effectivement je trouve bizarre qu'on mon code est fonctionné avec du GET et du POST en meme temps, depuis mon précédent post, j'ai modifié mon code, j'ai tout passé en GET,ca fonctionne, alors que tout en POST ne fonctionne pas !! mais pourquoi !!!???

voilà mon code
<script type="text/javascript">

		function verif() {
			if (formulaire.nom.value.length<1||formulaire.nom.value==' '){
			document.getElementById("reponse").value='Indiquez votre nom SVP';
			}
			else if (formulaire.pre.value.length<1||formulaire.pre.value==' '){ 
			document.getElementById("reponse").value='Indiquez votre prénom SVP';
			}
			else if (formulaire.mail.value.indexOf('.')==-1||formulaire.mail.value.indexOf('@')==-1){
			document.getElementById("reponse").value='Indiquez votre e-mail SVP';
			}
			else if (formulaire.tel.value.length!=10||isNaN(formulaire.tel.value)){
			document.getElementById("reponse").value='Indiquez votre téléphone SVP';
			}
			else if (formulaire.soc.value.length<1||formulaire.soc.value==' '){
			document.getElementById("reponse").value='Indiquez le nom de votre société SVP';
			}
			else if (formulaire.cp.value.length!=5||isNaN(formulaire.cp.value)){
			document.getElementById("reponse").value='Indiquez votre code postal SVP';
			}
			else {document.formulaire.submit();}
		}
		
</script>
</head>
<body>

		<? if (!isset($_GET['test'])){
		?>
		
				<form enctype="text/plain" name="formulaire" method="GET" action="devis.php">
					
					<table>
					  <td width="171"></td>
					  <tr>
						<td>Nom :
						  <input name="nom" type="text" size="20" id="nom" class="champ" /></td>
					  </tr>
					  <tr>
						<td>Pr&eacute;nom :
						  <input name="pre" type="text" size="16" id="pre" class="champ" /></td>
					  </tr>
					  <tr>
						<td>e-mail :
						  <input name="mail" type="text" size="18" id="mail" class="champ" /></td>
					  </tr>
					  <tr>
						<td>Tel :
						  <input name="tel" type="text" id="tel" size="22" class="champ" /></td>
					  </tr>
					  <tr>
						<td>Soci&eacute;t&eacute; :
						  <input name="soc" type="text" id="soc" size="16" class="champ" /></td>
					  </tr>
					  <tr>
						<td>CP :
						  <input name="cp" id="cp" type="text" size="21" class="champ" /></td>
						  <td><input name="reponse" type="text" size="30" id="reponse" class="champrep" /></td>
					  </tr>
					  <tr>
						<td height="77">&nbsp;</td>
						<td width="158" rowspan="25"><label><span class="Style1"><strong>COMMENT</strong>AIRES :</span>
						  <textarea name="com" cols="25" rows="15" class="champ" ></textarea>
						</label>    </td>
						</tr>
					  <tr>
						<td align="left"><input type="checkbox" name="a" value="Image de marque" />
							<span class="Style1">option1</span></td>
					  </tr>
					  <tr>
						<td align="left"><input type="checkbox" name="b" value="Publicité" />
							<span class="Style1"> <strong>option2</span></td>
					  </tr>
					  <tr>
						<td height="22" align="left"><input type="checkbox" name="c" value="Site internet" />
							<span class="Style1">option3</span></td>
					  </tr>
					  <tr>
						<td height="68">&nbsp;</td>
					  </tr>
					  <tr>
						<td height="17"><span class="Style1">DELAIS :</span></td>
					  </tr>
					  <tr>
						<td height="17"><input name="delai" type="text" size="10" maxlength="15" class="champ" /></td>
					  </tr>
					  <tr>
						<td height="17"><span class="Style1">VOTRE BUDGET :</span></td>
					  </tr>
					  <tr>
						<td height="17"><input name="budget" type="text" size="10" maxlength="15" class="champ"/></td>
					  </tr>
					  <tr>
							<td>&nbsp;</td>
						</tr>
					  <tr>
						<td colspan="2"><input type="hidden" id="test" name="test" value="ok" />
					    <input name="btonenvoi" type="button" class="bouton" id="btonenvoi" value="Bon pour envoi" onclick="verif()" /></td>
					  </tr>
					</table>
				</form>  
	<?
	
	// création du modèle d'email
	
	} else {
	
	// déclaration des variables 
			
		$reponse = "[email protected]";
		$mailclient = $_GET["mail"];
		$bcc = "[email protected]";
		$frontiere = '-----=' . md5(uniqid(mt_rand()));
		
	// contenu du mail	
			
		$headers ='From: "toto"<'.$reponse.'>'."\n";
		$headers .='Reply-To: <'.$reponse.'>'."\n";
		$headers .='Bcc:<'.$bcc.'>'."\n";
		$headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
		$headers .='Content-Transfer-Encoding: 8bit';
		$headers .= 'MIME-Version: 1.0'."\n";
		$headers .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"';

		$sujet ='Demande de devis/informations';
		
		$contenu = "
		
</head>

<body>

	<div id='mail'>
	  <div id='head'>confirmation de votre<br /> 
      demande de devis.</div>
		<div id='contenu'>
			  
			<p>".$_GET["nom"]." ".$_GET["pre"]."</p>
			<p>".$_GET["mail"]." </p>
			<p>".$_GET["tel"]."  et <br />
			  <br />
		  ".$_GET["soc"]." localis&eacute;e au  : ".$_GET["cp"]."</p>
			<p>
			
			<p><strong> Vous avez souhait&eacute; avoir des informations sur : </strong></p>
			 							".$_GET["image"]."<br />
 										".$_GET["pub"]."<br />
 										".$_GET["web"]."		 
		                              
			 							<p> Vous disposez de : ".$_GET["delai"]."
				et de  ".$_GET["bud"]." de budget .<br />
<br />

			 							<p><strong>Vos pr&eacute;cisions 	:</strong> ".$_GET["com"]."			
			 							<p><br />
			 							  Nous &eacute;tions votre demande et nous vous r&eacute;pondrons 
			 							  
			 							  dans les plus brefs d&eacute;lais, si toutefois vous avez des pr&eacute;cisions &agrave; nous donner n'h&eacute;sitez pas &agrave; nous contacter soit par mail, soit par t&eacute;l&eacute;phone. </p>
			 							<p>Cordialement,</p>
			 							
	  </div>
</div>
	

<body>
</body>
</html>";
	
//-----------------------------------------------
//MESSAGE HTML
//-----------------------------------------------
$message .= '--'.$frontiere."\n";

$message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n";
$message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
$message .= $contenu."\n\n";

//-----------------------------------------------
//PIECE JOINTE
//-----------------------------------------------
$message .= '--'.$frontiere."\n";

$message .= 'Content-Type: image/jpeg; name="../image.jpg"'."\n";
$message .= 'Content-Transfer-Encoding: base64'."\n";
$message .= 'Content-Disposition:attachement; filename="..image.jpg"'."\n\n";

$message .= chunk_split(base64_encode(file_get_contents('../image.jpg')))."\n";

	// envoi de l'email
	
		$envoi = mail($mailclient,$sujet,$message,$headers);
			
		if ($envoi==1)
		{
		//mail($reponse,$sujet,$contenu);
		echo " <br />
<br />
<br />
<br />
<br />
<br />
<br /><strong>Votre email a bien été envoyé, 
	  vous allez recevoir un récapitualtif sur ".$_GET["mail"]." </strong>";
	} else {
		echo "Erreur d'envoi, vérifiez votre email";
	}	
}			
?>
</body>	

voilà , j'espere que c'est lisible,
vu que je suis débutant, si vous trouvez que mon code n'est pas clair, je suis prenneur d'infos pour l'alléger ou le clarifier

j'ai aussi un souci d'envoi de mail de confirmation en incluant une image de fond !!

Merci de votre aide

Pb

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

29 juil. 2006, 15:04

voilà , j'espere que c'est lisible
ça l'est un peu plus avec les balises [ php] au lieu de [ code] :wink:

Refait un test en POST sans "enctype="text/plain""

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 19 Messages

29 juil. 2006, 15:38

Refait un test en POST sans "enctype="text/plain""

MERCI Truc, c'était exactement cela, vu que tout fonctionne en POST maintenant.

d'ailleurs je ne sais meme pas à quoi sert "enctype="text/plain" !


MErci et @ +

Pb

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

29 juil. 2006, 17:18

d'ailleurs je ne sais meme pas à quoi sert "enctype="text/plain" !
ne sert qu'en cas d'envoi de mail avec mailto

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 19 Messages

29 juil. 2006, 17:45

Merci Truc pr cette info

bon Wend à tous !