Messagerie interne avec fichier texte

Description

Re voici le code php/html d'une petite messagerie interne, les mails sont conservés dans un fichier texte sur votre serveur. Il faut être membre du site pour pouvoir accéder à la messagerie.
Le code php ouvre le fichier de l'utilisateur, puis récupére les infos dans 4 tableaux, emetteur titre date d'envoie et message, puis les affichent dans un tableau sur la page.
Une petite fonction javascript permet de ne dévoiller le contenu du message uniquement si on clique sur son titre.

//////////NOUVEAUX CODES SOURCES\\\\\\\\\\\\\\

SUITE AUX COMMENTAIRES J'AI REPRIS MON CODE, j'ai ajouté les pages d'accueil, d'inscription et de recherche de membres. J'ai également créée un style.css très léger car tout les gouts sont dans la nature c'est à vous de modifier à votre convenance. Merci pour vos remarques

Source / Exemple :


/* L'index */
<?php
session_start();

	if($_REQUEST['ko'] == "se déconnecter"){
		unset($_SESSION['login']);
	}
?>
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

	<head>
	
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<link rel="stylesheet" type="text/css" href="style.css" />
		<title> Accueil : connectez vous et consultez vos messages !</title>
	</head>
	
	<body>

	<h1>Bienvenue sur votre messagerie !</h1>
	<?php
		
		/*Si déjà connecté */
		if($_SESSION['login']){
			$mess = '<h2>Vous êtes connecté !</h2>';
			$mess.= '<h2>Vous pouvez consulter vos message !</h2>';
			$mess.= '<h2><a href="messagerie.php" >Messagerie</a></h2></body></html>';
			echo $mess;
			unset($mess);
			exit();
		}
		/*Formulaire de connexion posté*/
		if($_REQUEST['conexion'] == 'se connecter'){
			/*Vérification des champs*/
			if( empty($_REQUEST['pseudo']) ){
				if( empty($_REQUEST['pass']) ){
					echo 'Vous devez remplir les casses Pseudo et Mot de passe';
				}
				else {
					echo 'Vous devez remplir la casse Pseudo';
				}
			}
			elseif( empty($_REQUEST['pass']) ){
					echo 'Vous devez remplir la casse Mot de Passe';
			}
			else {
				/*Ouverture du fichier user */
				$rep = 'user/user.txt';
				$user = fopen($rep,'r');
				while( $ligne = fgets($user) ) {
					$tab = explode('|', $ligne);
					/*Verification : l'utilisateur est-til inscrit ?*/
					if( ($_REQUEST['pseudo'] == $tab[0]) && ($_REQUEST['pass'] == $tab[1]) ){
						$_SESSION['login'] = $tab[0];
						fclose($user);
						exit ('<h2>Connexion réussie !<br />Vous pouvez consulter vos messages !<br /><a href="messagerie.php?class=d" >Messagerie</a></h2></body></html>');
					}
				}
				fclose($user);
				echo '<h2>Utilisateur inconnu !<br /><a href="enregistrement.php" >S\'enregistrer</a></h2>';
			}
		}	
				
	?>
	<h2>Vous devez vous connecter pour consulter vos messages</h2>
	<h2>Si vous n'avez pas de compte, vous pouvez en créer un : <a href="enregistrement.php">ICI</a></h2>
	<!--Formulaire de connexion -->
	<form method="post" action="">
		<label>Pseudo : </label><input type="text" name="pseudo" size="15" /><br /><br />
		<label>Mot de passe : </label><input type="password" name="pass" size="15" /><br /><br />
		<input class="bouton" type="submit" name="conexion" value="se connecter" />
		<input class="bouton" type="reset" name="effacer" value="effacer" />
	</form>
		
	</body>
</html>

