Problème script MP

darkchristophetd Messages postés 1100 Date d'inscription   Statut Contributeur Dernière intervention   -  
Christounet Messages postés 1266 Statut Membre -
Bonjour,
J'ai un petit problème avec ce code :
if($action=='lire' or $action=='envoyer')
{
	#######################
	## AFFICHAGE DU MP SELECTIONNE ##
	######################
	$sql = mysql_query("SELECT * FROM mp_msg LEFT JOIN mp ON mp.id_msg=mp_msg.id WHERE mp_msg.destinataire='$pseudo' AND mp.id='$id' AND mp=1 ") or die(mysql_error());
	$mp = mysql_fetch_array($sql);
	$_SESSION['id_mp'] = $mp['id'];
	/*affichage
		du	MP  */
	if($pseudo == $mp['destinataire'] OR $pseudo == $mp['expediteur'])
	{
		if(isset($_POST['valider']) && isset($_GET['id_mp']))
		{
			###ON AJOUTE LA REPONSE DANS MP_MSG##
			$time = time();
			$id_mp = $_SESSION['id_mp'];
			$destinataire = ($mp['expediteur']==$_SESSION['login'])? $mp['destinataire']:'';
			$expediteur = $_SESSION['login'];
			$message = mysql_real_escape_string(nl2br(htmlspecialchars($_POST['reponse'])));
			$insert = mysql_query("INSERT INTO mp_msg VALUES('', '$id_mp', '$destinataire', '$expediteur', '$time', '$message', '0', '0')");
			if($insert)
				echo 'La réponse a bien été ajoutée !';
			else
				echo 'Une erreur est survenue : '.mysql_error();
			
			
		}
		?>
		<table border="1pxsolidblack">
			<tr>
				<th>De</th>
				<th>Date d'envoi</th>
				<th>Message</th>
			</tr>
			<tr>
				<td><?php echo $mp['expediteur'] ?></td>
				<td><?php echo date('d/m/Y \à h:m:s', $mp['date']) ?></td>
				<td><?php echo nl2br($mp['message']) ?></td>
			</tr>
		</table>
		
		<!-- AFFICHAGE DES REPONSES AU MP !-->
		<?php
		##############################
		#####AFFICHAGE DES REPONSES AU MP####
		##############################
		$id_mp = $_SESSION['id_mp'];
		$sql = mysql_query("SELECT * FROM mp_msg WHERE (destinataire='$pseudo' OR expediteur='$pseudo') AND (id_mp='$id_mp' AND mp='0') ") or die(mysql_error());
		while($mp = mysql_fetch_array($sql))
		{
		
		?>
				<table border="1pxsolidblack">
			<tr>
				<th>De</th>
				<th>Date d'envoi</th>
				<th>Message</th>
			</tr>
			<tr>
				<td><?php echo $mp['expediteur'] ?></td>
				<td><?php echo date('d/m/Y \à H:m:s', $mp['date']) ?></td>
				<td><?php echo nl2br($mp['message']) ?></td>
			</tr>
		</table>
		<?php
		} 
		?>
		<br /><br />
		<h1>Répondre</h1>
		<br />
		<form action="?action=envoyer&id_mp=<?php echo $_SESSION['id_mp'] ?>" method="post">
		<label for="reponse">Réponse :</label>
		<br />
		<textarea id="reponse" name="reponse" rows="20" cols="55"></textarea>
		<br />
		<input type="submit" name="valider" value="Envoyer" />
		</form>
		<br /><br />
		<a href="mp.php">Retour</a>
		<?php
	}
	else
	{
		echo 'Vous n\'êtes pas autorisé à lire ce MP .';
	}
	
}


Comme vous voyez, j'essaye de vérifier que la personne est soit l'expéditeur, soit le destinataire...
Mais quand je vais sur un de mes MP, mon script affiche l'erreur

Vous n'êtes pas autorisé à lire ce MP .

Pourquoi ?
merci de votre réponse,
christophetd
A voir également:

8 réponses

jojodivx Messages postés 202 Statut Membre 16
 
A tout hasard... tu te connecte où à ta base de données ?
0
darkchristophetd Messages postés 1100 Date d'inscription   Statut Contributeur Dernière intervention   459
 
Je n'ai donné qu'une partie de mon script.
Je me connecte plus haut.
0
jojodivx Messages postés 202 Statut Membre 16
 
Et il n'y a pas de problème de connexion ?

L'erreur peut provenir d'avant ce script.
0
darkchristophetd Messages postés 1100 Date d'inscription   Statut Contributeur Dernière intervention   459
 
Non car avant ce passage, j'utilise la bdd , et là ça marche
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jojodivx Messages postés 202 Statut Membre 16
 
Avant cette ligne : if($pseudo == $mp['destinataire'] OR $pseudo == $mp['expediteur'])
tu devrais tester la valeur de $pseudo
0
darkchristophetd Messages postés 1100 Date d'inscription   Statut Contributeur Dernière intervention   459
 
Ah j'ai trouvé !
$mp['expediteur'] et $mp['destinataire'] sont vides !
Mais pourquoi ?
0
jojodivx Messages postés 202 Statut Membre 16
 
Dans ton SELECT tu as mp_msg.destinataire='$pseudo' AND mp.id='$id'

Essaie ça : mp_msg.destinataire='".$pseudo."' AND mp.id='".$id."'
0
Christounet Messages postés 1266 Statut Membre 1 393
 
Bonjour,

Désolé d'intervenir dans ce post mais je pense que le problème se situe dans ton premier ordre select, en effet, tu lis le message si le numéro id est égal a celui donné mais aussi seulement si le destinataire est égal au pseudo donné, et ensuite tu testes si le pseudo est égal au destinataire ou a l'expéditeur, donc tu ne peux trouver que les mp ayant le destinataire comme pseudo. Je pense que tu peux supprimer la condition sur le destinataire dans ton ordre select et ensuite tester si le pseudo est égal au destinataire ou à l'expéditeur.

A plus
0