Messagerie privé [Résolu]

LaChaux78 169 Messages postés lundi 25 juillet 2016Date d'inscription 5 décembre 2017 Dernière intervention - 20 nov. 2017 à 09:05 - Dernière réponse : yg_be 4075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 8 décembre 2017 Dernière intervention
- 25 nov. 2017 à 10:36
Bonjour,
J'ai mis en place ma messagerie privé en PHP avec BDD Mysql. Je viens de m'apercevoir que lorsqu'on envoie un message avec espace ou virgule etc... l'envoie en BDD ne ce fait pas par contre sinon tout ce passe normalement.
Pouvez-vous m'expliquer ce que je peux faire s'ils vous plait.
Je vous remercie.
Afficher la suite 
169Messages postés lundi 25 juillet 2016Date d'inscription 5 décembre 2017 Dernière intervention

18 réponses

Répondre au sujet
Reivax962 3091 Messages postés jeudi 16 juin 2005Date d'inscription 8 décembre 2017 Dernière intervention - 20 nov. 2017 à 09:33
0
Utile
Bonjour,

Il faudrait que tu nous montres ton code source php :
- La page où le formulaire est codé ;
- La page où les données sont récupérées et insérées en base.

Xavier
Commenter la réponse de Reivax962
LaChaux78 169 Messages postés lundi 25 juillet 2016Date d'inscription 5 décembre 2017 Dernière intervention - 20 nov. 2017 à 10:18
0
Utile
1
Bonjour,
<h1>Envoyer un message</h1>

<?php
$PARAM  = array (
'IDMESS' => isset($_REQUEST['idmess']) ? $_REQUEST['idmess'] : '',
'IDEXP'  => isset($_POST['idexp']) ? $_POST['idexp'] : '',
'DMESS'  => isset($_POST['dmess']) ? dw2m($_POST['dmess']) : '',
'TMESS' 	=> isset($_POST['tmess']) ? $_POST['tmess'] : '',
'MESS'  => isset($_POST['mess']) ? $_POST['mess'] : '',
'FILE_NOM'  => isset($_POST['file_nom']) ? $_POST['file_nom'] : '',
'FILE_URL'  	=> isset($_POST['file_url']) ? $_POST['file_url'] : '',
);

