Vous êtes ici: Support du web > Scripts et tutoriaux > PHP / MYSQL > Messagerie Interne en php mysql - utilisateurs messagerie mail mp pm messages personnels prives

Messagerie Interne en php mysql - utilisateurs messagerie mail mp pm messages personnels prives

Messagerie Interne en php mysql - utilisateurs messagerie mail mp pm messages personnels prives Messagerie Interne en php mysql - utilisateurs messagerie mail mp pm messages personnels prives
Note : 4.9/5 (6 votes)
Derniéres modifications : 23/11/2010 à 04:04:32
Mots-Clés : messagerie interne php mysql utilisateurs messages email mp pm personnels prives connection formulaire envoyer message membre utilisateurs espace membre messages interne site

Bonjour,
Ce script vous permettra de créer une messagerie interne très facilement.
La messagerie interne que nous allons faire utilise un script d'espace membre disponible:
Espace membre en php mysql

Notre messagerie interne utilisera 3 pages.
  • Liste des messages
  • Lecture d'un message
  • Envoi d'un message
Pour bien comprendre le fonctionne du système, il suffit de lire les commentaires dans le code.

Vous pouvez voir une démonstration de la messagerie:
Vous pouvez aussi télécharger les fichiers utilisés au cours de ce tutoriel:

Télécharger l'archive .ZIP


Télécharger l'archive .RAR


Commençons par la base de données, nous allons faire une table "users" et une table "pm":
Code: SQL
--
--
-- Structure de la table `users`
--

CREATE TABLE `users` (
  `id` bigint(20) NOT NULL,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `avatar` text NOT NULL,
  `signup_date` int(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


--
-- Structure de la table `pm`
--

CREATE TABLE `pm` (
  `id` bigint(20) NOT NULL,
  `id2` int(11) NOT NULL,
  `title` varchar(256) NOT NULL,
  `user1` bigint(20) NOT NULL,
  `user2` bigint(20) NOT NULL,
  `message` text NOT NULL,
  `timestamp` int(10) NOT NULL,
  `user1read` varchar(3) NOT NULL,
  `user2read` varchar(3) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Voici à quoi ressemble la table "users":

Et voici à quoi ressemble la table "pm":


Liste des messages


Sur cette page, l'utilisateur aura la liste de ses messages. Ses messages seront classés en deux catégories, une pour les messages lus et une pour les messages non-lus.
list_pm.php
Code: 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&eacute;</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&eacute;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&eacute;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 &ecirc;tre connect&eacute; pour acc&eacute;der &agrave; cette page.';
}
?>
                </div>
                <div class="foot"><a href="<?php echo $url_home; ?>">Retour &agrave; l'accueil</a> - <a href="http://www.supportduweb.com/">Support du Web</a></div>
        </body>
</html>


Lecture d'un message


Cette page permet à l'utilisateur de lire un message. L'utilisateur peut aussi répondre au bas de la page.
read_pm.php
Code: 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 &eacute;t&eacute; envoy&eacute;.<br />
<a href="read_pm.php?id=<?php echo $id; ?>">Retour &agrave; 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 &agrave; 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&eacute;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&eacute;der &agrave; 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&eacute;fini.</div>';
}
}
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> - <a href="http://www.supportduweb.com/">Support du Web</a></div>
        </body>
</html>


Envoi d'un message


Cette page permet à l'utilisateur d'envoyer une nouveau message(et non une réponse). L'utilisateur devra entrer le nom d'utilisateur du destinataire.
new_pm.php
Code: 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 &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<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 &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> - <a href="http://www.supportduweb.com/">Support du Web</a></div>
        </body>
</html>


Il faut modifier les identifiants mysql dans le fichier config.php, pour que la messagerie et l'espace membre puissent fonctionner correctement.
config.php
Code: PHP
<?php
//On demarre les sessions
session_start();

/******************************************************
----------------Configuration Obligatoire--------------
Veuillez modifier les variables ci-dessous pour que l'
espace membre puisse fonctionner correctement.
******************************************************/


//On se connecte a la base de donnee
mysql_connect('hote', 'nomdutilisateur', 'motdepasse');
mysql_select_db('basededonne');

//Email du webmaster
$mail_webmaster = 'example@example.com';

//Adresse du dossier de la top site
$url_root = 'http://www.example.com/';

/******************************************************
----------------Configuration Optionelle---------------
******************************************************/


//Nom du fichier de laccueil
$url_home = 'index.php';

//Nom du design
$design = 'default';
?>


