Mail automatique depuis formulaire

Résolu/Fermé
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 - 21 août 2013 à 08:14
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 - 24 août 2013 à 01:16
Bonjour à tous !

Qqu'un saurait-il me dire pourquoi ça n'envoie pas de mail, comme je lui demande :() ?

Voici le script :

"<?php

if(isset($_POST['code_client'])) $typereexpedition=$_POST['code_client'];
else $code_client="";

$db='****';
$cnx=mysql_connect('localhost', '****', '****') or die("Pb connexion serveur ".mysql_error()); // connexion à la base
$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error()); // sélection de la base //messages de TEST à oter ensuite qd ça marchera
$Titre = "SELECT titre FROM oc_clients WHERE code_client='$code_client'";
$email = "SELECT email FROM oc_clients WHERE code_client='$code_client'";

//envoi du mail
// message
$message ="<html>
<head>
<p>A lire attentivement</p>
</head>
<body>

<p>Bonjour $titre,</p>


</body>
</html>";

$headers = 'From: accueil@*******.com' . "\r\n" .
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 'Reply-To: accueil@*****.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

mail($email, 'colis à expédier', $message, $headers);

?>
"

merci d'avance de votre aide .
A voir également:

15 réponses

adrienmarty Messages postés 67 Date d'inscription mercredi 29 avril 2009 Statut Membre Dernière intervention 25 octobre 2013 3
21 août 2013 à 13:29
Je pense que ces requettes prennent en compte la variable $code_client :

$Titre = "SELECT titre FROM oc_clients WHERE code_client='$code_client'";
$email = "SELECT email FROM oc_clients WHERE code_client='$code_client'"; 


Or dans tout les cas $code_client est égale à ""(rien) ou n'est pas défini à cause de :

if(isset($_POST['code_client'])) $typereexpedition=$_POST['code_client'];
else $code_client="";



Je pense que le bon code aurait été :

if(isset($_POST['code_client'])) $code_client=$_POST['code_client'];
else $code_client="";



Et aussi fais attention quand tu récupère tes variables $_POST dis toi que tout le monde à accès à c'est variables et donc tu est vulnérable à des failles SQL.

Esseille de faire :

if(isset($_POST['code_client']))
{
if(get_magic_quotes_gpc())
	{
		$code_client=mysql_real_escape_string($_POST['code_client']);
		
		
		
		
	}
}
else
{
$code_client="";
}
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
22 août 2013 à 00:13
Merci bcp, je vais voir cela.
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
Modifié par maxireussite le 22/08/2013 à 00:48
Bon, ben après modif toujours rien. pour la sécurité on verra après, je veux déjà que ç fonctionne là, après je ferai des essais avec le modèle sécurisé que tu me proposes.

Qqu'un d'autre aurait-il svp une idée sur là où ça cloche ?
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
22 août 2013 à 03:12
Heeeeeeeeeeeeeeeeeeeeelp !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
22 août 2013 à 14:27
salut,

voir commentaires:
<?php

if(isset($_POST['code_client'])){
	$code_client=$_POST['code_client'];
}else{
	$code_client="";
 }

$db='****';
$cnx=mysql_connect('localhost', '****', '****') or die("Pb connexion serveur ".mysql_error()); // connexion à la base
$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error()); // sélection de la base //messages de TEST à oter ensuite qd ça marchera
/*
pourquoi deux requettes ? tuu peux tout mettre dans la même
$Titre = "SELECT titre FROM oc_clients WHERE code_client='$code_client'";
$email = "SELECT email FROM oc_clients WHERE code_client='$code_client'";
*/
$req="SELECT titre,email FROM oc_clients WHERE code_client='".$code_client."'";
//et la il te manquue des choses: soumettre la requette et extraire les valeurs par un fetch  !
$resultat=mysql_query($req) or die ("Pb avec la requette ".mysql_error();
$row=mysql_fetch_array($resultat);
$titre=$row['titre'];
$email=$row['email'];
//envoi du mail
// message
$message ="<html>
<head>
<p>A lire attentivement</p>
</head>
<body>

<p>Bonjour ".$titre.",</p>


</body>
</html>";

$headers = "From: accueil@*******.com"."\r\n" .
$headers .= "MIME-Version: 1.0"."\r\n";//la il te manquait le .=
$headers .= "Content-type: text/html; charset=iso-8859-1"."\r\n";
$headers .= "Reply-To: accueil@*****.com"."\r\n" .
$headers .="X-Mailer: PHP/".phpversion();

$envoi=mail($email, 'colis à expédier', $message, $headers);
if($envoi){
	echo "Le mail a bien été envoyé ";
}else{
	echo "Pb avec l'envoi du mail";
}
?> 
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
22 août 2013 à 14:45
bjr,

Merci je vais essayer cela.

pourquoi deux requêtes ?
En faites je compte utiliser chaque champs dans le corps du mail :
titre :
Nom :
prenom :
adresse :
etc...

Et comme je ne sais pas faire autrement, je comptais bidouiller...:) !

