8768 sujets

Développement web côté serveur, CMS

bonjour, je suis bloqué sur un truc bête mais je trouve pas la solution .
je ne sais pas quoi mettre pour que ça fonctionne dans le $destinataire =
j'ai vraiment tout essayé .
Mon but est de recuperer le mail de membre dans la bdd et de l'utiliser pour envoyer un mail lorsqu'il reçoit un msg privé
Merci d'avance



 $dnn = mysql_query('select email from users where id="'.$id.'"');
		 $email = htmlentities($dnn['email'], ENT_QUOTES, 'UTF-8');
		$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")'))
				{$destinataire = $email;
			      
			
$email_subject = "drth message privé non-lu";
$email_body = "VOUS AVEZ UN MESSAGE NON-LU !\n\n"."Ici les details:\nBonjour , vous avez un message reçu \nRendez vous sur le site pour lire le message \nuytrertyuytr";
$headers = "From: noreply@zertytre.fr\n";
mail($destinataire,$email_subject,$email_body,$headers);


Modifié par frtyuiopppp (10 Aug 2018 - 19:33)
Au lieu d'utiliser mysql_query, utiliser plutôt $db->query(''); ($db est une variable qui fait référence à l'objet PDO).
Et aussi pour les requêtes SQL de type 'insert', 'update', etc ... mettez les en majuscules, cela facilite la lecture de vos requêtes.
Pourquoi utilisez-vous la variable $destinataire pour parler de la variable $email ?
La variable $email est amplement suffisante, vous pouvez juste faire ça:

mail($email, $email_subject, $email_body, $headers);
Merci pour ta réponse Soldat8889

j'ai finalement résolu le pbm en faisant


$destinataire =  "$email"; 
			      
			
$email_subject = "message privé non-lu";
$email_body = "VOUS AVEZ UN MESSAGE NON-LU !\n\n"."Ici les details:\nBonjour , vous avez un message reçu \nRendez vous sur le site pour lire le message \n ";
$headers = "From: noreply@mloiuygf.fr\n";
mail($destinataire,$email_subject,$email_body,$headers);



ça fonctionne Smiley smile

Mais j'ai 1 dernier soucis en fait je veux envoyer le mail lorsque le msg privé est envoyé mais le mail je n'arrive pas à l'envoyer au bon membre je ne sais pas quoi mettre à cette ligne
	$dnn = mysql_fetch_array(mysql_query('select email from quoi mettre ici ));


Voici le code complet :

<?php
include('***.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>************</title>
		<link rel="icon" type="image/png" href="images/20180212_235340.png">
    </head>
    <body> 
    	<div class="header">
        	<a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.gif" 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
		$dnn = mysql_fetch_array(mysql_query('select email from users where username="'.$recip.'"'));
		$email = htmlentities($dnn['email'], ENT_QUOTES, 'UTF-8');
		$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")'))
				{$destinataire =  "$email"; 
			      
			
$email_subject = "****** message privé non-lu";
$email_body = "VOUS AVEZ UN MESSAGE NON-LU !\n\n"."Ici les details:\nBonjour , vous avez un message reçu \nRendez vous sur le site pour lire le message \n**************************************";
$headers = "From: noreply@********.fr\n";
mail($destinataire,$email_subject,$email_body,$headers);
	?>
	<div class="message">Le message a bien &eacute;t&eacute; envoy&eacute;.<br />
	<a href="list_pm.php">Liste de mes messages priv&eacute;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 &agrave; vous m&ecirc;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&eacute;</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(Nom d'utilisateur)</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 &ecirc;tre connect&eacute; pour acc&eacute;der &agrave; cette page.</div>';
}
?>
		<div class="foot"><a href="list_pm.php">Retour &agrave; mes messages priv&eacute;s</a> </div>
		
		<!--
	
	VOUS VOULEZ RESOUDRE CETTE ENIGME ?!
	UTILISER « la déclaration des droits de la femme et de la citoyenne » par Olympe
de Gouges

Indice important : Beale

(Note : Il y a une petite différence par rapport à la méthode de l’inspirateur, mais
vous ne vous en plaindrez pas je pense)


P 50 / P 17 / P 39 / P 42 / P 87 / II 14 / P 77 / P 112 / P 111 / I 17 / P 53 / P 144 /
XVII 35 / IV 24 / P 159 / P 72 / P 163 / P 105 / II 37 / XII 14 / X 5 / III 5 / P 107 / X 8 /
P 114 / VI 9 / XIV 5 / XI 10 / VIII 9 / VII 8 / P 108 / P 129 / III 36 / XIV 17 / P 178 / VIII
34 / II 25 / X 23 / VI 25 / P 21 / XVI 36 / II 15 / V 33 / III 9 / V 38 / VI 71 / XIII 13 / XII
31 / VI 14 / XIII 15 / XVI 32 / III 24 / III 14 / IV 39 / XII 13 / VI 22 / XV 9 / IV 46 / IV
50 / XIV 26 / VII 4

A noter :
? Le « & » compte comme le mot « et » qu’il substitue
? « L’oiseau » compte comme deux mots
? « Eux-mêmes » compte comme un seul mot
? Le texte de référence est celui de « Wikisource », attention
aux variations « fatales » dans d’autres versions du
document !
… Il faut fournir le texte en clair
Bonne chance [cligne]
	_JE N'AI PAS CREE CETTE ENIGME JE L'AI JUSTE RECUPERE_
	-->
	
	</body>
	
</html>

Modifié par frtyuiopppp (12 Aug 2018 - 15:14)
Je pense qu'il faudrait faire:

$req = $db->prepare('UPDATE users SET receivedEmail = ? WHERE email = ?');
$req->execute(array($email, $destinataire)); 


Je ne comprends pas pourquoi vous utilisez toujours my_sql_query, cette propriété est OBSOLÈTE depuis PHP 7.0 !
Les réductions de vos variables tels que:
$otitle = $_POST['title'];
$orecip = $_POST['recip'];
devrait être:
$otitle = htmlspecialchars($_POST['title']);

ETC ...

Puis enfin pourquoi écrire la fonction MAIL() alors que vous voulez envoyer vos "mails" qui sont des messages dans votre site web, c'est-à-dire en serveur interne Smiley hum
Modifié par Soldat8889 (11 Aug 2018 - 01:27)
merci pour vottre réponse
ce n'est pas ce que je veux faire .
l'envoie des msg privés fonctionne ;
ce que je souhaite c'est pouvoir envoyer un mail de notification sur la boite mail de l'utilisateur lorsque le msg privé est envoyé .
Déjà, il faudrait comprendre la logique du système que tu souhaites implémenter.
Pour faire simple, il te faut envoyer l'email aux [spam retiré] quand tu enregistres le message privé en base de donnée . Ainsi celui-ci recevra un email à chaque réception de message privé.
Modifié par Tony Monast (13 Aug 2018 - 16:31)
Oui je le sais c'est d'ailleurs ce que j'ai fait tu dévrais t'en apercevoir si tu prends la peine de jeter un œil sur le code Smiley cligne
Là où j'ai un pbm c'est dans la sintaxe je ne sais pas comment écrire une ligne (celle là :
   	$dnn = mysql_fetch_array(mysql_query('select email from users where username="'.$recip.'"')); 
) car je veux envoyer le mail a Celui qui reçoit le msg privé mais je n'arrive pas a récupérer son mail dans ma bdd.
Merci pour ta réponse sinon Smiley smile
Modifié par frtyuiopppp (11 Aug 2018 - 15:09)