if (isset($_REQUEST['action']) AND !empty($_REQUEST['action'])) {
    
    switch($_REQUEST['action']) {
		case 'ajouter':
			
		if (!isset ($_POST['envoyer'])) {
		$erreur = "<span class='erreur'>Tu n'as pas sélectionné de membres !</span>";
		}
		elseif ($_POST['tmess'] == '' || ($_POST['mess'] =='')) {
		$erreur = "<span class='erreur'>Renseigne le Titre et le Message !</span>";
				
		} elseif (isset($_FILES["upload_localfile"]) &&  $_FILES['upload_localfile']['name'] != "") { 

		$file_name = $_FILES['upload_localfile']['name'];
		$file_extension = strrchr($file_name, ".");
			
		$file_tmp_name = $_FILES['upload_localfile']['tmp_name'];
		$file_dest = 'fichiers/'.$file_name;
		
		$extensions_autorisees = array('.pdf', '.PDF');
			
			if(in_array($file_extension, $extensions_autorisees)) {
				if(move_uploaded_file($file_tmp_name, $file_dest)) {
			
				
					$sql =	"INSERT INTO cdc_messages (idexp, dmess, tmess, mess, file_nom, file_url)
							VALUES ('".$_SESSION['idpers']."','".$PARAM['DMESS']."', '".$PARAM['TMESS']."', '".$PARAM['MESS']."', '".$file_name."', '".$file_dest."')";
	$requete = $bdd->prepare($sql);
	$requete->bindParam(':idmess', $PARAM['IDMESS']);
	$requete->bindParam(':idexp', $_SESSION['idpers']);
	$requete->bindParam(':dmess', $PARAM['DMESS']);
	$requete->bindParam(':tmess', $PARAM['TMESS']);
	$requete->bindParam(':mess', $PARAM['MESS']);
	$requete->bindParam(':file_nom', $file_name);
	$requete->bindParam(':file_url', $file_dest);
	$requete->execute();
				
$idmess = isset($_POST['idmess']) ? $_POST['idmess'] : NULL;
$idmess = $bdd->lastInsertId();
$envoyer  	= isset($_POST['envoyer']) ? $_POST['envoyer'] : NULL;
$iddest  	= isset($_POST['iddest']) ? $_POST['iddest'] : NULL;
			
		if (is_array($envoyer)) {	
			foreach($envoyer as $iddest) {             
					
$sql ="INSERT INTO cdc_destinataires (idmess, iddest)
	VALUES ('".$idmess."', '".$iddest."')";
	$requete = $bdd->prepare($sql);
	$requete->bindParam(':idmess', $idmess);
	$requete->bindParam(':iddest', $iddest);
	$requete->execute();
		}
	}

		$sql = "SELECT nom,prenom,email
			FROM cdc_personnes
			WHERE cdc_personnes.idpers = ?";
			$requete = $bdd->prepare($sql);
				
			foreach ( $_POST['envoyer'] as $idpers ) {
			$requete->execute(array($idpers));
			if ($donnees2 = $requete->fetch()) {
			// Adresse email des destinataires
			$destinataire = $donnees2->email;
			$prenom = $donnees2->prenom;
			// Titre de l'email
			$sujet = 'Nouveau message Clique de Cruet';
			// Contenu du message de l'email
			$message = '<html>';
			$message .= '<body><p>Bonjour '.$prenom.', <br/>';
			$message .= 'Je t\'ai envoyé un nouveau message dans ton espace membre...<br/>';
			$message .= 'Bonne lecture.<br/>';
			$message .= '<p>'.$_SESSION['prenom'].'</p>';
			$message .= '<p style="color:red;">Merci de ne pas répondre à cet email, ceci est un envoi automatique</p></body>';
			$message .= '</html>';
			// Pour envoyer un email HTML, l'en-tête Content-type doit être défini
			$headers = 'MIME-Version: 1.0'."\r\n";
			$headers .= 'Content-type: text/html; charset=utf-8'."\r\n";
			$headers .= 'From:"mon_site"<>'."\n";
			// Fonction principale qui envoi l'email
			mail($destinataire, $sujet, $message, $headers);
				}
			}
			$success = "<span class='success'>Message envoyé avec Pièce Jointe !</span>";
				} else {
					$erreur = "<span class='erreur'>Ton fichier est trop volumineux, impossible de l'envoyer !</span>";
					}
			} else {
				$erreur = "<span class='erreur'>Seul les fichiers PDF sont autorisés !</span>";
				}
		} else {
			$success = "<span class='success'>Message envoyé sans Pièce Jointe !</span>";
			}
    break;
    }
}
?>
Reivax962 3091 Messages postés jeudi 16 juin 2005Date d'inscription 8 décembre 2017 Dernière intervention - 20 nov. 2017 à 11:35
Ce code-là est bizarre :
	$sql = "INSERT INTO cdc_messages (idexp, dmess, tmess, mess, file_nom, file_url)
		VALUES ('".$_SESSION['idpers']."','".$PARAM['DMESS']."', '".$PARAM['TMESS']."', '".$PARAM['MESS']."', '".$file_name."', '".$file_dest."')";
	$requete = $bdd->prepare($sql);
	$requete->bindParam(':idmess', $PARAM['IDMESS']);
	$requete->bindParam(':idexp', $_SESSION['idpers']);
	$requete->bindParam(':dmess', $PARAM['DMESS']);
	$requete->bindParam(':tmess', $PARAM['TMESS']);
	$requete->bindParam(':mess', $PARAM['MESS']);
	$requete->bindParam(':file_nom', $file_name);
	$requete->bindParam(':file_url', $file_dest);
	$requete->execute();