Merci en tous cas Alain_42
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
22 août 2013 à 18:21
oui mais comme tu procédait ce n'était pas bon, il ne suffit pas de faire
$Titre = "SELECT titre FROM oc_clients WHERE code_client='$code_client'";

pour récupérer le titre, regardes ce que je t'ai proposé de plus près
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
22 août 2013 à 21:18
Bon, ben ça ne marche pas !

Ce que je trouve bizarre c que je n'ai aucun message d'erreur, la page php en résultat est blanche...!

J'ai enlevé le mot de passe de la base, ça n'a même pas déclenché le message d'erreur.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
22 août 2013 à 22:09
est tu sur d'appeler la bonne page .php ?
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
22 août 2013 à 22:43
Oui, j'ai vérifié.

A ttes fins utiles, voilà le code final :

"<?php

if(isset($_POST['code_client'])){
$code_client=$_POST['code_client'];
}else{
$code_client="";
}

$db='****';
$cnx=mysql_connect('localhost', '****', '****') or die("Pb connexion serveur ".mysql_error()); // connexion à la base
$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error()); // sélection de la base //messages de TEST à oter ensuite qd ça marchera

$req="SELECT titre,email FROM oc_clients WHERE code_client='".$code_client."'";
//et la il te manquue des choses: soumettre la requette et extraire les valeurs par un fetch !
$resultat=mysql_query($req) or die ("Pb avec la requette ".mysql_error();
$row=mysql_fetch_array($resultat);
$titre=$row['titre'];
$email=$row['email'];
//envoi du mail
// message
$message ="<html>
<head>
<p>A lire attentivement</p>
</head>
<body>

<p>Bonjour ".$titre.",</p>


</body>
</html>";

$headers = "From: accueil@****.com"."\r\n" .
$headers .= "MIME-Version: 1.0"."\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1"."\r\n";
$headers .= "Reply-To: accueil@****.com"."\r\n" .
$headers .="X-Mailer: PHP/".phpversion();

$envoi=mail(to$email, 'colis à expédier', $message, $headers);
if($envoi){
echo "Le mail a bien été envoyé ";
}else{
echo "Pb avec l'envoi du mail";
}
?>
"
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
23 août 2013 à 14:03
essayes comme ça:
<?php

if(isset($_POST['code_client'])){
$code_client=$_POST['code_client'];
}else{
$code_client="";
}
/// TEST
echo "Code client: ".$code_client;
///
$db='****';
$cnx=mysql_connect('localhost', '****', '****') or die("Pb connexion serveur ".mysql_error()); // connexion à la base
$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error()); // sélection de la base //messages de TEST à oter ensuite qd ça marchera