Dans l'archive zip ou rar, il y a aussi l'espace membre qui a subit quelques modifications.

Vous pouvez voir une démonstration de la messagerie:
Vous pouvez aussi télécharger les fichiers utilisés au cours de ce tutoriel:

Télécharger l'archive .ZIP


Télécharger l'archive .RAR

Merci et j'espère que ce tutoriel vous sera utile.

Scripts et tutoriaux similaires à celui ci:

Commentaires

Ajouter un commentaire





Vous n'êtes actuellement pas connecté, certaines de vos informations(tel que votre Adresse IP) seront enregistrées pour éviter du spam.
Votre message ne doit pas contenir certains mots ou une adresse internet, sinon, il ne sera pas envoyé.

Les commentaires

Envoyé par romain le 19/12/2010 à 23:08:03
Bonsoir, à quand un système de mot de passe oublié?

Merci d'avance.
Cordialement.
Envoyé par pollo le 21/12/2010 à 23:12:43
@ merci
Envoyé par kako le 07/01/2011 à 23:23:31
bonjour il ya un petit souci avec le script

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/central/www/testy/new_pm.php on line 44

Envoyé par GRIGNY le 10/01/2011 à 12:39:34
lol
Envoyé par simoow le 11/01/2011 à 07:50:22
merci bcp
Envoyé par luc904 le 15/01/2011 à 17:27:13
Merci Beaucoup, il fonctionnent parfaitement !

Y'aurai t'il un mayen de l?améliorer encore pour faire une administration des membre ? pour les suprimer ou les modifié depuis le site sans allez dans le phpmyadmin ?

Si oui vous pouvez m'aidé a faire sa ?
Envoyé par cyril21430 le 22/01/2011 à 11:05:49
Problème

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/153/sda/1/3/bieberportail/Messagerie_Interne/profile.php:1) in /mnt/153/sda/1/3/bieberportail/Messagerie_Interne/config.php on line 3
Envoyé par devilpens le 23/01/2011 à 22:55:34
Pour ceux qui n'arrive toujours pas à installer ce script .. Mettez vous au bille !
Envoyé par EDDY le 31/01/2011 à 12:49:50
j'ai un problème :s
quand je veux lire un message que j'ai reçu il m'affiche cela

"Vous n'avez pas le droit d'accéder à cette page"
pourtant je suis bien loggué Oo"

et aussi, il ne m'affiche pas les nouveaux messages que j'ai réçu quelqu'un pourrait m'aider s'il vous plait
Envoyé par bobby le 21/02/2011 à 19:41:06
je trouve se script magnifique. Il fonctionne très bien j'aurais bien voulu qu'on puisse joindre des fichiers.
Envoyé par fenix80 le 10/04/2011 à 10:13:07
franchement je ne connais rien du tout sa fait deux mois que je galére et il marche j'ai reussit alors franchement nul comme je suis car quand je lit j'ai l'impression de lire du chinois franchement chapeau mais j'aurais voulu l'intégré dans monsite coment je doit faire car mon site et en html
Envoyé par imad le 11/04/2011 à 15:47:27
A fenix80: Il suffit d'enregistrer/renommer tes pages en .php au lieu de .html, sa devrait fonctionner si tu l'inclus dans tes pages.

Moyen de possible de l'améliorer:

