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

PHP & Base de données Discussion :

formulaire envoi email avec PJ et choix modele avec CKeditor


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Par défaut formulaire envoi email avec PJ et choix modele avec CKeditor
    Bonjour,
    je réalise pour une association un petit script destiné à envoyer email et mailing
    a partir d'un textarea et ckeditor
    avec envoi de pièces jointes, chargement d'un modèle pré établi que l'on peut modifier sur ckeditor

    le script fonctionne très bien sans le choix du modèle sur la combo
    Dés l'appui sur l'envoi , le modéle est bien chargé dans ckeditor mais toutes les données reçues en GET ou inscrites sur le formulaire sont remises a zéro

    Je suis sur ce problème depuis deux jours, impossible d'en sortir
    merci à de nouveaux yeux pour me conseiller

    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
     
    ///////////////////////////////////////////////////////////////////////////////
    // *********************Récupération de l'email de l'adhérent******************
     
    //$email_adh = ''; // remise à zéro de la variable émail
    $email_dest = $_GET['email_adh']; // récupération du GET de liste_adh.php
     
    //echo $email_dest; // décocher pour voir si on recupere bien le GET en provenance de la liste_adh
     
    ////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////// Choix du modele d'email //////////////////////////
    ////////////////////////////////////////////////////////////////////////////////
    echo'<table align="center" width="100%" border="2px" style="background-color:#f2e3c4">';
    echo'<tr><td>';
     
    echo'<form action="ecrire_email.php" method="post" name="FormModele">';
    echo "<h4>Charger un Modele :</h4>" ;
    echo'</td>';echo'<td>';
     
    // Appel à la fonction creer_select
    echo creer_select('SELECT `id_modele`, `modele_objet` FROM `adh_modele`', 'id_modele');
     
    echo'<input type="submit" name="FormModele" value="Charger">';
     //echo'<div>  <input type="submit" /> ';
    echo'</form>';
     
    //*************************** Traitement du choix de modele *******************
     
    if(isset($_POST['FormModele'])) //si vrai alors--- on recupere les input de la combo
    {
    	$id_modele= $_POST['id_modele']; //on recupere l'id du formulaire de la combo
    	//echo"$id_modele";echo'<br>';
     
    //*********** on fait un select pour recuperer le contenu du modele ************
    	$sql="select *
    		from ".$table2."
    		where id_modele = '".$id_modele."'"; // entre "  " si alphanum
     
    	$result=mysql_query($sql)or die ("Exécution de la requête SELECT impossible");
     
    	//  Décocher echo Pour voir combien cette requête retourne d'enregistrements
    	//echo "Nombre d'enregistrements de la requête : ".mysql_num_rows($result)."<br/>";
     
    	//$result = mysql_query('SELECT *  FROM adh_modele WHERE id_modele = '.$id_modele);
     
    //************* Récupération des données de la table Modéles*******************
     
    	if(mysql_numrows($result)>0)
    	{
    		$val=mysql_fetch_array($result);	//Decoupage des resultats de la BDD dans un tableau pour les afficher
     
    		$modele_redacteur=		$val['modele_redacteur'];
    		$modele_objet=			$val['modele_objet'];
    		$modele_html=			$val['modele_html'];
    		$modele_date=			$val['modele_date'];
    	}
    	//echo"$modele_redacteur";
    	//echo"$modele_objet";
    	//echo"$modele_html";
    	//echo"$modele_date";
     
    echo "&nbsp;&nbsp;&nbsp;&nbsp;Votre Choix :&nbsp;&nbsp;&nbsp;&nbsp; $modele_objet  ";echo'<br>';
     
    	echo'</td>';
    }
    /////////////////////////////////////////////////////////////////////////////////
    //*on recupere le modele choisi $modele_html pour affichage par $email_message dans  textarea CKeditor
    ////////////////////////////////////////////////////////////////////////////////
    $email_message=$modele_html;
     
    // *********************Récupération de l'email de l'adhérent******************
     
    //$email_adh = ''; // remise à zéro de la variable émail
    	$email_dest = $_GET['email_adh']; // récupération du GET de liste_adh.php
     
    	echo $email_dest; // décocher pour voir si on recupere bien le GET en provenance de la liste_adh
    ////////////////////*******Fin choix du modele /////////////////////////////////
     
    ////////////////////////////////////////////////////////////////////////////////
     ////////////////////*******Suite  Formulaire 2 **********//////////////////////
     ///////////////////////////////////////////////////////////////////////////////
     
    // echo'<form action="./envoi_email.php" method="post" name="FormModele2">';
     
    echo'<form ENCTYPE="multipart/form-data" action="./envoi_email.php" method=POST name="FormModele2">';
     	echo "<tr><td>&nbsp;&nbsp;Nom du Rédacteur :	</td><td><input type=\"text\" size= 55	name=\"archive_redacteur\"   	value=\"".$archive_redacteur."\"</td></tr>";
     	echo "<tr><td>&nbsp;&nbsp;Email Expediteur :	</td><td><input type=\"text\" size= 55	name=\"email_exp\"   	value=\"".$email_exp."\"</td></tr>";
     	echo "<tr><td>&nbsp;&nbsp;Email Destinataire :	</td><td><input type=\"text\" size= 55	name=\"email_dest\"   	value=\"".$email_dest."\"</td></tr>";
    	echo "<tr><td>&nbsp;&nbsp;Emails Cc :			</td><td><input type=\"text\" size= 55	name=\"email_cc\"   	value=\"".$email_cc."\"</td></tr>";
     	echo "<tr><td>&nbsp;&nbsp;Email Bcc :			</td><td><input type=\"text\" size= 55	name=\"email_bcc\"   	value=\"".$email_bcc."\"</td>";
     	echo"</tr>";
     
    	if ($email_exp ==""){$email_exp= "postmaster@cg-aisne.org";} // si l'email exp n'est pas renseigné il sera ......
    		// echo $email_exp;
     
    ////////////////////////////////////////////////////////////////////////////////
    //************Mise en place des combos box HTML/Texte  et Priorité****************
    ////////////////////////////////////////////////////////////////////////////////
    ?>
     <tr><td> &nbsp</td> 	<td>&nbsp;&nbsp;&nbsp;		<label for="email_type">HTML / Texte :</label>
         												<select name="email_type" id="email_type" style="width:100px;">
     
         												<option value="1" selected="selected">HTML</option>
         												<option value="2">TEXTE</option>
        												</select>
     
        												&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
     
    													<label for="priorite">Priorité :</label>
         												<select name="priorite" id="priorite" style="width:100px;">
     
        												<option value="1">Urgent</option>
        												<option value="2">Haute</option>
         												<option value="3" selected="selected">Normale</option>
         												<option value="4">Basse</option>
         												<option value="5">Très basse</option>
        												</select>
    </td></tr>
    <?php // Chois de la piéce à joindre ?>
    <tr> <td>Fichier &agrave; Joindre :</td><td>		<INPUT TYPE=FILE NAME="email_pj"	 size= 55  value="<?php if (isset($_POST['email_pj'])) echo htmlentities($_POST['email_pj']) ?>" /></td></tr>
    <tr>	<td>Objet:</td> <td>	       				<input type="text" 	                 size= 55 	name="email_objet" value="<?php if (isset($_POST['email_objet'])) echo htmlentities($_POST['email_objet']) ?>" /></td></tr> </tr>
     
    <tr><td> &nbsp</td><td>	<textarea cols="90" rows="100" name="email_message" id="email_message" >  <?//=$email_message;?>  <?php echo htmlentities($email_message); ?> </textarea></td></tr>
     
    		<script type="text/javascript">	CKEDITOR.replace( 'email_message' );</script> <!-- met en place CKeditor à la place du textarea -->
     
    </table>
     
    <br/><center>      <div>  <input type="submit" name="FormModele2"/>  </div><br /></center>
    </form>

  2. #2
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    déjà un petit rappel de sécurité, injecter du contenu de $_GET ou $_POST sans vérification est un important risque d'attaque de ta base de données par injections.

    dans l'ordre:
    • ton code est incomplet... donc si il génère un formulaire, il se peut que des choses ne soient pas visibles...
    • tu pourrais virer le tableau et utiliser des div et du css à la place, plus rapide et efficace je pense ici en terme de rendu et de lecture de ton code php...
    • des données ne sont pas transmises, si une fois récupérées de ton premier formulaire, elles ne sont pas retransmises dans l'adresse des formulaires que tu nous montres ici (get) ou via une entrée input en eux (post ici vu la méthode de transmission).
    • tu génères 2 formulaires sur ta page, leur transmission est donc indépendante , de plus des formulaires ne peuvent pas être imbriquée
    • tu reste très vague sur les données perdu et quel formulaire sont concernés


    j'espère que ça te fait avancer un peu, n'hésite pas à reposer des question ou compléter ce que tu nous dit sur ton problème...

  3. #3
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Par défaut
    Bonjour et Merci ERIC d'avoir pris le soin de te pencher sur le script

    j'essaie de te répondre point par point:


    1-déjà un petit rappel de sécurité, injecter du contenu de $_GET ou $_POST sans vérification est un important risque d'attaque de ta base de données par injections.

    <-- oui je pense revoir la partie sécurité dés que le script fonctionnera



    2- ton code est incomplet... donc si il génère un formulaire, il se peut que des choses ne soient pas visibles...

    <-- il est complet sauf la fonction qui génère le html de la combo , mais qui renvoie bien l'id choisi pour le traitement de la requête et j'ai testé par des écho les variables--->

    3- tu pourrais virer le tableau et utiliser des div et du css à la place, plus rapide et efficace je pense ici en terme de rendu et de lecture de ton code php...
    <-- tu as raison, mais le problème du look viendra dés que le script sera opérationnel

    4- des données ne sont pas transmises, si une fois récupérées de ton premier formulaire, elles ne sont pas retransmises dans l'adresse des formulaires que tu nous montres ici (get) ou via une entrée input en eux (post ici vu la méthode de transmission).

    <-- le fait de charger le modèle dans le textarea CKeditor à l'air de me recharger la page complète perdant ainsi toutes les variables déjà renseignées -->

    5- tu génères 2 formulaires sur ta page, leur transmission est donc indépendante , de plus des formulaires ne peuvent pas être imbriquée

    <-- pour moi, je ne pense pas que mes deux formulaires soient imbriqués -->

    6- tu reste très vague sur les données perdu et quel formulaire sont concernés

    <-- exemple: je reçois l'adresse email "email_adh" par get de ma liste adh a qui je veux envoyer l’émail ,elle s'inscrit bien dans le formulaire, mais dés que je charge le modèle d’émail par la combo la variable est détruite
    idem si je remplis les champs formulaires avant de charger le modèle par la combo, les variables sont détruites.

    Par contre, si je charge en premier le modèle par la combo et je remplis le formulaire après , il me manque uniquement l'adresse émail reçu en get , si je le réécris, le tout fonctionne bien ( départ de l’émail avec texte du modèle parfait

    ce ne serait pas très gênant pour l'envoi d'un émail, mais pour les mailings bcc sur 650 adhérents il faut mieux les garder en mémoire -->


    voilà le problème , si tu peux m'aider

    Merci d’avance à+

  4. #4
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    ce que je veux te faire comprendre c'est que 2 formulaires sont indépendant en terme de transmission... soit tu envoies l'un soit l'autre...

    si tu veux donc que des données soient transmises quoi qu'il arrive... tu dois les mettre dans les 2 alors... soit en get soit en post avec des input de type hidden...

    par soucis de cohérence, je pense qu'il vaut mieux tout mettre en get ou post personnellement.

  5. #5
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Par défaut
    Merci de ta réponse
    je ne comprends pas bien
    le premier formulaire renvoie le numéro de l'id du modèle d’émail sur la même page pour faire la requête et récupérer le texte du modèle a insérer dans le textarea, ce qu'il fait bien sauf qu'il me met à nul toutes les variables

    c'est un $PHP_SELF qui me permet de récupérer le texte du modèle
    Ensuite, le 2eme formulaire envoie sur la page php d'envoi du mailing
    à+

  6. #6
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    donc tu fais un truc bien lourd avec 2 formulaires sur une seule page au lieu de séparer ton problème en 2 pages

    quand tu veux garder des informations communes à une session de navigation entre plusieurs pages tu as les sessions (tableau $_SESSION)...

Discussions similaires

  1. [AC-2003] bouton valider sur formulaire avec envoi email
    Par rougeda01 dans le forum IHM
    Réponses: 3
    Dernier message: 28/05/2010, 11h54
  2. envoi email avec formulaire
    Par luckyde59 dans le forum WebDev
    Réponses: 7
    Dernier message: 12/09/2008, 11h31
  3. Envoi email avec liste de choix multiple
    Par Renardo dans le forum VBA Access
    Réponses: 8
    Dernier message: 09/08/2008, 18h36
  4. Envoi Formulaire par Email, la soupe...!
    Par ni31x dans le forum Langage
    Réponses: 14
    Dernier message: 19/12/2005, 22h04
  5. envoi de formulaire par email
    Par ph_anrys dans le forum Langage
    Réponses: 15
    Dernier message: 09/11/2005, 11h24

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