$req="SELECT titre,email FROM oc_clients WHERE code_client='".$code_client."'";
//et la il te manquue des choses: soumettre la requette et extraire les valeurs par un fetch !
$resultat=mysql_query($req) or die ("Pb avec la requette ".mysql_error();
$row=mysql_fetch_array($resultat);
$titre=$row['titre'];
$email=$row['email'];
//envoi du mail
// message
$message ="<html>
<head>
<p>A lire attentivement</p>
</head>
<body>

<p>Bonjour ".$titre.",</p>


</body>
</html>";

$headers = "From: accueil@****.com"."\r\n" .
$headers .= "MIME-Version: 1.0"."\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1"."\r\n";
$headers .= "Reply-To: accueil@****.com"."\r\n" .
$headers .="X-Mailer: PHP/".phpversion();

$envoi=mail(to$email, 'colis à expédier', $message, $headers);
if($envoi){
echo "Le mail a bien été envoyé ";
}else{
echo "Pb avec l'envoi du mail";
}
?> 


sinon donnes nous le code de ton formulaire
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
23 août 2013 à 20:30
Si par exemple je n'arrivais pas à me connecter à Mysql, ne devrais-je pas avoir un message d'erreur ? J'ai ôter le mdp pour voir, et je n'ai rien eu. Je précise que d'autres scipts fonctionnent déjà sur ma base et mon site.
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
23 août 2013 à 19:46
Ok, je vais voir cela. Merci bcp.
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
Modifié par maxireussite le 23/08/2013 à 20:35
Bon ben j'ai pensé que l'erreur pouvait venir de code_client qui est sous la forme : 971 - 0315. J'ai donc remplace ce champs par l'id de la table oc_clients qui est sous la forme "315".

ça ne donne toujours rien : Voici le formulaire de page index.php, l'action submit renvoie à "add.php", dont le scipt est dans les post précédent :


<div id="content" style="left: 194px; top: 226px; height: 399px" class="auto-style6">
<h1 style="font-size: 200%; font-family: ;"><a name="">
<table style="width: 100%">
<tr>
<td class="auto-style7">Notifier colis payés à expédier</td>
</tr>
<tr>
<td class="auto-style7"> </td>
</tr>
</table>
</a></h1>

<!--//<07.08.2008/6.0.2.42/>-->

<script type="text/javascript">
//<![CDATA[
var validate, required, captcha, nocaptcha, first;
/* */
var http_obj = null;

function check1() {
validate = false;
required = false;
captcha = false;
nocaptcha = false;
first = null;
var pattern = /.*\@.*\..*/;
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
if (document.sendform1.code_client.value == "") {
document.sendform1.code_client.className = 'txh';
if (!first)
first = 'code_client';
required = true;
} else
document.sendform1.code_client.className = 'tx';
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
if (document.sendform1.poids.value == "") {
document.sendform1.poids.className = 'txh';
if (!first)
first = 'poids';
required = true;
} else
document.sendform1.poids.className = 'tx';
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */

/* */
check_result1();
/* */
}

function check_result1() {
/* */

var alerts = new Array();
if (validate)
alerts.push('Veuillez entrer une adresse e-mail correcte.');
if (required)
alerts.push('Veuillez remplir toutes les cases obligatoires.');
if (captcha)
alerts.push('Le code de sécurité est incorrect.');
if (nocaptcha)
alerts.push('Veuillez saisir le code de sécurité, celui-ci sert de protection contre tout abus.');

if (alerts.length) {
document.getElementById('myerror').innerHTML = alerts.join("<br />") + '<br /> ';
if (first) {
eval('document.sendform1.' + first + '.focus();');
eval('document.sendform1.' + first + '.select();');
}
} else {
document.sendform1.method = "POST";
document.sendform1.action = "add.php";
document.sendform1.submit();
return true;
}
}

//]]>
</script>

<form action="add.php" onsubmit="check1(); return false;" enctype="application/x-www-form-urlencoded">
<table cellpadding="0" cellspacing="5" class="formtab pluginwidth">
<tr>
<td colspan="2" class="auto-style7" id="myerror"></td>
</tr>
<!--Text-->
<tr>
<td style="height: 27px" class="auto-style7">Code client*</td>
<td style="height: 27px" class="auto-style7">

<?php
$db='eq96010';
$cnx=mysql_connect('localhost', 'eq96010', 'of06iaaj') or die("Pb connexion serveur ".mysql_error()); // connexion à la base
$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error()); // sélection de la base //messages de TEST à oter ensuite qd ça marchera
$requette = mysql_query("SELECT DISTINCT client_id FROM oc_clients ORDER BY client_id ASC") or die("Pb avec la requette ".mysql_error());
//messages de TEST à oter ensuite qd ça marchera
?><select name="client_id" style="width: 159px">

<?php
while ($valeur = mysql_fetch_array($requette)){
echo '<option value="'.$valeur['client_id'].'" >'.$valeur['client_id'].'</option>';
}
?>
<option selected="selected">315</option>
</select></td>
</tr>
<!--Text-->
<tr>
<td class="auto-style7">Nbre de colis à expédier*</td>
<td class="auto-style7">
<input class="auto-style7" type="text" name="nbrecolis" value="1" /></td>
</tr>
<!--Textarea-->
<tr>
<td valign="top" class="auto-style7" style="height: 109px">Observations</td>
<td style="height: 109px" class="auto-style7">
<textarea class="tx" name="observations" cols="20" rows="1"></textarea></td>
</tr>
<tr>
<td colspan="2" class="auto-style7"></td>
</tr>
</table>
<br />
<table cellpadding="0" cellspacing="5" class="completewidth">
<tr>
<td class="auto-style7">

<input
type="image" src="../../images/w2dsbmt.gif" usemap="../colis-arrives/0" style="border: 0"
/>

</td>
</tr>
</table>

</form>
<div id="more">
<table style="width: 100%">
<tr>
<td class="auto-style7"> </td>
</tr>
</table>
</div>

</div>
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
23 août 2013 à 21:24
modifies ta balise form il te manque le plus important method="post"

<form name="form1" method="post" action="add.php" onsubmit="return check1();" >
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
Modifié par maxireussite le 23/08/2013 à 21:34
Bjr Alain_42,

En fait elle y est. C un formulaire généré par Web to date que j'ai modifié et qui fonctionne ailleurs sur le site selon mes modifs.

Pour tester notre script php, j'ai créé un formulaire avec un seul champs "client_id" et le bouton submit, et ça ne marche toujours pas : method et action y sont.