- Possibilité de supprimer les messages.
- Ajouter un espace Admin' pour supprimer les membres depuis le site sans passer par PHPMyAdmin.
- Session par cookie pour les connections automatique.
- Créer un support, pour les mots de passe oublié ETC...
- Après vous pouvez toujours ajouter une fonctions de news, forum, commentaires. (autant qu'on vous fasse tout le site).
Envoyé par fenix80 le 14/04/2011 à 03:42:11
je te remercie mais en effet j'ai fait une page php avec mon logiciel web creator car je n'y connais rien en php mais voila mon souci était qu'il me mettait une page warning etc en fin du compte c'est ma box qui bloquer les communication smtp pour le serveur car bien sur j?héberge mon site inutile de faire la critique de la connerie d?héberger son site car ma connexion est de 100 Mbt symétrique donc suffisante je precise car a chaque fois que je precise héberger mon site les conseille de me faire héberger fuse mais perso je trouve mieux plus simple d'héberger chez moi et j?apprends plus voila merci comme même en espérant que mon conseille puisse aider car j'ai chercher longtemps alors que sa venez de ma box
Envoyé par just4fun le 08/05/2011 à 19:07:45

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\messagerie_interne\messagerie_interne\new_pm.php on line 44
Envoyé par just4fun le 08/05/2011 à 19:08:12
errreuuuuuuuuuuuuuuuuuuuuuuuuuuur !!!
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\messagerie_interne\messagerie_interne\new_pm.php on line 44
Envoyé par just4fun le 08/05/2011 à 19:08:31
errreuuuuuuuuuuuuuuuuuuuuuuuuuuur !!!
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\messagerie_interne\messagerie_interne\new_pm.php on line 44
Envoyé par just4fun le 08/05/2011 à 19:12:12
errreuuuuuuuuuuuuuuuuuuuuuuuuuuur !!!
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\messagerie_interne\messagerie_interne\new_pm.php on line 44
Envoyé par Alhader le 22/08/2011 à 02:18:43
C'est très bien fait
Envoyé par weshwesh le 18/10/2011 à 02:36:58
Pour supprimer un membre c'est dans la table 'users' SQL tu fait ID Éffacer.

Moi c'est s'que je fait.
Envoyé par weshwesh le 18/10/2011 à 23:00:19
On n'a 2 tables la Users et Pm sur le fichier config.php on rentre qu'une seul table sois la users ou la pm

: On rentre tu les deux ? :

Envoyé par RodneyMcKay le 15/01/2012 à 13:32:48
Sympa ce petit script.
Mais, faudrait peut-être pensé à crypter les mots de passe dans la BDD ?
Envoyé par iuhnabbv le 24/01/2012 à 12:28:29
20
Envoyé par HellsAngels le 29/02/2012 à 08:14:02
Il fonctionne trés bien se script. D'ailleurs je m'en sers ainsi que l'espace membre que j'ai modifier afin d'utiliser des groupes admin moderateur et membre. Je l'integre completement dans mon site et la je modifie mon forum perso pour qu'il fonctionne avec l'espace membre et tout va nickel. Je ne connaissais pas trop les $_SESSION et la c'est le top
Envoyé par mariem le 17/03/2012 à 14:38:52
mais je n arrive pas a voir l image personnel que j ai mis pour un user
Envoyé par GamingVPS le 22/03/2012 à 19:48:15
WAAAAAAAAAAAAAAAAAW...

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/central/www/testy/new_pm.php on line 44
Envoyé par Manones le 19/04/2012 à 14:15:01
Bonjour!

J'ai un petit soucis avec le code de modification de profil! Je l'ai adapté à mon cas et j'ai du faire une erreur en le modifiant, si bien que quand je clique sur "valider" ma page reste sur le formulaire et réinitialise les informations que j'ai modifiées... Bien évidement elles ne s'enregistrent pas non plus dans la base de donnée. Je suis dessus depuis plusieurs jours maintenant et j'ai beau relire, relire et relire mon code je n'arrive pas à trouver mon erreur! Est-ce que quelqu'un pris de pitié pourrait m'aider ? :D

Voici mon code :
edit_profile.php


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<link rel="stylesheet" href="style_home.css" />

<title>Edit profile</title>
</head>
<body>

<?php
// on se connecte à MySQL
$db = mysql_connect('localhost', 'root', '*******');

// on sélectionne la base
mysql_select_db('majorproject',$db);


// On prolonge la session
session_start();


//On verifie si lutilisateur est connecte
if(isset($_SESSION['email']))
{


/*HEADER*/
include('header.php');


/*MENU*/
include('menu.php');


?>
<div id="info_profile">
<?php


//On verifie si le formulaire a ete envoye
if(isset($_POST['id'], $_POST['firstname'], $_POST['surname'], $_POST['email'], $_POST['password'], $_POST['pass2'], $_POST['gender'], $_POST['age'], $_POST['current_country'], $_POST['current_city'], $_POST['origin_country'], $_POST['exchange_situation'], $_POST['description']))
{
//On enleve lechappement si get_magic_quotes_gpc est active
if(get_magic_quotes_gpc())
{
$_POST['firstname'] = stripslashes($_POST['firstname']);
$_POST['surname'] = stripslashes($_POST['surname']);
$_POST['email'] = stripslashes($_POST['email']);
$_POST['password'] = stripslashes($_POST['password']);
$_POST['pass2'] = stripslashes($_POST['pass2']);
$_POST['gender'] = stripslashes($_POST['gender']);
$_POST['age'] = stripslashes($_POST['age']);
$_POST['current_country'] = stripslashes($_POST['current_country']);
$_POST['current_city'] = stripslashes($_POST['current_city']);
$_POST['origin_country'] = stripslashes($_POST['origin_country']);
$_POST['exchange_situation'] = stripslashes($_POST['exchange_situation']);
$_POST['description'] = stripslashes($_POST['description']);
}
//On verifie si le mot de passe et celui de la verification sont identiques
if($_POST['password']==$_POST['pass2'])
{

//On verifie si lemail est valide
if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
{
//On echape les variables pour pouvoir les mettre dans une requette SQL
$firstname = mysql_real_escape_string($_POST['firstname']);
$password = mysql_real_escape_string($_POST['surname']);
$email = mysql_real_escape_string($_POST['email']);
$pass2 = mysql_real_escape_string($_POST['pass2']);
$gender = mysql_real_escape_string($_POST['gender']);
$age = mysql_real_escape_string($_POST['age']);
$current_country = mysql_real_escape_string($_POST['current_country']);
$current_city = mysql_real_escape_string($_POST['current_city']);
$origin_country = mysql_real_escape_string($_POST['origin_country']);
$exchange_situation = mysql_real_escape_string($_POST['exchange_situation']);
$description = mysql_real_escape_string($_POST['description']);

//On verifie sil ny a pas deja un utilisateur inscrit avec le pseudo choisis
$dn = mysql_fetch_array(mysql_query('select count(*) as nb from users where email="'.$email.'"'));
//On verifie si le pseudo a ete modifie pour un autre et que celui-ci n'est pas deja utilise
if($dn['nb']==0 or $_POST['email']==$_SESSION['email'])
{
//On modifie les informations de lutilisateur avec les nouvelles
if(mysql_query('update users set firstname="'.$firstname.'", surname="'.$surname.'", email="'.$email.'", password="'.$password.'", gender="'.$gender.'", age="'.$age.'", current_country="'.$current_country.'", current_city="'.$current_city.'", origin_country="'.$origin_country.'", exchange_situation="'.$exchange_situation.'", description="'.$description.'" where id="'.mysql_real_escape_string($_SESSION['userid']).'"'))
{
//Si ca a fonctionne, on naffiche pas le formulaire
$form = false;
//On supprime les sessions email et userid au cas ou il aurait modifie son email

// On le vide intégralement
$_SESSION['email']= array();
$_SESSION['userid']= array();
// Destruction de la session
session_destroy();
// Destruction du tableau de session
unset($_SESSION['email']);
unset ($_SESSION['userid']);

?>
Your profile has been actualized. You need to reconnect yourself.<br />
<a href="connect.html">Connect</a>
<?php
}
else
{
//Sinon on dit quil y a eu une erreur
$form = true;
$message = 'An error occurred when changes.';
}
}
else
{
//Sinon, on dit que le pseudo voulu est deja pris
$form = true;
$message = 'An account already exist for this email.';
}
}
else
{
//Sinon, on dit que lemail nest pas valide
$form = true;
$message = 'Your email is not valid.';
}
}
else
{
//Sinon, on dit que les mots de passes ne sont pas identiques
$form = true;
$message = 'Passwords are not the same.';
}
}
else
{
$form = true;
}
if($form)
{
//On affiche un message sil y a lieu
if(isset($message))
{
echo '<strong>'.$message.'</strong>';
}
//Si le formulaire a deja ete envoye on recupere les donnes que lutilisateur avait deja insere
if(isset($_POST['firstname'],$_POST['surname'],$_POST['email'],$_POST['password'],$_POST['email'],$_POST['gender'],$_POST['current_country'],$_POST['current_city'],$_POST['exchange_situation']))
{
$email = htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');
if($_POST['password']==$_POST['pass2'])
{
$password = htmlentities($_POST['password'], ENT_QUOTES, 'UTF-8');
}
else
{
$password = '';
}
$email = htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');
}
else
{
//Sinon, on affiche les donnes a partir de la base de donnee
$e=$_SESSION['email'];
$rrr=mysql_query('SELECT firstname,surname,email,password,gender,age,current_country,current_city,origin_country,exchange_situation,description FROM users where email="'.$e.'"');
$dnn = mysql_fetch_array($rrr);
$firstname = htmlentities($dnn['firstname'], ENT_QUOTES, 'UTF-8');
$surname = htmlentities($dnn['surname'], ENT_QUOTES, 'UTF-8');
$email = htmlentities($dnn['email'], ENT_QUOTES, 'UTF-8');
$password = htmlentities($dnn['password'], ENT_QUOTES, 'UTF-8');
$gender = htmlentities($dnn['gender'], ENT_QUOTES, 'UTF-8');
$age = htmlentities($dnn['age'], ENT_QUOTES, 'UTF-8');
$current_country = htmlentities($dnn['current_country'], ENT_QUOTES, 'UTF-8');
$current_city = htmlentities($dnn['current_city'], ENT_QUOTES, 'UTF-8');
$origin_country = htmlentities($dnn['origin_country'], ENT_QUOTES, 'UTF-8');
$exchange_situation = htmlentities($dnn['exchange_situation'], ENT_QUOTES, 'UTF-8');
$description = htmlentities($dnn['description'], ENT_QUOTES, 'UTF-8');
}

//On affiche le formulaire
?>
<div class="content">
<form action="edit_profile.php" method="post">
You can re-edit your informations:<br />
<div class="center">
<table>
<tr>
<td><label for="firstname">Firstname</label></td>
<td><input type="text" name="firstname" id="firstname" value="<?php echo $firstname; ?>" /></td>
</tr>
<tr>
<td><label for="surname">Surname</label></td>
<td><input type="text" name="text" id="surname" value="<?php echo $surname; ?>" /></td>
</tr>
<tr>
<td><label for="email">Email</label></td>
<td><input type="text" name="email" id="email" value="<?php echo $email; ?>" /></td>
</tr>
<tr>
<td><label for="password">Password</label></td>
<td><input type="password" name="password" id="password" value="<?php echo $password; ?>" /></td>
</tr>
<tr>
<td><label for="pass2">Re-enter password</label></td>
<td><input type="password" name="pass2" id="pass2" value="<?php echo $password; ?>" /></td>
</tr>
<tr>
<td><label for="gender">Gender</label></td>
<td><input type="radio" name="gender" id="gender" value="<?php echo $gender; ?>">Female</td>
<tr>
<td><input type="radio" name="gender" id="gender" value="<?php echo $gender; ?>">Male</td>
</tr>
</tr>
<tr>
<td><label for="gender">Age</label></td>
<td><input type="text" name="age" id="age" value="<?php echo $age; ?>" /></td>
</tr>
<tr>
<td><label for="current_country">Current country</label></td>
<td><input type="text" name="current_country" id="current_country" value="<?php echo $current_country; ?>" /></td>
</tr>
<tr>
<td><label for="current_city">Current city</label></td>
<td><input type="text" name="current_city" id="current_city" value="<?php echo $current_city; ?>" /></td>
</tr>
<tr>
<td><label for="origin_country">Country of origin</label></td>
<td><input type="text" name="origin_country" id="origin_country" value="<?php echo $origin_country; ?>" /></td>
</tr>
<tr>
<td><label for="exchange_situation">Exchange situation</label> </td>
<td><input type="radio" name="exchange_situation" id="exchange_situation" value="<?php echo $exchange_situation; ?>" >In exchange</td>
<tr>
<td><input type="radio" name="exchange_situation" id="exchange_situation" value="<?php echo $exchange_situation; ?>" >Was in exchange</td>
</tr>
<tr>
<td><input type="radio" name="exchange_situation" id="exchange_situation" value="<?php echo $exchange_situation; ?>" >Want to be exchange</td>
</tr>
</tr>
<tr>
<td><label for="description">Description</label></td>
<td>
<textarea name="message" rows="5" cols="17"><?php echo $description; ?></textarea></td>
</tr>
<tr>
<td colspan="2" align="right"><input type="image" id="bouton-submit" src="images/ok.png" onClick="envoie(this.form)"></td>
<tr>
</table>
</div>
</form>
</div>
<?php
}

}
else
{
?>
You need to log in to access this page.<br />
<a href="connect.html">Connect</a>
<?php
}
?>

</div>

</body>
</html>
Envoyé par bashwira le 15/05/2012 à 14:25:20
Merci pour le tuto, mais quand je l'installe dans le fichier ecrire le message il m'affiche ça quelqu'un peut m'aider à corriger

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\messagerie_interne\messagerie_interne\new_pm.php on line 44


Il y a actuellent 27 personne(s) connecté(es)
Page générée en 0.003193 secondes
Retour en haut
Règlements - Nous contacter - Aider le site - RSS News
Copyright © Support du web - Toute copie partielle ou complète de nos créations est interdite sans l'accord de ses auteurs.
Toutes les marques citées appartiennent à leurs compagnies respectives.