Tu colles directement les valeurs dans $sql et ensuite tu fais des bindParams.
Pareil dans ta requête « INSERT INTO cdc_destinataires ».
Dans ton $sql, remplace plutôt les valeurs par les labels définis dans les bindParams.

Xavier
Commenter la réponse de LaChaux78
LaChaux78 169 Messages postés lundi 25 juillet 2016Date d'inscription 5 décembre 2017 Dernière intervention - 20 nov. 2017 à 12:37
0
Utile
1
Bonjour
J'ai fait comme tu me l'a suggéré mais les INSERT dans ma BDD ne ce font plus.
Jusque ici tout marchais bien, mais penses tu que cela viens de ça mon soucis?
En envoyant via mon formulaire si je tape du texte sans espace il n'y a pas de soucis.
Merci de tes conseils.
jordane45 19184 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 décembre 2017 Dernière intervention - 20 nov. 2017 à 13:37
Montre ton code modifié.
Commenter la réponse de LaChaux78
LaChaux78 169 Messages postés lundi 25 juillet 2016Date d'inscription 5 décembre 2017 Dernière intervention - Modifié par jordane45 le 20/11/2017 à 13:49
0
Utile
2
$sql = "INSERT INTO cdc_messages (idexp, dmess, tmess, mess, file_nom, file_url)
       VALUES (:idpers,:dmess,:tmess,:mess,:file_nom,:file_url)";
     $requete = $bdd->prepare($sql);
     $requete->bindParam(':idmess', $PARAM['IDMESS']);
     $requete->bindParam(':idexp', $_SESSION['idpers']);
     $requete->bindParam(':dmess', $PARAM['DMESS']);
     $requete->bindParam(':tmess', $PARAM['TMESS']);
     $requete->bindParam(':mess', $PARAM['MESS']);
     $requete->bindParam(':file_nom', $file_name);
     $requete->bindParam(':file_url', $file_dest);
     $requete->execute();

EDIT : Ajout des balises de code

jordane45 19184 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 décembre 2017 Dernière intervention - 20 nov. 2017 à 13:57
Si mes souvenirs sont bons ... tu utilises PDO ....

Dans ce cas, pourquoi ne pas avoir placé chacune de tes requêtes dans un bloc TRY CATCH pour essayer de voir l'erreur ?

Ensuite, avec le BIND_PARAM .. l'intérêt de l'utiliser... c'est de préciser le TYPE de variable que tu lui envoies.
Par exemple :
$stmt->bindParam(':dmess', $PARAM['DMESS'], PDO::PARAM_STR);

Sinon.. autant utiliser un ARRAY dans le execute !
Par exemple :

$sql = "INSERT INTO cdc_messages (idexp, dmess, tmess, mess, file_nom, file_url)
       VALUES (:idpers,:dmess,:tmess,:mess,:file_nom,:file_url)";
$datas = array(     
     ,':idmess'=> $PARAM['IDMESS']
     ,':idexp'=> $_SESSION['idpers']
     ,':dmess'=> $PARAM['DMESS']
     ,':tmess'=> $PARAM['TMESS']
     ,':mess'=> $PARAM['MESS']
     ,':file_nom'=> $file_name
     ,':file_url'=> $file_dest
	 );
	 
try{
	 
	$requete = $bdd->prepare($sql);
	$result = $requete->execute($datas);
}catch(Exception $e){
	echo "Erreur ! " .$e->getMessage();	
}
jordane45 19184 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 décembre 2017 Dernière intervention > jordane45 19184 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 décembre 2017 Dernière intervention - 20 nov. 2017 à 13:59
Déjà là ;... je vois une erreur....
Le nom des variables nommées ne correspondent pas à celles passées dans la requête .....
:idmess d'un côté ...: idpers de l'autre ...
:idexp en trop dans l'array....