/*L'inscription*/
<?php
session_start();
?>
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

	<head>
	
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<link rel="stylesheet" type="text/css" href="style.css" />
		<title> Inscription </title>
	</head>
	
	<body>

	<h1>Page d'inscription !</h1>
	<?php
		
		/*Si déjà connecté */
		if($_SESSION['login']){
			$mess = '<h2>Vous êtes déjà inscrit !</h2>';
			$mess.= '<h2>Vous pouvez consulter vos message !</h2>';
			$mess.= '<h2><a href="messagerie.php" >Messagerie</a></h2></body></html>';
			echo $mess;
			unset($mess);
			exit();
		}
		
		/*Le formulaire est posté*/
		if($_REQUEST['inscription'] == 'inscription'){
			/*Vérification des champs*/
			if( empty($_REQUEST['pseudo']) ){
				if( empty($_REQUEST['pass']) ){
					echo 'Vous devez remplir les casses Pseudo et Mot de passe';
				}
				else {
					echo 'Vous devez remplir la casse Pseudo';
				}
			}
			elseif( empty($_REQUEST['pass']) ){
					echo 'Vous devez remplir la casse Mot de Passe';
			}
			/*Si les champs sont remplis inscription dans le fichier*/
			else { 
				$rep = 'user/user.txt';
				$deja = fopen($rep,'r');
				while( $ligne = fgets($deja) ) {
					$tab = explode('|', $ligne);
					/*Verification : l'utilisateur est-til inscrit ?*/
					if( ($_REQUEST['pseudo'] == $tab[0]) ){
						fclose($deja);
						exit ('<h2>Ce pseudo existe déjà !<br /><a href="enregistrement.php?" >Recommencer</a></h2></body></html>');
					}
				}
				$user = fopen($rep,'a+');
				$new = $_REQUEST['pseudo'].'|'.$_REQUEST['pass']."|\n";
				/*Inscription réussie*/
				if(fwrite($user,$new)){
					$_SESSION['login'] = $_REQUEST['pseudo'];
					/*Création de son fichier messages*/
					$mess = 'message/'.$_SESSION['login'].'.txt';
					touch($mess,time());
					echo '<h2>Enregistrement réussi !Merci '.$_REQUEST['login'].'<br />Accéder à votre <a href="messagerie.php" >Messagerie</a></h2>';
					fclose($user);					
					exit('</body></html>');
				}
				/*Inscription échouée*/
				else {
					echo 'Erreur il va falloir recommencer';
				}
			}
		}
	?>
	<h2> Vous pouvez dès maintenant vous inscrire </h2>
	<!--Formulaire d'inscription -->
	<form method="post" action="">
		<label>Pseudo : </label><input type="text" name="pseudo" size="15" /><br /><br />
		<label>Mot de passe : </label><input type="password" name="pass" size="15" /><br /><br />
		<input class="bouton" type="submit" name="inscription" value="inscription" />
		<input class="bouton" type="reset" name="effacer" value="effacer" />
	</form>
		
	</body>
</html>

