
Membre
|
Bonjour et merci pour ce site
voila j'ai pris le tuto de la messagerie privé et j'ai tenté de l'installer sur mon site
mais avant de tout changer j'ai décidé de faire un test sur mon hebergeur.. j'ai juste uploader les fichiers créer les tables..
donc l'inscription la connexion l'envoie de message marche mais après tout bloque..
les nouveau messages reçu ne s'affichent pas en tant que message non lu mais en message lu..
je ne peux pas répondre a un message il m'affiche cela :
Vous n'avez pas le droit d'accéder à cette page.
pourtant je suis bien loggué
Quelques pourrait m'aidé car j'ai passé toute une apres midi dessus et je n'avance pas..
ps: ce sont les même fichiers contenue dans l'archive du tuto
|
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux !

Membre
|
Bonjour,
Peux-tu nous passer le code des pages concernées??
|

Membre
|
List_pm.php
<?php
include('config.php');
?>
<!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 href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
<title>Messages Personnels</title>
</head>
<body>
<div class="header">
<a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Espace Membre" /></a>
</div>
<div class="content">
<?php
//On verifie que lutilisateur est connecte
if(isset($_SESSION['username']))
{
//On affiche la liste des messages de l'utilisateur sous la forme dun tableau
//Deux requettes sont executees, une pour recuperer les messages non-lus et une pour les messages lus
$req1 = mysql_query('select m1.id, m1.title, m1.timestamp, count(m2.id) as reps, users.id as userid, users.username from pm as m1, pm as m2,users where ((m1.user1="'.$_SESSION['userid'].'" and m1.user1read="no" and users.id=m1.user2) or (m1.user2="'.$_SESSION['userid'].'" and m1.user2read="no" and users.id=m1.user1)) and m1.id2="1" and m2.id=m1.id group by m1.id order by m1.id desc');
$req2 = mysql_query('select m1.id, m1.title, m1.timestamp, count(m2.id) as reps, users.id as userid, users.username from pm as m1, pm as m2,users where ((m1.user1="'.$_SESSION['userid'].'" and m1.user1read="yes" and users.id=m1.user2) or (m1.user2="'.$_SESSION['userid'].'" and m1.user2read="yes" and users.id=m1.user1)) and m1.id2="1" and m2.id=m1.id group by m1.id order by m1.id desc');
?>
Voici la liste de vos messages:<br />
<a href="new_pm.php" class="link_new_pm">Nouveau message privé</a><br />
<h3>Messages non-lus(<?php echo intval(mysql_num_rows($req1)); ?>):</h3>
<table>
<tr>
<th class="title_cell">Titre</th>
<th>Nb. Réponses</th>
<th>Participant</th>
<th>Date d'envoi</th>
</tr>
<?php
//On affiche la liste des messages non-lus
while($dn1 = mysql_fetch_array($req1))
{
?>
<tr>
<td class="left"><a href="read_pm.php?id=<?php echo $dn1['id']; ?>"><?php echo htmlentities($dn1['title'], ENT_QUOTES, 'UTF-8'); ?></a></td>
<td><?php echo $dn1['reps']-1; ?></td>
<td><a href="profile.php?id=<?php echo $dn1['userid']; ?>"><?php echo htmlentities($dn1['username'], ENT_QUOTES, 'UTF-8'); ?></a></td>
<td><?php echo date('d/m/Y H:i:s' ,$dn1['timestamp']); ?></td>
</tr>
<?php
}
//Sil na aucun message non-lu, on le dit
if(intval(mysql_num_rows($req1))==0)
{
?>
<tr>
<td colspan="4" class="center">Vous n'avez aucun message non-lu.</td>
</tr>
<?php
}
?>
</table>
<br />
<h3>Messages lus(<?php echo intval(mysql_num_rows($req2)); ?>):</h3>
<table>
<tr>
<th class="title_cell">Titre</th>
<th>Nb. Réponses</th>
<th>Participant</th>
<th>Date d'envoi</th>
</tr>
<?php
//On affiche la liste des messages lus
while($dn2 = mysql_fetch_array($req2))
{
?>
<tr>
<td class="left"><a href="read_pm.php?id=<?php echo $dn2['id']; ?>"><?php echo htmlentities($dn2['title'], ENT_QUOTES, 'UTF-8'); ?></a></td>
<td><?php echo $dn2['reps']-1; ?></td>
<td><a href="profile.php?id=<?php echo $dn2['userid']; ?>"><?php echo htmlentities($dn2['username'], ENT_QUOTES, 'UTF-8'); ?></a></td>
<td><?php echo date('d/m/Y H:i:s' ,$dn2['timestamp']); ?></td>
</tr>
<?php
}
//Sil na aucun message lu, on le dit
if(intval(mysql_num_rows($req2))==0)
{
?>
<tr>
<td colspan="4" class="center">Vous n'avez aucun message lu.</td>
</tr>
<?php
}
?>
</table>
<?php
}
else
{
echo 'Vous devez être connecté pour accéder à cette page.';
}
?>
</div>
<div class="foot"><a href="<?php echo $url_home; ?>">Retour à l'accueil</a> - <a href="http://www.supportduweb.com/">Support du Web</a></div>
</body>
</html>
read_mp.php
<?php
include('config.php');
?>
<!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 href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
<title>Lecture d'un MP</title>
</head>
<body>
<div class="header">
<a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Espace Membre" /></a>
</div>
<?php
//On verifie si lutilisateur est connecte
if(isset($_SESSION['username']))
{
//On verifie que lidentifiant de la discution est defini
if(isset($_GET['id']))
{
$id = intval($_GET['id']);
//On recupere le titre et les narateurs de la discution
$req1 = mysql_query('select title, user1, user2 from pm where id="'.$id.'" and id2="1"');
$dn1 = mysql_fetch_array($req1);
//On verifie que la discution existe
if(mysql_num_rows($req1)==1)
{
//On verifie que lutilisateur a le droit dafficher les messages
if($dn1['user1']==$_SESSION['userid'] or $dn1['user2']==$_SESSION['userid'])
{
//La discution sera placee dans les messages lus
if($dn1['user1']==$_SESSION['userid'])
{
mysql_query('update pm set user1read="yes" where id="'.$id.'" and id2="1"');
$user_partic = 2;
}
else
{
mysql_query('update pm set user2read="yes" where id="'.$id.'" and id2="1"');
$user_partic = 1;
}
//On recupere la liste des messages
$req2 = mysql_query('select pm.timestamp, pm.message, users.id as userid, users.username, users.avatar from pm, users where pm.id="'.$id.'" and users.id=pm.user1 order by pm.id2');
//On verifie si lutilisateur a valide le formulaire de reponse
if(isset($_POST['message']) and $_POST['message']!='')
{
$message = $_POST['message'];
//On enleve lechappement si get_magic_quotes_gpc est active
if(get_magic_quotes_gpc())
{
$message = stripslashes($message);
}
//On echape le message pour pouvoir le mettre dans une requette SQL
$message = mysql_real_escape_string(nl2br(htmlentities($message, ENT_QUOTES, 'UTF-8')));
//On envoi la reponse et le statut de la discution passe a non-lu pour lautre utilisateur
if(mysql_query('insert into pm (id, id2, title, user1, user2, message, timestamp, user1read, user2read)values("'.$id.'", "'.(intval(mysql_num_rows($req2))+1).'", "", "'.$_SESSION['userid'].'", "", "'.$message.'", "'.time().'", "", "")') and mysql_query('update pm set user'.$user_partic.'read="yes" where id="'.$id.'" and id2="1"'))
{
?>
<div class="message">Votre message a bien été envoyé.<br />
<a href="read_pm.php?id=<?php echo $id; ?>">Retour à la discussion</a></div>
<?php
}
else
{
?>
<div class="message">Une erreur c'est produite lors de l'envoi du message.<br />
<a href="read_pm.php?id=<?php echo $id; ?>">Retour à la discussion</a></div>
<?php
}
}
else
{
//On affiche la liste des messages
?>
<div class="content">
<h1><?php echo $dn1['title']; ?></h1>
<table class="messages_table">
<tr>
<th class="author">Utilisateur</th>
<th>Message</th>
</tr>
<?php
while($dn2 = mysql_fetch_array($req2))
{
?>
<tr>
<td class="author center"><?php
if($dn2['avatar']!='')
{
echo '<img src="'.htmlentities($dn2['avatar']).'" alt="Image Perso" style="max-width:100px;max-height:100px;" />';
}
?><br /><a href="profile.php?id=<?php echo $dn2['userid']; ?>"><?php echo $dn2['username']; ?></a></td>
<td class="left"><div class="date">Date d'envoi: <?php echo date('d/m/Y H:i:s' ,$dn2['timestamp']); ?></div>
<?php echo $dn2['message']; ?></td>
</tr>
<?php
}
//On affiche le formulaire de reponse
?>
</table><br />
<h2>Répondre</h2>
<div class="center">
<form action="read_pm.php?id=<?php echo $id; ?>" method="post">
<label for="message" class="center">Message</label><br />
<textarea cols="40" rows="5" name="message" id="message"></textarea><br />
<input type="submit" value="Envoyer" />
</form>
</div>
</div>
<?php
}
}
else
{
echo '<div class="message">Vous n\'avez pas le droit d\'accéder à cette page.</div>';
}
}
else
{
echo '<div class="message">Ce message n\'existe pas.</div>';
}
}
else
{
echo '<div class="message">L\'identifiant du message n\'est pas défini.</div>';
}
}
else
{
echo '<div class="message">Vous devez être connecté pour accéder à cette page.</div>';
}
?>
<div class="foot"><a href="list_pm.php">Retour à mes messages privés</a> - <a href="http://www.supportduweb.com/">Support du Web</a></div>
</body>
</html>
New_mp.php
<?php
include('config.php');
?>
<!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 href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
<title>Nouveau MP</title>
</head>
<body>
<div class="header">
<a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Espace Membre" /></a>
</div>
<?php
//On verifie si lutilisateur est connecte
if(isset($_SESSION['username']))
{
$form = true;
$otitle = '';
$orecip = '';
$omessage = '';
//On verifie si le formulaire a ete valide
if(isset($_POST['title'], $_POST['recip'], $_POST['message']))
{
$otitle = $_POST['title'];
$orecip = $_POST['recip'];
$omessage = $_POST['message'];
//On enleve lechappement si get_magic_quotes_gpc est active
if(get_magic_quotes_gpc())
{
$otitle = stripslashes($otitle);
$orecip = stripslashes($orecip);
$omessage = stripslashes($omessage);
}
//On verifie si tout les champs ont ete remplis
if($_POST['title']!='' and $_POST['recip']!='' and $_POST['message']!='')
{
//On echappe les variables pour les utiliser dans une requette SQL
$title = mysql_real_escape_string($otitle);
$recip = mysql_real_escape_string($orecip);
$message = mysql_real_escape_string(nl2br(htmlentities($omessage, ENT_QUOTES, 'UTF-8')));
//On verifie que le destinataire existe
$dn1 = mysql_fetch_array(mysql_query('select count(id) as recip, id as recipid, (select count(*) from pm) as npm from users where username="'.$recip.'"'));
if($dn1['recip']==1)
{
//On verifie que le destinataire nest pas lutilisateur meme
if($dn1['recipid']!=$_SESSION['userid'])
{
$id = $dn1['npm']+1;
//On envoi le message
if(mysql_query('insert into pm (id, id2, title, user1, user2, message, timestamp, user1read, user2read)values("'.$id.'", "1", "'.$title.'", "'.$_SESSION['userid'].'", "'.$dn1['recipid'].'", "'.$message.'", "'.time().'", "yes", "no")'))
{
?>
<div class="message">Le message a bien été envoyé.<br />
<a href="list_pm.php">Liste de mes messages privés</a></div>
<?php
$form = false;
}
else
{
//Sinon, on dit quune erreur sest produite
$error = 'Une erreur c\'est produite lors de l\'envoi du message.';
}
}
else
{
//Sinon, on dit quil ne peut pas envoyer un message a lui meme
$error = 'Vous ne pouvez pas envoyer un message à vous même.';
}
}
else
{
//Sinon, on dit que le destinataire nexiste pas
$error = 'Le destinataire de votre message n\'existe pas.';
}
}
else
{
//Sinon on dit quun champ nest pas rempli
$error = 'Un des champs n\'est pas rempli.';
}
}
elseif(isset($_GET['recip']))
{
//On recupere le nom dutilisateur si disponible
$orecip = $_GET['recip'];
}
if($form)
{
//On affiche lerreur sil ya lieu
if(isset($error))
{
echo '<div class="message">'.$error.'</div>';
}
//On affiche le formulaire
?>
<div class="content">
<h1>Nouveau message privé</h1>
<form action="new_pm.php" method="post">
Veuillez remplir ce formulaire pour envoyer le MP.<br />
<label for="title">Titre</label><input type="text" value="<?php echo htmlentities($otitle, ENT_QUOTES, 'UTF-8'); ?>" id="title" name="title" /><br />
<label for="recip">Destinataire<span class="small">(Nom d'utilisateur)</span></label><input type="text" value="<?php echo htmlentities($orecip, ENT_QUOTES, 'UTF-8'); ?>" id="recip" name="recip" /><br />
<label for="message">Message</label><textarea cols="40" rows="5" id="message" name="message"><?php echo htmlentities($omessage, ENT_QUOTES, 'UTF-8'); ?></textarea><br />
<input type="submit" value="Envoyer" />
</form>
</div>
<?php
}
}
else
{
echo '<div class="message">Vous devez être connecté pour accéder à cette page.</div>';
}
?>
<div class="foot"><a href="list_pm.php">Retour à mes messages privés</a> - <a href="http://www.supportduweb.com/">Support du Web</a></div>
</body>
</html>
Au faite pour protéger mes pages dans l'espace membre
j'ai mis cela a chaque début de page
<?php
session_start();
*/
if(!isset($_SESSION['username'])) {
echo 'Vous n\'êtes pas autoris´ à acceder à cette zone';
include('index.php');
exit;
}
?>
|

Membre
|
je crois que j'ai exactement le même problème car moi les membres créés un nouveau mp mais le destinataire quand il répond, les messages sont blanc et en regardant dans la BDD, le message n'a parait pas il met l'id de la personne (celui qui a écrit) et 0 (pour destinataire) :s
|

Membre
|
en faite le problème c'est l'autorisation d'accès aux messages
{
//On verifie que lutilisateur a le droit dafficher les messages
if($dn1['user1']==$_SESSION['userid'] or $dn1['user2']==$_SESSION['userid'])
{
//La discution sera placee dans les messages lus
if($dn1['user1']==$_SESSION['userid'])
{
mysql_query('update pm set user1read="yes" where id="'.$id.'" and id2="1"');
$user_partic = 2;
}
else
{
mysql_query('update pm set user2read="yes" where id="'.$id.'" and id2="1"');
$user_partic = 1;
}
//On recupere la liste des messages
$req2 = mysql_query('select pm.timestamp, pm.message, users.id as userid, users.username, users.avatar from pm, users where pm.id="'.$id.'" and users.id=pm.user1 order by pm.id2');
//On verifie si lutilisateur a valide le formulaire de reponse
if(isset($_POST['message']) and $_POST['message']!='')
{
$message = $_POST['message'];
//On enleve lechappement si get_magic_quotes_gpc est active
if(get_magic_quotes_gpc())
{
$message = stripslashes($message);
}
//On echape le message pour pouvoir le mettre dans une requette SQL
$message = mysql_real_escape_string(nl2br(htmlentities($message, ENT_QUOTES, 'UTF-8')));
//On envoi la reponse et le statut de la discution passe a non-lu pour lautre utilisateur
if(mysql_query('insert into pm (id, id2, title, user1, user2, message, timestamp, user1read, user2read)values("'.$id.'", "'.(intval(mysql_num_rows($req2))+1).'", "", "'.$_SESSION['userid'].'", "", "'.$message.'", "'.time().'", "", "")') and mysql_query('update pm set user'.$user_partic.'read="yes" where id="'.$id.'" and id2="1"'))
{
?>
<div class="message">Votre message a bien été envoyé.<br />
<a href="read_pm.php?id=<?php echo $id; ?>">Retour à la discussion</a></div>
<?php
}
else
{
?>
<div class="message">Une erreur c'est produite lors de l'envoi du message.<br />
<a href="read_pm.php?id=<?php echo $id; ?>">Retour à la discussion</a></div>
<?php
}
}
else
{
//On affiche la liste des messages
?>
<div class="content">
<h1><?php echo $dn1['title']; ?></h1>
<table class="messages_table">
<tr>
<th class="author">Utilisateur</th>
<th>Message</th>
</tr>
<?php
while($dn2 = mysql_fetch_array($req2))
{
?>
<tr>
<td class="author center"><?php
if($dn2['avatar']!='')
{
echo '<img src="'.htmlentities($dn2['avatar']).'" alt="Image Perso" style="max-width:100px;max-height:100px;" />';
}
?><br /><a href="profile.php?id=<?php echo $dn2['userid']; ?>"><?php echo $dn2['username']; ?></a></td>
<td class="left"><div class="date">Date d'envoi: <?php echo date('d/m/Y H:i:s' ,$dn2['timestamp']); ?></div>
<?php echo $dn2['message']; ?></td>
</tr>
<?php
}
//On affiche le formulaire de reponse
?>
</table><br />
<h2>Répondre</h2>
<div class="center">
<form action="read_pm.php?id=<?php echo $id; ?>" method="post">
<label for="message" class="center">Message</label><br />
<textarea cols="40" rows="5" name="message" id="message"></textarea><br />
<input type="submit" value="Envoyer" />
</form>
</div>
</div>
<?php
}
}
else
{
echo '<div class="message">Vous n\'avez pas le droit d\'accéder à cette page.</div>';
}
}
ppar ailleurs j'aimerais savoir comment protéger mes pages contre les non-inscrit/non loggué
j'ai trouvé ce bout de code dans un autre tuto qui pour l'instant marche vous en pensez quoi ??
<?php
session_start();
if(!isset($_SESSION['username'])) {
echo 'Vous n\'êtes pas autorisé à acceder à cette zone';
include('index.php');
exit;
}
?>
|

Membre
|
bonjour voila mon problème est résolu
après de long moment passé dessus je me suis rendu compte de ma grossière erreur
enfaite j'avais deux fois
<?php
session_start();
if(!isset($_SESSION['username'])) {
echo 'Vous n\'êtes pas autorisé à acceder à cette zone';
include('index.php');
exit;
}
?>
du coup je pense que ca réinitialisé a chaque ma session ce qui m'empêchait d'accéder aux messages
enfin c'est ce que je pense en tout cas je suis content d'avoir trouvé
|