Avec les blocs TRY/CATCH ... tu aurais eu l'erreur de suite !

Pour rappel :
http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs


.
Commenter la réponse de LaChaux78
LaChaux78 169 Messages postés lundi 25 juillet 2016Date d'inscription 5 décembre 2017 Dernière intervention - 20 nov. 2017 à 16:33
0
Utile
1
Bonjour
Je suis en train d'essayer de modifier ce que vous m'avez suggerer, en fait en faisant des essai d'INSERT je me suis aperçu en fait que l'INSERT dans la BDD ne ce fait si je ne met pas de pièce jointe je ne vois pas l'erreur....
jordane45 19184 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 décembre 2017 Dernière intervention - 20 nov. 2017 à 17:41
Commence par faire les modifications que je t'ai recommandé... puis postes nous ton code modifié que l'on sache où tu en es...
Commenter la réponse de LaChaux78
LaChaux78 169 Messages postés lundi 25 juillet 2016Date d'inscription 5 décembre 2017 Dernière intervention - 20 nov. 2017 à 18:22
0
Utile
3
Bonjour,
oui j'utilise bien PDO dans un fichier init.php
j'ai mis à jour les requète et là vlan j'ai une page blanche absolument rien?? Je n'arrive pas à voir ce qui ne va pas.
Merci encore
<h1>Envoyer un message</h1>

<?php
$PARAM  = array (
    'IDMESS' 		=> isset($_REQUEST['idmess']) ? $_REQUEST['idmess'] : '',
    'IDEXP'  		=> isset($_POST['idexp']) ? $_POST['idexp'] : '',
    'DMESS'  		=> isset($_POST['dmess']) ? dw2m($_POST['dmess']) : '',
    'TMESS' 		=> isset($_POST['tmess']) ? $_POST['tmess'] : '',
    'MESS'  		=> isset($_POST['mess']) ? $_POST['mess'] : '',
	'FILE_NOM'  	=> isset($_POST['file_nom']) ? $_POST['file_nom'] : '',
	'FILE_URL'  	=> isset($_POST['file_url']) ? $_POST['file_url'] : '',
);