Ailleurs l'on me conseille des balises html, mais je n'ai pas encore compris où.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
23 août 2013 à 23:20
ton pg:
la fonction javascript qui rajoute la method n'a pas l'air de fonctionner

donc il faut absolument que tu mettes la ligne
<form action="add.php" method="post" .........


ensuite plein d'erreurs dans add.php
voir commentaires
<?php
echo '<pre>';
print_r($_POST);
echo '</pre>';
echo '<pre>';
print_r($_GET);
echo '</pre>';
if(isset($_POST['client_id'])){ //erreur tu avait mis code_client hors le name de la liste selct correspondante est client_id
	$code_client=$_POST['client_id'];
}else{
	$code_client="";
}
/// TEST
echo "Code client: ".$code_client;
///
$db='*****';
$cnx=mysql_connect('localhost', '****, '*******') or die("Pb connexion serveur ".mysql_error()); // connexion à la base$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error()); // sélection de la base //messages de TEST à oter ensuite qd ça marchera
$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error()); // sélection de la base //messages de TEST à oter ensuite qd ça marchera
$req="SELECT titre,email FROM oc_clients WHERE client_id='".$code_client."'"; //erreur tu avait mis code_client=.. au lieu de client_id=.. comme nbom de champ de ta table
//et la il te manquue des choses: soumettre la requette et extraire les valeurs par un fetch !
$resultat=mysql_query($req) or die ("Pb avec la requette ".mysql_error()); //manque ) ici
$row=mysql_fetch_array($resultat);
$titre=$row['titre'];
$email=$row['email'];
//envoi du mail
// message
$message ="<html>
<head>
<p>A lire attentivement</p>
</head>
<body>

<p>Bonjour ".$titre.",</p>


</body>
</html>";

$headers = "From: accueil@****.com"."\r\n"; //manquait le ;
$headers .= "MIME-Version: 1.0"."\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1"."\r\n";
$headers .= "Reply-To: accueil@****.com"."\r\n" .
$headers .="X-Mailer: PHP/".phpversion();

$envoi=mail($email, 'colis à expédier', $message, $headers); //erreur pas de to$email mais $email
if($envoi){
echo "Le mail a bien été envoyé ";
}else{
echo "Pb avec l'envoi du mail";
}
?> 

0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
24 août 2013 à 01:16
Hop; ça y est ! On le tient.
ton petit test en première partie m'a bien aidé. En effet, je l'ai isolé du reste et ça fonctionnait.
Ensuite la coloration syntaxique m'a fait voir qu'il manquait un " ' " dans la connexion à la base.

Eh bien je te dois une fière chandelle Alain_42..

Inutile de te dire que ne n'étaie qu'un modèle, je vais m'atteler au véritable script final.

Pour ceux que ça intéresse voilà le script qui fonctionne, je n'ai pas encore enlevé les observations :

<?php
echo '<pre>';
print_r($_POST);
echo '</pre>';
echo '<pre>';
print_r($_GET);
echo '</pre>';
if(isset($_POST['client_id'])){ //erreur tu avait mis code_client hors le name de la liste selct correspondante est client_id
$client_id=$_POST['client_id'];
}else{
$client_id="";
}
/// TEST
echo "client_id: ".$client_id;
///
$db='*****';
$cnx=mysql_connect('localhost', '*****', '*****') or die("Pb connexion serveur ".mysql_error()); // connexion à la base$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error()); // sélection de la base //messages de TEST à oter ensuite qd ça marchera
$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error()); // sélection de la base //messages de TEST à oter ensuite qd ça marchera
$req="SELECT titre,email FROM oc_clients WHERE client_id='".$client_id."'"; //erreur tu avait mis code_client=.. au lieu de client_id=.. comme nbom de champ de ta table
//et la il te manquue des choses: soumettre la requette et extraire les valeurs par un fetch !
$resultat=mysql_query($req) or die ("Pb avec la requette ".mysql_error()); //manque ) ici
$row=mysql_fetch_array($resultat);
$titre=$row['titre'];
$email=$row['email'];
//envoi du mail
// message
$message ="<html>
<head>
<p>A lire attentivement</p>
</head>
<body>

<p>Bonjour ".$titre.",</p>


</body>
</html>";

$headers = "From: accueil@*****.com"."\r\n"; //manquait le ;
$headers .= "MIME-Version: 1.0"."\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1"."\r\n";
$headers .= "Reply-To: accueil@*****.com"."\r\n" .
$headers .="X-Mailer: PHP/".phpversion();

$envoi=mail($email, 'colis à expédier', $message, $headers); //erreur pas de to$email mais $email
if($envoi){
echo "Le mail a bien été envoyé ";
}else{
echo "Pb avec l'envoi du mail";
}
?>
0