/*La messagerie*/
<?php
session_start();
	?>
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

	<head>
	
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<link rel="stylesheet" type="text/css" href="style.css" />
		<title> Messagerie </title>
		<script type="text/javascript" src="functions.js"></script>
	</head>
	
	<body>
	<?php
			/*Si pas connecté pas de messagerie possible !*/
			if(!$_SESSION["login"]){
				$mess = '<h2>Vous n\'êtes pas connecté !</h2>';
				$mess.= '<h2>Vous ne pouvez pas consulter vos message !</h2>';
				$mess.= '<h2>Veuillez vous connecter : <a href="index.php" >ICI</a></h2>';
				$mess.= '<h2>Ou veuillez vous inscrire : <a href="enregistrement.php" >ICI</a></h2></body></html>';
				exit($mess);
				unset($mess);
		}
		
	?>
	
		<h1>Bienvenue sur votre messagerie <?php echo $_SESSION['login']; ?></h1>
		<h2>Cliquez sur le titre pour afficher le message</h2>
		<h2>Cliquez sur un pseudo pour lui répondre</h2>
		<div id="oko">
		<form metho="post" action="index.php">
		<input type="submit" name="ko" value="se déconnecter" />			
		</form>		
		</div>
	<?php
		//accés aux messages
		$rep = 'message/'.$_SESSION['login'].'.txt';
		$mamess = fopen($rep,'r');
		
		//Recupération des données
		$i = 0;
		while( $ligne = fgets($mamess) ) {
			$tab = explode('|', $ligne);
			$emeteur['"'.$i.'"'] = $tab[0];
			$titre['"'.$i.'"'] = stripslashes($tab[1]);
			$date['"'.$i.'"'] = $tab[2];
			$mess['"'.$i.'"'] = stripslashes($tab[3]); 
			$i ++;
		}
		fclose($mamess);
		
		//Pour effacer un message
		if( substr($_GET['eff'],0,3) == 'sup' ){
			//création d'un fichier temporaire
			$repe = 'message/tmp'.$_SESSION['login'].'.txt';
			$effa = fopen($repe,'w+');
			$ess = strrchr($_GET['eff'], '.');
			$ess = substr($ess, 1);
			$eff = (int)$ess;
			
			//écriture dans le fichier tmp avec ommission du message à effacer
			$stop = count($date);
			for( $k = 0; $k < $stop; $k ++ ){				
				if ( $k != $eff ) {
					$text = $emeteur['"'.$k.'"'];		
					$text.= '|';
					$text.= $titre['"'.$k.'"'];
					$text.= '|';
					$text.= $date['"'.$k.'"'];
					$text.= '|';
					$text.= $mess['"'.$k.'"'];
					fwrite($effa,$text);
					unset($text);
				}
				unset($text);
			}	
			
			fclose($effa);
			
			//Recopie du tmp dans le fichier mail source	
			if ( copy($repe,$rep) ) {
				unlink($repe);
				exit('<br /><h3>message effacé</h3><br /><h3><a href=\"messagerie.php?class=d\" >Retour</a></h3>');
			}
			unset($_GET['eff']);
		}
		
	?>
	<table>
		<tr>
			<th>Emetteur</th>
			<th>Tite</th>
			<th>Envoyé le <?php if($_GET['class'] == 'd'){echo '<a href="messagerie.php?class=c"><img alt=ordre" src="image/fleche2.jpg"></img></a>';}if($_GET['class'] == 'c'){echo '<a href="messagerie.php?class=d"><img alt="ordre" src="image/fleche1.jpg"></img></a>';}?></th>
			<th>Suppression</th>
		</tr>
	<?php
		//Affichage des messages suivants le classement demandé
		if(empty($emeteur)){
			echo '<tr><td colspan="4">Vous n\'avez aucun message désolé !</td></tr>';
		}
		else {
			if( $_GET['class'] == 'd' )  {
				$deb = count($date)-1;
				for( $j = $deb; $j >= 0; $j--){
					$result = '<tr><td><a href="messagerie.php?rep='.$emeteur['"'.$j.'"'].'" >'.$emeteur['"'.$j.'"'].'</a></td>';
					$result.= '<td><div class="menua" id="menua'.$j.'" onclick="afficheMenu(this)" ><a class="re" href="#">'.stripslashes($titre['"'.$j.'"']).'</a></div><div id="sousmenua'.$j.'" style="display:none"><div class="sousmenua">Message :<br />'.stripslashes($mess['"'.$j.'"']).'</div></div></td>';
					$result.= '<td>'.$date['"'.$j.'"'].'</td>';
					$result.= '<td><a href="profil.php?class=d&eff=sup.'.$j.'" ><img alt="poub" src="image/poubelle.gif"></img></a></td></tr>';		
				}
			}
			elseif( $_GET['class'] == 'c' ) {
				$stopit = count($date);
				for( $j = 0 ; $j < $stopit ; $j++){
					$result = '<tr><td><a href="messagerie.php?rep='.$emeteur['"'.$j.'"'].'" >'.$emeteur['"'.$j.'"'].'</a></td>';
					$result.= '<td><div class="menua" id="menua'.$j.'" onclick="afficheMenu(this)" ><a class="re" href="#">'.stripslashes($titre['"'.$j.'"']).'</a></div><div id="sousmenua'.$j.'" style="display:none"><div class="sousmenua">Message :<br />'.stripslashes($mess['"'.$j.'"']).'</div></div></td>';
					$result.= '<td>'.$date['"'.$j.'"'].'</td>';
					$result.= '<td><a href="profil.php?class=d&eff=sup.'.$j.'" ><img alt="poub" src="image/poubelle.gif"></img></a></td></tr>';
				}
			}
			echo $result;
			unset($result);
		}
	?>
	</table>	
	<h2>Recherchez un membre pour lui envoyer un message</h2>
	<h2><a href="rechercher">Recherche</a></h2>

	<?php
		//Pour répondre aux message
		if( $_GET['rep'] ){
			if ( $_GET['rep'] == $_SESSION['login'] ){
				exit('<h4>Voyons on ne s\'envoie pas de messages à sois-même !!</h4>');
			}
			else {
				$form = '<br /><h2>Répondre à '.$_GET['rep'].'</h2><br />';
				$form.= '<form method="post" action="" >';
				$form.= '<label>Sujet </label>';
				$form.= '<input type="text" name="sujet" size="35" /><br /><br />';
				$form.= '<label>Message</label>';
				$form.= '<textarea name="message" cols="40" rows="4" maxlength="400"></textarea><br /><br />';
				$form.= '<input class="bouton" type="submit" name="envmail" value="envoyer" size="15" />';
				$form.= '<input class="bouton" type="reset" name="ko" value="effacer" size="15" />';
				$form.= '</form>';
				echo $form;
				unset($form);
			}
		}
		
		/*Envoi du mail si form est posté*/	
		if( $_REQUEST['envmail'] == 'envoyer') {
				//Ouverture du fichier mail du destinataire
				$rep = 'message/'.$_GET['rep'].'.txt';				
				$mess = fopen($rep,'a+');
				$texte = $_SESSION['login'].'|'.$_REQUEST['sujet'].'|'.date("d/m/y").'|'.quotemeta($_REQUEST['message'])."\n";
				
				//ecriture
				if( fwrite($mess,$texte) ) {
					echo '<br />Mail bien envoyé<meta http-equiv="refresh" content="3"; url="messagerie.php?class=d">';
				}
				else {
					echo '<br />Problème lors de l\'envoie du mail!';
				}
			fclose($mess);
			unset($texte);
			exit('</body></html>');
		}
	?>
	</body>