if (isset($_REQUEST['action']) AND !empty($_REQUEST['action'])) {
    
    switch($_REQUEST['action']) {
		case 'ajouter':
			
		if (!isset ($_POST['envoyer'])) {
		$erreur = "<span class='erreur'>Tu n'as pas sélectionné de membres !</span>";
		}
		elseif ($_POST['tmess'] == '' || ($_POST['mess'] =='')) {
		$erreur = "<span class='erreur'>Renseigne le Titre et le Message !</span>";
				
		} elseif (isset($_FILES["upload_localfile"]) &&  $_FILES['upload_localfile']['name'] != "") { 

			$file_name = $_FILES['upload_localfile']['name'];
			$file_extension = strrchr($file_name, ".");
			
			$file_tmp_name = $_FILES['upload_localfile']['tmp_name'];
			$file_dest = 'fichiers/'.$file_name;
		
			$extensions_autorisees = array('.pdf', '.PDF');
			
			if(in_array($file_extension, $extensions_autorisees)) {
				if(move_uploaded_file($file_tmp_name, $file_dest)) {
			
					$sql =	"INSERT INTO cdc_messages (idexp, dmess, tmess, mess, file_nom, file_url)
							VALUES (:idpers,:dmess,:tmess,:mess,:file_nom,:file_url)";
							$datas = array(     
											,':idexp'=> $_SESSION['idpers']
											,':dmess'=> $PARAM['DMESS']
											,':tmess'=> $PARAM['TMESS']
											,':mess'=> $PARAM['MESS']
											,':file_nom'=> $file_name
											,':file_url'=> $file_dest
											);
							try {
								$requete = $bdd->prepare($sql);
								$result = $requete->execute($datas);
							} catch(Exception $e) {
								echo "Erreur ! " .$e->getMessage();	
							}

					$idmess  	= isset($_POST['idmess']) ? $_POST['idmess'] : NULL;
					$idmess 	= $bdd->lastInsertId();
					$envoyer  	= isset($_POST['envoyer']) ? $_POST['envoyer'] : NULL;
					$iddest  	= isset($_POST['iddest']) ? $_POST['iddest'] : NULL;
			
					if (is_array($envoyer)) {	
						foreach($envoyer as $iddest) {             
					
						$sql =	"INSERT INTO cdc_destinataires (idmess, iddest)
								VALUES (:idmess,:iddest)";
							$datas = array(     
											,':idmess'=> $idmess
											,':iddest'=> $iddest
											);
							try {
								$requete = $bdd->prepare($sql);
								$result = $requete->execute($datas);
							} catch(Exception $e) {
								echo "Erreur ! " .$e->getMessage();	
							}
						}
					}

					$sql = "SELECT nom,prenom,email
							FROM cdc_personnes
							WHERE cdc_personnes.idpers = ?";
					$requete = $bdd->prepare($sql);
				
					foreach ( $_POST['envoyer'] as $idpers ) {
					$requete->execute(array($idpers));
						if ($donnees2 = $requete->fetch()) {
							// Adresse email des destinataires
							$destinataire = $donnees2->email;
							$prenom = $donnees2->prenom;
							// Titre de l'email
							$sujet = 'Nouveau message Clique de Cruet';
							// Contenu du message de l'email
							$message = '<html>';
							$message .= '<body><p>Bonjour '.$prenom.', <br/>';
							$message .= 'Je t\'ai envoyé un nouveau message dans ton espace membre...<br/>';
							$message .= 'Bonne lecture.<br/>';
							$message .= '<p>'.$_SESSION['prenom'].'</p>';
							$message .= '<p style="color:red;">Merci de ne pas répondre à cet email, ceci est un envoi automatique</p></body>';
							$message .= '</html>';
							// Pour envoyer un email HTML, l'en-tête Content-type doit être défini
							$headers = 'MIME-Version: 1.0'."\r\n";
							$headers .= 'Content-type: text/html; charset=utf-8'."\r\n";
							$headers .= 'From:"cliquedecruet"<cliquede@60gp.ovh.net>'."\n";
							// Fonction principale qui envoi l'email
							mail($destinataire, $sujet, $message, $headers);
						}
					}
						$success = "<span class='success'>Message envoyé avec Pièce Jointe !</span>";
				} else {
					$erreur = "<span class='erreur'>Ton fichier est trop volumineux, impossible de l'envoyer !</span>";
					}
			} else {
				$erreur = "<span class='erreur'>Seul les fichiers PDF sont autorisés !</span>";
				}
		} else {
			$success = "<span class='success'>Message envoyé sans Pièce Jointe !</span>";
			}
    break;
    }
}
?>
yg_be 4075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 8 décembre 2017 Dernière intervention - 22 nov. 2017 à 00:26
pourquoi es-tu étonné d'avoir une page blanche? qu'attends-tu d'autre?
LaChaux78 169 Messages postés lundi 25 juillet 2016Date d'inscription 5 décembre 2017 Dernière intervention > yg_be 4075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 8 décembre 2017 Dernière intervention - 23 nov. 2017 à 19:50
Bonjour
En fait j'avais fait une erreur de syntaxe tout bêtement.
Merci
yg_be 4075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 8 décembre 2017 Dernière intervention > LaChaux78 169 Messages postés lundi 25 juillet 2016Date d'inscription 5 décembre 2017 Dernière intervention - 25 nov. 2017 à 10:36
peux-tu marquer comme résolu?
Commenter la réponse de LaChaux78
LaChaux78 169 Messages postés lundi 25 juillet 2016Date d'inscription 5 décembre 2017 Dernière intervention - 20 nov. 2017 à 19:30
0
Utile
dans mon tableau j'ai enlevé les 2 virgule de trop c'est déjà ça.
Mais par contre pourquoi je n'arrive pas à faire les INSERT sans aucune pièce jointe?
Commenter la réponse de LaChaux78
jordane45 19184 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 décembre 2017 Dernière intervention - Modifié par jordane45 le 20/11/2017 à 20:17
0
Utile
1
Sans vouloir te vexer... ton code est un vrai bord**

