Je suis en train d'essayer de faire évoluer le système de messagerie privée sur mon site en rajoutant l'option d'envoi de fichiers.
J'ai sur ma bdd une table messages ou j'y ai ajouté un nom = pour le nom du fichier et file_url pour enregistrer le chemin en bdd.
J'ai une page pour le formulaire d'envoi : qui est envoicorrec.php et une page de réception qui est correction.php
Grâce à l'aide de Saian
J'en suis donc à cette étape j'ai rajouté le code et testé le code en rajoutant quelques echo par ci par là. Je fais un test et saisie tous les champs une fois validé je n'ai pas de messages d'erreurs ( je me dis que c'est une bonne chose ?
envoicorrec.php
Code : Tout sélectionner
if(isset($_SESSION['id']) AND !empty($_SESSION['id'])) {
if(isset($_POST['envoi_correction'])){
if(isset($_POST['destinataire'],$_POST['mess']) AND !empty($_POST['destinataire']) AND !empty($_POST['mess']) AND !empty($_FILES)) {
echo 'OK'; // test echo juste ici
$destinataire = htmlspecialchars($_POST['destinataire']);
$messages = htmlspecialchars($_POST['mess']);
$stmt = $DB->query(
'SELECT id FROM utilisateur WHERE mail = :mail', // paramètre $sql
array(':mail' => $destinataire)); // paramètre $data
$dest_exist = $stmt->rowCount();
$file_name = $_FILES['fichier']['tmp_name'];
$file_dest = 'files/' . $file_name;
$file_extention = strrchr($file_name, ".");
$check_ext = array('.pdf', '.PDF', '.PNG', '.png', '.JPG', '.jpg', '.JPEG', '.jpeg');
if ($dest_exist== 1 AND !file_exists($file_dest)) {
if (in_array($file_extention, $check_ext)) {
echo 'OKEY'; //encore un test echo par là
if (move_uploaded_file($file_name, $file_dest)) {
$stmt = $stmt->fetch();
$stmt = $stmt['id'];
$id = $DB->insert('INSERT INTO messages (id_expediteur,id_destinataire, mess, nom, file_url ) VALUES (?,?,?,?,?)',
array($_SESSION['id'],$stmt, $messages,$file_name,$file_dest));
$error = $id ? "Votre message a bien été envoyé !" : $DB->getError();
}else {
$error = "Cet utilisateur n'existe pas...";
$error = "Veuillez compléter tous les champs";
}
}else {
echo 'pouet'; //encore un test juste là.
}
}
}
}
?>
...
<form method="post" enctype="multipart/form-data" >
<br /><br />
<legend>Envoi de fichiers</legend><!-- champs d'envoi de fichier, de type file -->
<p>Destinataire:</p><input type="text" name="destinataire" /><br><br>
<input type="file" name="fichier" /></p>
<textarea placeholder="Votre message" name="mess"></textarea>
<br /><br />
<input type="submit" value="Envoyer" name="envoi_correction" />
<br /><br />
<?php if(isset($error)) { echo '<span style="color:red">'.$error.'</span>'; } ?>
</legend></form>
...
<?php } ?>
Code : Tout sélectionner
<?php
session_start();
include('bd/connexionDB.php');
// S'il n'y a pas de session alors on ne va pas sur cette page
if (!isset($_SESSION['id'])){
header('Location: index.php');
exit;
}
// On récupère les informations (ps: je ne sais pas trop comment le modifier, un problème à la fois)
if(isset($_SESSION['id']) AND !empty($_SESSION['id'])) {
$messages = $DB->query('SELECT * FROM messages WHERE id_destinataire = ?', array($_SESSION['id']));
$msg_nbr = $messages->rowCount();
?>
...
<h1>Liste des corrections disponibles</h1>
<?php
if($msg_nbr == 0) { echo "Vous n'avez aucun message..."; }
while($m = $messages->fetch()) {
$stmt = $DB->query(
'SELECT mail FROM utilisateur WHERE id = :id', // paramètre $sql
array(':id' => $m['id_expediteur'])); // paramètre $data
$mail = $stmt->fetchObject()->mail;
?>
<b><?= $mail ?></b> vous a envoyé: <br />
<?= nl2br($m['mess']), '<a href="'.$m['file_url'].'">Télécharger'.$m['nom'].'</a>;' ?><br />
-------------------------------------<br/>
<?php } ?>