</html>

/*La recherche*/
<?php
session_start();
?>
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

	<head>
	
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<link rel="stylesheet" type="text/css" href="style.css" />
		<title> Recherche de membres </title>
	</head>
	
	<body>

	<h1>Ici vous pouvez recherchez des membres</h1>
	<div id="oko">
		<form method="post" action="index.php">
		<input type="submit" name="ko" value="se déconnecter" />		
		</form>		
	</div>
	<?php
		
		/*Si déjà connecté */
		if(! $_SESSION['login']){
			$mess = '<h2>Vous devez êtes connecté pour effectuer une recherche !</h2>';
			$mess.= '<h2><a href="index.php" >Accueil</a></h2></body></html>';
			echo $mess;
			unset($mess);
			exit();
		}
		/*Formulaire de connexion posté*/
		if($_REQUEST['chercher'] == 'cherche'){
			/*Vérification des champs*/
			if( empty($_REQUEST['cherchepseudo']) ){
					echo 'Vous devez remplir la casse Pseudo';
			}
			else {
					
	?>
	<table>
		<tr>
			<th class="messa" >Pseudo</th>
		</tr>
	<?php
				/*Ouverture du fichier user */
				$rep = 'user/user.txt';
				$user = fopen($rep,'r');
				while( $ligne = fgets($user) ) {
					$tab = explode('|', $ligne);
					//Si le mot est dans le fichier user affichage
					if(strstr($tab[0], $_REQUEST['cherchepseudo'])){
						$res = TRUE;
						echo '<tr><td><a href="messagerie.php?class=d&rep='.$tab[0].'" >'.$tab[0].'</td></tr>';
					}
				}
				if(!$res){
					echo '<tr><td>pas de résultat !</td></tr>';
				}
				exit('</table>');
			}
		}		
	?>	
	<h2>Entrez le pseudo à rechercher</h2>
	<h2><a href="enregistrement.php">ICI</a></h2>
	<!--Formulaire de connexion -->
	<form method="post" action="">
		<label>Pseudo : </label><input type="text" name="cherchepseudo" size="15" /><br /><br />
		<input class="bouton" type="submit" name="chercher" value="cherche" />
		<input class="bouton" type="reset" name="effacer" value="effacer" />
	</form>
		
	</body>
</html>

/*Le style*/
body {
	background-image : url('image/fond.jpg');
	background-repeat : repeat;
}

label {
	display : block;
	float : left;
	width : 150px;
	margin-left : 450px;
	color : yellow;
	font-weight : bold;
} 
h1, h2 {
	color : white;
	text-align : center;
	margin-bottom : 50px;
}
input.bouton {
	background-color : blue;
	color : white;
	font-weight : bold;
	height : 50px;
	margin-left : 350px;
}
table {
	margin-left : 300px; 
	border : 2px solid black;
}
th, td {
	border : 2px solid black;
	border-collapse : collapse;
	width : 150px;
}
th {
	background-color : blue;
}
td {
	background-color : #f1a1a1;
	text-align : center;
}
#oko {
   float : right;
   margin-right : 15px;
   border : 2px solid red;
	}

Conclusion :


J'espere que ce script pourras servir !
Lachez vous sur les coms PAS DE PITIÉ c'est comme ça qu'on apprend ;)

Le code à changé depuis les commentaires ! TESTEZ LE ;)

ps pour voir mon site : http://julienze.free.fr

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.