Il faut que tu apprennes à découper en fonction .....
A ne pas faire 10 fois la même chose dans ton code (comme répurer à plusieurs reprises les valeurs de tes variables à plusieurs endroits de ton code....)
A nommer tes variables plus correctement..... j'ai mis une plombe à comprendre que $_POST['envoyer'] etait ta liste de déstinataires...

Bref...

Voici à quoi pourrait (devrait ! ) ressembler ton code :
<?php
// démarrage des sessions
session_start();

//Affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


/**
* Fonction pour faire une requete INSERT
*/
function queryInsert($sql,$datas=NULL,$returnLastInsert=false){
 global $bdd;
 try {
  $requete = $bdd->prepare($sql);
  $result = $requete->execute($datas);
  
  if($returnLastInsert){
   $result = $bdd->lastInsertId();
  }  
 } catch(Exception $e) {
  echo "Erreur ! " .$e->getMessage(); 
 }
  return !empty($result) ? $result : NULL; 
}

/**
* Fonction pour faire une requete SELECT
* @return Objet
*/
function querySelect($sql,$datas=NULL){
 global $bdd;
 try {
  $requete = $bdd->prepare($sql);
  $requete->execute($datas);
  $result = $requete->fetchAll(PDO::FETCH_ASSOC);
 } catch(Exception $e) {
  echo "Erreur ! " .$e->getMessage(); 
 }
  return !empty($result) ? $result : NULL; 
}

/**
* Fonction Ajouter
*/
function Ajouter($idexp,$prenomFrom=''  ,$dmess  ,$tmess ,$mess='' ,$arr_destinataires=array() ,$file_nom='' ,$file_url='' ,$file=NULL ){
 if(!empty($file)){
  //si fichier :
  $uploadFile = uploadFile($file,$destDirFile,$extensions_autorisees);
  if($uploadFile['ETAT']==false){
   $erreurFichier = $uploadFile['error'];
  }
 }else{
  //pas de fichier
  $erreurFichier = NULL;
 }

 //$uploadFile => 'file'=>array('name'=>$file_name,'dest'=>$file_dest,'extension'=>$file_extension)
 $file_dest = !empty($uploadFile) ? $uploadFile['file_dest'] : NULL;
 $idmess = CrerMessage($idexp,$dmess,$tmess,$mess,$file_nom,$file_dest);
 $envoiMail = array();
 if($idmess){
  if(is_array($arr_destinataires) && !empty($arr_destinataires)) { 
   foreach($arr_destinataires as $iddest) {             
    $envoieMsg[] = sendMessageBdd($idmess,$iddest);
    $envoiMail[] = envoyerMail($iddest,$prenomFrom);
   }   
  }else{
   //si c'est une string et non un array
   $envoieMsg = sendMessageBdd($idmess,$arr_destinataires);
   $envoiMail = envoyerMail($arr_destinataires,$prenomFrom);
  }
  $result = array('ETAT'=>true,array('envoiMsg'=>$envoieMsg,'envoiMail'=>$envoiMail,'Erreur_fichier'=>$erreurFichier));
 }else{
  $result = array('ETAT'=>false,'error'=>'souci lors de l\'enregistrement en bdd');
 }     
 return $result;
}

/**
* Fonction pour ajouter un message dans la bdd
*/
function CrerMessage($idexp,$dmess,$tmess,$mess,$file_nom,$file_dest){

  $sql = "INSERT INTO cdc_messages (idexp, dmess, tmess, mess, file_nom, file_url)
   VALUES (:idpers,:dmess,:tmess,:mess,:file_nom,:file_url)";
 $datas = array( ':idexp'=> $idexp
     ,':dmess'=> $dmess
     ,':tmess'=> $tmess
     ,':mess'=> $mess
     ,':file_nom'=> $file_nom
     ,':file_url'=> $file_dest
     );
 return queryInsert($sql,$datas,true);
} 


/**
* Fonction pour uploader un fichier
* $oFile = $_FILE['toninputfile']
*/
function uploadFile($oFile=NULL,$destDirFile = 'fichiers/',$extensions_autorisees=array('.pdf', '.PDF')){
 $file_name = $oFile['name'];
 $file_tmp_name = $oFile['tmp_name'];
 $file_extension = strrchr($file_name, ".");
 $file_dest = $destDirFile.$file_name;
  
 if(in_array($file_extension, $extensions_autorisees)) {
  if(move_uploaded_file($file_tmp_name, $file_dest)) {
   $result = array('ETAT'=>true,'file'=>array('name'=>$file_name,'dest'=>$file_dest,'extension'=>$file_extension));
  }else{
   if(!is_dir($destDirFile)){
    $result('ETAT'=>false,'error'=>'Repertoire de destination inconnu !');
   }else{
    $result('ETAT'=>false,'error'=>'Erreur inconnue durant l\'upload !');
   }
  }
 }else{
  $result('ETAT'=>false,'error'=>'Extension interdite!');
 }

  return $result;
}

/**
* Recupere les infos d'un user
*/
function getInfosUserById($idpers){
 $sql = "SELECT nom,prenom,email
   FROM cdc_personnes CP
   WHERE CP.idpers = :idpers";
   
 $datas = array(':idpers'=>$idpers);
 
 return querySelect($sql,$datas);
}


/**
* Fonction pour envoyer le message
*/
function sendMessageBdd($idmess,$iddest){
 $sql = "INSERT INTO cdc_destinataires (idmess, iddest)
   VALUES (:idmess,:iddest)";
 $datas = array( ':idmess'=> $idmess
     ,':iddest'=> $iddest
    );
 return queryInsert($sql,$datas);
}


/**
* Envoie du Mail aux destinataires
*/
function envoyerMail($idpers,$prenomFrom){
 $infosUser = getInfosUserById($idpers);
 if(!empty($infosUser)){
  // Adresse email des destinataires
  $destinataire = $infosUser->email;
  $prenom = $infosUser->prenom;
  // Titre de l'email
  $sujet = 'Nouveau message Clique de Cruet';
  // Contenu du message de l'email
  $message = '<html>';
  $message .= '<body><p>Bonjour '.$prenom.', <br/>';
  $message .= 'Je t\'ai envoyé un nouveau message dans ton espace membre...<br/>';
  $message .= 'Bonne lecture.<br/>';
  $message .= '<p>'.$prenomFrom.'</p>';
  $message .= '<p style="color:red;">Merci de ne pas répondre à cet email, ceci est un envoi automatique</p></body>';
  $message .= '</html>';
  // Pour envoyer un email HTML, l'en-tête Content-type doit être défini
  $headers = 'MIME-Version: 1.0'."\r\n";
  $headers .= 'Content-type: text/html; charset=utf-8'."\r\n";
  $headers .= 'From:"cliquedecruet"<cliquede@60gp.ovh.net>'."\n";
  // Fonction principale qui envoi l'email
  $result = mail($destinataire, $sujet, $message, $headers); 
 }else{
  $result = array('ETAT'=>false,'error'=>'Problème lors de la récupération des données de l\'utilisateur');
 }
 return !empty($result) ? $result : NULL; 
}





//-------------------------------------------------------------//
//Variables pour le fichier
//-------------------------------------------------------------//
$destDirFile = 'fichiers/';
$extensions_autorisees=array('.pdf', '.PDF');

//-------------------------------------------------------------//
//récupération PROPRE des variables AVANT de les utiliser
//-------------------------------------------------------------//
$idmess = isset($_REQUEST['idmess']) ? $_REQUEST['idmess'] : '';
$idexp  = !empty($_POST['idexp']) ? $_POST['idexp'] : NULL;
$dmess  = isset($_POST['dmess']) ? dw2m($_POST['dmess']) : '';
$tmess = isset($_POST['tmess']) ? $_POST['tmess'] : '';
$mess  = isset($_POST['mess']) ? $_POST['mess'] : '';
$file_nom = isset($_POST['file_nom']) ? $_POST['file_nom'] : '';
$file_url = isset($_POST['file_url']) ? $_POST['file_url'] : '';
$action = !empty($_POST['action']) ? $_POST['action'] : NULL;
$file = !empty($_FILE['upload_localfile']) ? $_FILE['upload_localfile'] : NULL;
$arr_destinataires = !empty($_POST['envoyer']) ? $_POST['envoyer'] : NULL;

$idexp = !empty($_SESSION['idpers']) ? $_SESSION['idpers'] : NULL;
$prenomFrom = !empty($_SESSION['prenom']) ? $_SESSION['prenom'] : NULL;

//-------------------------------------------------------------//
//Autres variables utilisées pour le script
//-------------------------------------------------------------//
$result = NULL;
$erreur = array();

//-------------------------------------------------------------//
//début du traitement
//-------------------------------------------------------------//
switch($action) {
 case 'ajouter':
  if(!$idexp){
   $erreur[] = "Utilisateur non connecté";
  }elseif(empty($arr_destinataires)){
   $erreur[] = "Tu n'as pas sélectionné de membres !";
  }elseif( !$tmess || $mess){
   $erreur[] = "Renseigne le Titre et le Message !";
  }else{
   $ajouter = Ajouter($idexp ,$prenomFrom ,$dmess  ,$tmess ,$mess,$arr_destinataires,$file_nom,$file_url,$file);
   if($ajoute['ETAT'] == false){
    $erreur[] = $ajouter['error'];
   }else{
    $result = $ajouter['result'];
   }
  }
  break;
 default:
  $erreur[] = 'Action inconnue';
 break;
}


//----------------------------------------------------------//
// Affichage des erreurs si il y en a
// (attention ! si tu fais de l'ajax.. cette partie devrai être traitée côté Javascript et non ici !!!)
//----------------------------------------------------------//

if(!empty($erreur)){
 foreach($erreur as $err){
  echo "<span class='erreur'>".$err."</span>";
 }
}


//----------------------------------------------------------//
// Si tu fais de l'ajax ... decommente cette partie :
//----------------------------------------------------------//
// echo json_encode($result);
?>


NB: Je l'ai écrit de tête sans tester.... il peut y avoir des erreurs.
Il faudra les corriger.




Cordialement, 
Jordane                                                                 
jordane45 19184 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 8 décembre 2017 Dernière intervention - 20 nov. 2017 à 20:27
Au passage, tu me feras plaisir en allant lire ceci (et en l'appliquant ! ) : http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Commenter la réponse de jordane45
LaChaux78 169 Messages postés lundi 25 juillet 2016Date d'inscription 5 décembre 2017 Dernière intervention - 21 nov. 2017 à 23:19
0
Utile
Bonjour,
Je te remercie pour tout, mais je suis débutant en la matière et toutes les fonctions me donne du mal par rapport à une page de script traditionnelle.
Je ne sais pas si tu comprends ce que je veux dire.
Mais encore merci, je garde tous ça sous le coude en attendant.
Commenter la réponse de LaChaux78