Page 1 sur 2

Etablir une connexion avec un serveur

Posté : 06 juin 2011, 15:22
par andson57
Bonjour à tous,
Petit présentation. Retraité,marie, la soixantaine j'habite l'est de la france. Mes hobbys sont la lecture, l'informatique (linux) ,lesvoitures anciennes et les maquettes (mais cela je commence à avoir un peu la tremblotte).

Voila pourquoi je vous contacte.

J'ai fait un petit site internet (HTML) pour notre club (2cv) et j'aimerai un adjoindre une petit messagerie afin de pouvoir laisser un message à l'un ou l'autre des membres. Pour ce faire j'ai récupérer un petit script sur internet (PHPMYPAGER), réussi à créer la base donnée sur le serveur de mon FIA via phpmyadmin ,reste maintenant le gros problème de la connexion, j'ai essayé avec des bouts de codes que j'adapte à mon cas le mieux que j'arrive à avoir c'est un bel écran blanc.
Je ne voudrais pas abuser et je comprendrai très bien qu'on m'envoie balader, mais si quelqu'un pouvait me faire ce cript et m'expliquer comment l'intégrer dans mes pages se serait vraiment sympa, sinon il faudra que j'oublie ça.J'aimerai pouvoir accéder à cette base un cliquant simplement sur une option du menu général qui n'attend que ce script.
Vous l'aurez bien sur compris, je suis archi-nul (n'ayons pas peur des mots) en php.

En vous remerciant d'avance.
Andre

Re: Etablir une connexion avec un serveur

Posté : 07 juin 2011, 11:44
par Mazarini
Bonjour,

Je ne connais pas ce script, mais un peu le PHP.

Si il existe un script d'installation (install.php ?) il suffit de le lancer et de répondre aux questions.

Dans le cas contraire, il doit y avoir un fichier de configuration parmi les fichiers (config.php ?) Dans ce fichier, il doit y avoir les éléments permettant de définir le nom de la base de données, le serveur, le user mysql et le mot de passe. Si tu ne trouve, essayes de trouver localhost dans les fichiers (c'est en général le serveur mis par défaut.

Re: Etablir une connexion avec un serveur

Posté : 07 juin 2011, 12:09
par andson
Bonjour,

Merci pour la réponse.
En fait, j'ai un peu avancé depuis hier. J'ai trouvé un script de connexion, en réalité un script qui propose ce que je cherche et comporte la partie céation de la table/connexion, je l'ai modifié selon mes besoins, mais bon, pour l'instant j'en suis toujours à ma page blanche mais avec un message d'erreur en plus: "Vous n'ếtes pas connecté ou un problème est survenu durant votre tentative. Veuillez zssayé ultérieurement" comme il n'y pas renvoi sur une erreur dans le script je me demande si cela ne vient pas du serveur de mon Fia.
J'ai laissé un message sur leur forum et attendre un peu.

Bonne journée et encore merci

Re: Etablir une connexion avec un serveur

Posté : 07 juin 2011, 12:58
par Ez3kiel
Peut-être qu'un petit peu de code pourrait nous éclaircir ... :P

Tu as un fichier de connexion ? Tel que
<?php
//Nom de l'utilisateur
if(!defined("NOM")) {define("NOM","NomUtilisateur");}
//Mot de passe de l'utilisateur
if(!defined("MDP")) {define("MDP","Mot de passe");}
//Adresse/nom du serveur
if(!defined("SERVEUR")) {define("SERVEUR","adresse du serveur");}
//Nom de la base
if(!defined("BASE")) {define("BASE","nom de la baser");}
?>

Re: Etablir une connexion avec un serveur

Posté : 07 juin 2011, 15:59
par andson
C'est vrai se serait plus clair.
Voila script de connexion tel qu'il se présente :

Code : Tout sélectionner

<?php // on crée la fonction connexion() qui réalise la connexion à la BDD function connexion() { // on se connecte à MySQL mysql_connect('bases.sql','monidentifiant','monmotdepass' ); // on sélectionne la base de données mysql_select_db("mp"); } // fonction redirection qui redirige vers la page donnée en paramètre, faite en JavaScript function redirection($url){ echo "<script type=\"text/javascript\">\n" . "<!--\n" . "\n" . "function redirect() {\n" . "window.location='" . html_entity_decode($url) . "'\n" . "}\n" . "setTimeout('redirect()','2000');\n" . "\n" . "// -->\n" . "</script>\n"; } ?>
Une petite précison dans le message d'erreur que je cite plus haut il y a un lien "Se connecter" si je l'active j'arrive sur une page de mon Fia que le dit que la page demandée n'exista plus ou mal demandée. Or je suis certain de mon identifiant et de mon mot de passe.

Re: Etablir une connexion avec un serveur

Posté : 07 juin 2011, 16:12
par andson
C'est vrai se serait plus clair.
Voila script de connexion tel qu'il se présente :

Code : Tout sélectionner

<?php // on crée la fonction connexion() qui réalise la connexion à la BDD function connexion() { // on se connecte à MySQL mysql_connect('bases.sql','monidentifiant','monmotdepass' ); // on sélectionne la base de données mysql_select_db("mp"); } // fonction redirection qui redirige vers la page donnée en paramètre, faite en JavaScript function redirection($url){ echo "<script type=\"text/javascript\">\n" . "<!--\n" . "\n" . "function redirect() {\n" . "window.location='" . html_entity_decode($url) . "'\n" . "}\n" . "setTimeout('redirect()','2000');\n" . "\n" . "// -->\n" . "</script>\n"; } ?>
Une petite précison dans le message d'erreur que je cite plus haut il y a un lien "Se connecter" si je l'active j'arrive sur une page de mon Fia que le dit que la page demandée n'exista plus ou mal demandée. Or je suis certain de mon identifiant et de mon mot de passe.
A tout hasard

Version du serveur
* Apache/2.2.3 (Debian) PHP/5.2.0-8+etch13
* Version du client MySQL: 5.0.32
* Extension PHP: mysqli

Re: Etablir une connexion avec un serveur

Posté : 07 juin 2011, 19:12
par baneagle
Bonjour, bonjour!
Je viens filer la patte.

Je n'ai pas vraiment compris le problème en fait. Vous avez réussi à trouver vos identifiants et à les renseigner dans le code cité plus haut?
Si oui et que vous êtes certains de ces informations, il faudrait nous copier/coller les messages d'erreur qui pose problème pour pouvoir vous aider.

Il faut bien retenir cela! Le meilleur moyen d'expliquer ce qui ne marche pas sur un forum est de nous faire des messages d'erreurs d’emblée. :D

Re: Etablir une connexion avec un serveur

Posté : 07 juin 2011, 19:57
par andson
Bonsoir,

Désolé je n'arrive pas à insérer une copie d'écran. En fait le message d'erreur dit tout simplement : "Vous n'êtes pas connecté ou une erreur est survenue lors de votre demande.Se connecter Si je clique ce texte je suis renvoyé sur le site de sfr qui me signale que la que la page demandé n'existe pas ou est mal orthographiée". Ce message m'est renvoyé par mon script PHP.
<?php
// on commence par ouvrir la session
session_start();
// on inclut le fichier includes/fonction.php
  require ('includes/fonction.php');
// on utilise la fonction connexion définit dans includes/fonction.php
  connexion();

// Si la session est démarrée et si les variables $_GET['mp'] et $_GET['action'] n'existent pas, alors on affiche la page
      if($_SESSION['logged'] == true AND !isset($_GET['mp']) AND !isset($_GET['action']))
      {
// on compte le nombre de messages non lus et dont le destinataire est le membre actuellement connecté
        $nbr_non_vus = mysql_query("SELECT COUNT(*) AS nbre FROM mp WHERE destinataire='".$_SESSION['pseudo']."' AND vu='0' AND (efface='0' OR efface='2')")or die(mysql_error());
// on en fait un array
        $nbre_non_vus = mysql_fetch_assoc($nbr_non_vus);
// on récupère les données sur les messages adressés au membre connecté.
        $retour = mysql_query("SELECT id, sujet, expediteur, timestamp, vu FROM mp WHERE destinataire='".$_SESSION['pseudo']."' AND (efface='0' OR efface='2') ORDER BY id DESC");
        ?>
          <table class="table">
            <caption class="caption">Boîte de réception</caption>
            <thead>
              <th class="th"><em>Lu</em>/<strong>Non lu (<?php echo $nbre_non_vus['nbre'];?>)</strong></th>
              <th class="th">Sujet</th>
              <th class="th">Auteur</th>
              <th class="th">Date</th>
            </thead>
            <tfoot>
              <th class="th"><em>Lu</em>/<strong>Non lu(<?php echo $nbre_non_vus['nbre'];?>)</strong></th>
              <th class="th">Sujet</th>
              <th class="th">Auteur</th>
              <th class="th">Date</th>
            </tfoot>
            <tbody>
        <?php
// on crée une boucle
        while($donnees = mysql_fetch_assoc($retour))
        {
// on enlève les slashs inutiles qui se seraient ajoutés
          $sujet = stripslashes($donnees['sujet']);
          $expediteur = stripslashes($donnees['expediteur']);
          $date = $donnees['timestamp'];
// si le message n'est pas lu, on le montre et on marque son sujet en gras 
          if($donnees['vu'] == 0)
          {
// on crée une ligne sur le tableau
            echo'<tr><td class="td"><strong>Non lu</strong></td><td class="td"><strong><a href="mp.php?mp='.$donnees['id'].'&action=lire">'.$sujet.'</a></strong></td><td class="td">'.$expediteur.'</td><td class="td">Le' .date('d/m/Y \à H\hi', $date).'</td><td class="td"><a href="mp.php?action=supprimer&suppr=1&id='.$donnees['id'].'">Supprimer ce message</a></td></tr>';
          }
// sinon, on marque que le sujet a été lu, et on met en italique
          else
          {
// on crée une nouvelle ligne sur le tableau
            echo '<tr><td class="td"><em>Lu</em></td><td class="td"><em><a href="mp.php?mp='.$donnees['id'].'&action=lire">'.$sujet.'</a></em></td><td class="td">'.$expediteur.'</td><td class="td">Le' .date('d/m/Y \ê H\hi', $date).'</td><td class="td"><a href="mp.php?action=supprimer&suppr=1&id='.$donnees['id'].'">Supprimer ce message</a></td></tr>';
          }
        }
        ?>
           
            </tbody>
          </table>
          <p><a href="mp.php?action=LireMpRecu">Voir les messages envoyés</a>
            <a href="mp.php?action=ecrire">Ecrire un nouveau message</a></p>
        <?php
// on ferme la condition
      }


// sinon si la variable $_GET['mp'] existe, si l'utilisateur est connecté,
// si la variable $_GET['action'] existe et contient 'lire' alors...
      elseif(isset($_GET['mp']) AND isset($_GET['action']) AND $_GET['action'] == 'lire' AND $_SESSION['logged'] == true)
      {
        $id_mp = $_GET['mp'];
// on récupère les données où l'id est égale à l'id envoyée par l'URL
        $retour = mysql_query("SELECT destinataire, sujet, expediteur, timestamp, message FROM mp WHERE id='".$id_mp."'")or die(mysql_error());
        $donnees = mysql_fetch_assoc($retour);
// vérification pour qu'une autre personne que le destinataire ne puisse voir le message
        if($donnees['destinataire'] == $_SESSION['pseudo'])
        {
          ?>
            <table class="table">
              <thead>
              </thead>
              <tfoot>
              </tfoot>
              <tbody>
          <?php
// on enlève les slashs inutiles
          $sujet = stripslashes($donnees['sujet']);
          $expediteur = stripslashes($donnees['expediteur']); 
// on met la date au format Jour/mois/année à heure h minutes
          $date = date('d/m/Y \à H\hi', $donnees['timestamp']);
          $mp = stripslashes($donnees['message']);   
// on affiche le MP       
          echo '<tr><td class="td"><h1>'.$sujet.'</h1></td></tr><tr><td class="td">Le '.$date.'</td></tr><tr><td class="td">De : '.$expediteur.'</td></tr><tr><td class="td">Message :<br /><br/>'.$mp.'</td></tr><tr><td class="td"><a href="mp.php?action=ecrire&reponse='.$id_mp.'">Répondre</a>   <a href="mp.php?action=ecrire">Nouveau</a>    <a href="mp.php">Revenir au menu de la messagerie</a></td></tr>';
// on met que le message a été lu.
          mysql_query("UPDATE mp SET vu='1' WHERE id='".$id_mp."'")or die(mysql_error());
          ?>
              </tbody>
            </table>
          <?php
        }
        else
        {
// on affiche un message d'erreur si on essaye de lire un message qui n'est pas adressé à soi-même.
          echo 'Ceci est un message privé qui ne s\'adresse pas à vous mais à '.$donnees['destinataire'].'';
// on ferme la condition "secondaire"
        }
// on ferme la condition "primaire"
      }

// Sinon si l'URL indique qu'on veut envoyer un nouveau message ('ecrire'), on affiche un formulaire d'envoi.
      elseif(isset($_GET['action']) AND $_GET['action'] == 'ecrire' AND $_SESSION['logged'] == true)
      {
// si la variable $_GET['reponse'] n'existe pas, alors c'est un nouveau message
        if(!isset($_GET['reponse']))
        {
          ?>
            <form action="mp.php?action=traitement" method="post">
              <label>Sujet :<input type="text" name="sujet" /></label>
              <label>Destinataire :<input type="text" name="destinataire" /></label>
              <label>Message :<textarea name="message" rows="10" cols="40"></textarea></label>
              <input type="submit" value="Envoyer le message" />
            </form>
          <?php
        }
// sinon, c'est une réponse
        else
        {
// on récupère les données du mp dont l'id est égale à celle du message auquel on veut répondre
          $retour_reponse = mysql_query("SELECT sujet, expediteur FROM mp WHERE id='".$_GET['reponse']."'");
          $donnees_reponse = mysql_fetch_assoc($retour_reponse);
          ?>
            <form action="mp.php?action=traitement" method="post">
<!-- on met RE : devant le sujet auquel on répond -->
              <label>Sujet :<input type="text" name="sujet" value="RE : <?php echo $donnees_reponse['sujet'];?>"/></label>
              <label>Destinataire :<input type="text" name="destinataire" value="<?php echo $donnees_reponse['expediteur']; ?>"/></label>
              <label>Message :<textarea name="message" rows="10" cols="40"></textarea></label>
              <input type="submit" value="Envoyer le message" />
            </form>
          <?php
        }
      }

// sinon si la variable $_GET['action'] est égale à 'traitement', alors on traite les données envoyées par le fomulaire
      elseif(isset($_GET['action']) AND $_GET['action'] == 'traitement' AND $_SESSION['logged'] == true)
      {
// si les champs "message", "sujet" et "destinataire" ne sont pas vides       
        if(!empty($_POST['sujet']) AND !empty($_POST['destinataire']) AND !empty($_POST['message']))
        {
// on regarde s'il existe une entrée avec le pseudo du destinataire
          $nbr_entree = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM membres WHERE pseudo='".$_POST['destinataire']."'")or die(mysql_error());
          $nbr_entrees = mysql_fetch_assoc($nbr_entree);
// s'il existe
          if($nbr_entrees['nbre_entrees'] == 1)
          {
// on sécurise les valeurs envoyées
            $sujet = addslashes(htmlentities($_POST['sujet']));
            $destinataire = addslashes(htmlentities($_POST['destinataire']));
            $message = addslashes(nl2br(htmlentities($_POST['message'])));
            $expediteur = $_SESSION['pseudo'];
            $timestamp = time();
// on récupère le dernier message envoyé au destinataire
            $retour = mysql_query("SELECT destinataire, sujet, message FROM mp WHERE expediteur='$expediteur' ORDER BY id DESC LIMIT 0,1");
            $donnees = mysql_fetch_assoc($retour);
// si c'est le même que celui qu'on veut envoyer
            if($donnees['destinataire'] == $destinataire AND $donnees['sujet'] == $sujet AND $donnees['message'] == $message)
            {
// on ne l'enregistre pas, et on affiche un message d'erreur
              echo 'Vous ne pouvez pas poster le même message 2 fois d\'affilée';
            }
// sinon ce n'est pas un double post
            else
            {
// alors on enregistre dans la base de données
              mysql_query("INSERT INTO mp(sujet, expediteur, destinataire, message, timestamp, vu, efface) VALUES('" . $sujet . "', '" . $expediteur . "', '" . $destinataire . "', '" . $message . "', '" . $timestamp . "', '0', '0')")or die(mysql_error());
// on met un message
              echo 'Votre message a bien été envoyé à '.$destinataire.'. Vous allez être redirigé vers votre boîte de réception dans une seconde.';
// et on redirige vers la boîte de réception
              redirection('mp.php');
            }
          }
// sinon le membre n'est pas enregistré dans la table
          else
          {
// alors on affiche un message d'erreur
            echo 'Le membre à qui vous souhaitez envoyer ce message n\'existe pas/plus. Vous allez être redirigé vers votre boîte de réception dans 2 secondes';
// et on redirige vers la boîte de réception
            redirection('mp.php');

          }
        }
// sinon tous les champs ne sont pas remplis
        else
        {
// alors on affiche un message d'erreur et un lien
          echo 'Vous devez remplir tous les champs. <a href="mp.php?action=ecrire">Recommencer</a>.';
        }
      }

// sinon si la variable $_GET['action'] est égale à 'LireMpRecu', on affiche la boîte d'envoi
      elseif($_GET['action'] == 'LireMpRecu' AND $_SESSION['logged'] == true AND !isset($_GET['mp']))
      {
// on récupère les messages qu'on a envoyés et que l'on n'a pas supprimés
        $retour = mysql_query("SELECT id, destinataire, sujet, timestamp FROM mp WHERE expediteur='".$_SESSION['pseudo']."' AND (efface='0' OR efface='1') ORDER BY id DESC")or die(mysql_error());
        ?>
          <table class="table">
            <caption class="caption">Messages envoyés</caption>
            <thead>
              <th class="th">Sujet</th>
              <th class="th">Destinataire</th>
              <th class="th">Date</th>
            </thead>
            <tfoot>
              <th class="th">Sujet</th>
              <th class="th">Destinataire</th>
              <th class="th">Date</th>
            </tfoot>
            <tbody>
        <?php
// on crée une boucle avec les entrées de la table
        while($donnees = mysql_fetch_assoc($retour))
        {
// on enlève les éventuels slashs superflus
          $sujet = stripslashes($donnees['sujet']);
          $destinataire = stripslashes($donnees['destinataire']);   
          $date = $donnees['timestamp'];
// on ajoute une ligne au tableau pour chaque message
          echo'<tr><td class="td"><a href="mp.php?mp='.$donnees['id'].'&action=lire">'.$sujet.'</a></td><td class="td">'.$destinataire.'</td><td class="td">Le' .date('d/m/Y \à H\hi', $date).'</td><td class="td"><a href="mp.php?action=supprimer&suppr=2&id='.$donnees['id'].'">Supprimer ce message</a></td></tr>';
// on ferme la boucle
        }
        ?>
           
            </tbody>
          </table>
          <p><a href="mp.php">Boîte de réception</a>
          <a href="mp.php?action=ecrire">Écrire un nouveau message</a></p>
        <?php
// on ferme la condition
      }

// si la variable $_GET['id'] qui contient l'id du message existe,
// si la variable $_GET['suppr'] qui indique qui a supprimé le message (destinataire ou expéditeur) existe
// et si la variable $_GET['action'] est égale à 'supprimer' qui indique la suppression d'un message, alors on le supprime.
      elseif(isset($_GET['action']) AND isset($_GET['suppr']) AND isset($_GET['id']) AND $_GET['action'] == 'supprimer')
      {
        $id = $_GET['id'];
// si c'est l'expéditeur qui supprime le message
        if($_GET['suppr'] == 2)
        {
// alors on récupère les données où l'id du message à supprimer est égale à l'id d'un message         
            $retour = mysql_query("SELECT expediteur, efface FROM mp WHERE id='".$id."'")or die(mysql_error());
// on les met dans un array
            $donnees = mysql_fetch_assoc($retour);
// si l'expéditeur est bien le membre qui veut supprimer le message
            if($_SESSION['pseudo'] == $donnees['expediteur'])
            {
// et si le message a déjà été supprimé par le destinataire
              if($donnees['efface'] == 1)
              {
// on supprime l'entrée correspondante de la table
                mysql_query("DELETE FROM mp WHERE id='".$id."'")or die(mysql_error());
// on affiche un message
                echo 'Le message a été supprimé avec succès. Vous allez être redirigé vers votre boîte de réception dans 2 secondes.';
// et on redirige
                redirection('mp.php');

              }
// sinon si le message n'a pas été supprimé par le destinataire
              elseif($donnees['efface'] == 0)
              {
// alors on modifie le champ efface par 2 pour que le destinataire puisse encore voir le message
                mysql_query("UPDATE mp SET efface='2' WHERE id='".$id."'")or die(mysql_error());
// on affiche un message
                echo 'Le message a été supprimé avec succès. Vous allez être redirigé vers votre boîte de réception dans 2 secondes.';
// et on redirige
                redirection('mp.php');

              }
// sinon
              else
              {
// on affiche un message d'erreur
              echo 'Une erreur est survenue lors de votre demande. Veuillez recommencer ultèrieurement.';
              } 
             }
// sinon, le membre qui veut supprimer le message n'est pas l'expéditeur
             else
             {
// donc on affiche un message d'erreur
              echo 'Vous ne pouvez pas supprimer un message que vous n \'avez pas envoyé vous-même.';
             }       
        }
// sinon si c'est le destinataire qui veut supprimer un message
        elseif($_GET['suppr'] == 1)
        {
// on récupère les données sur le message que l'on veut supprimer
            $retour = mysql_query("SELECT destinataire, efface FROM mp WHERE id='".$id."'")or die(mysql_error());
// on les met dans un array
            $donnees = mysql_fetch_assoc($retour);
// si le destinataire du message est bien le membre qui veut supprimer le message
            if($_SESSION['pseudo'] == $donnees['destinataire'])
            {
// et si le message a été supprimé par l'expéditeur
              if($donnees['efface'] == 2)
              {
// alors on supprime l'entrée correspondante de la table
                mysql_query("DELETE FROM mp WHERE id='".$id."'")or die(mysql_error());
// on affiche un message
                echo 'Le message a été supprimé avec succès. Vous allez être redirigé vers votre boîte de réception dans 2 secondes.';
// et on redirige
                redirection('mp.php');

              }
// sinon si le message n'a pas été supprimé par l'expéditeur
              elseif($donnees['efface'] == 0)
              {
// alors on modifie la valeur de efface par 1 pour que l'expéditeur puisse encore voir le message
                mysql_query("UPDATE mp SET efface='1' WHERE id='".$id."'")or die(mysql_error());
// on affiche un message
                echo 'Le message a été supprimé avec succès. Vous allez être redirigé vers votre boîte de réception dans 2 secondes.';
//et on redirige
                redirection('mp.php');

              }
// sinon
              else
              {
// on affiche un message d'erreur
              echo 'Une erreur est survenue lors de votre demande. Veuillez recommencer ultérieurement.';
              } 
             }
// sinon le membre qui veut supprimer le message n'est pas le destinataire de celui-ci
             else
             {
// donc on affiche un message d'erreur
              echo 'Vous ne pouvez pas supprimer un message qui ne vous a pas été envoyé.';
             }   
        }

// sinon l'action demandée n'existe pas($_GET['action'])
        else
        {
// alors on affiche un message d'erreur
          echo 'Une erreur est survenue lors de votre demande. Veuillez recommencer ultérieurement.';
        }
      }
// sinon on met un message d'erreur qui envoie un lien pour se connecter.
      else
      {
      echo 'Vous n\'êtes pas connecté ou une erreur est survenue lors de votre demande ; veuillez recommencer ultérieurement.<a href="connexion.php">Se connecter</a>';
      }
mysql_close();
    ?>
Ci-dessus le script qui doit me permettre de complèter ma base de données et gère les erreurs.

Merci

Re: Etablir une connexion avec un serveur

Posté : 07 juin 2011, 20:35
par disparados
Bonsoir,

Désolé je n'arrive pas à insérer une copie d'écran. En fait le message d'erreur dit tout simplement : "Vous n'êtes pas connecté ou une erreur est survenue lors de votre demande.Se connecter Si je clique ce texte je suis renvoyé sur le site de sfr qui me signale que la que la page demandé n'existe pas ou est mal orthographiée". Ce message m'est renvoyé par mon script PHP.
<?php
// on commence par ouvrir la session
session_start();
// on inclut le fichier includes/fonction.php
  require ('includes/fonction.php');
// on utilise la fonction connexion définit dans includes/fonction.php
  connexion();

// Si la session est démarrée et si les variables $_GET['mp'] et $_GET['action'] n'existent pas, alors on affiche la page
      if($_SESSION['logged'] == true AND !isset($_GET['mp']) AND !isset($_GET['action']))
      {
// on compte le nombre de messages non lus et dont le destinataire est le membre actuellement connecté
        $nbr_non_vus = mysql_query("SELECT COUNT(*) AS nbre FROM mp WHERE destinataire='".$_SESSION['pseudo']."' AND vu='0' AND (efface='0' OR efface='2')")or die(mysql_error());
// on en fait un array
        $nbre_non_vus = mysql_fetch_assoc($nbr_non_vus);
// on récupère les données sur les messages adressés au membre connecté.
        $retour = mysql_query("SELECT id, sujet, expediteur, timestamp, vu FROM mp WHERE destinataire='".$_SESSION['pseudo']."' AND (efface='0' OR efface='2') ORDER BY id DESC");
        ?>
          <table class="table">
            <caption class="caption">Boîte de réception</caption>
            <thead>
              <th class="th"><em>Lu</em>/<strong>Non lu (<?php echo $nbre_non_vus['nbre'];?>)</strong></th>
              <th class="th">Sujet</th>
              <th class="th">Auteur</th>
              <th class="th">Date</th>
            </thead>
            <tfoot>
              <th class="th"><em>Lu</em>/<strong>Non lu(<?php echo $nbre_non_vus['nbre'];?>)</strong></th>
              <th class="th">Sujet</th>
              <th class="th">Auteur</th>
              <th class="th">Date</th>
            </tfoot>
            <tbody>
        <?php
// on crée une boucle
        while($donnees = mysql_fetch_assoc($retour))
        {
// on enlève les slashs inutiles qui se seraient ajoutés
          $sujet = stripslashes($donnees['sujet']);
          $expediteur = stripslashes($donnees['expediteur']);
          $date = $donnees['timestamp'];
// si le message n'est pas lu, on le montre et on marque son sujet en gras 
          if($donnees['vu'] == 0)
          {
// on crée une ligne sur le tableau
            echo'<tr><td class="td"><strong>Non lu</strong></td><td class="td"><strong><a href="mp.php?mp='.$donnees['id'].'&action=lire">'.$sujet.'</a></strong></td><td class="td">'.$expediteur.'</td><td class="td">Le' .date('d/m/Y \à H\hi', $date).'</td><td class="td"><a href="mp.php?action=supprimer&suppr=1&id='.$donnees['id'].'">Supprimer ce message</a></td></tr>';
          }
// sinon, on marque que le sujet a été lu, et on met en italique
          else
          {
// on crée une nouvelle ligne sur le tableau
            echo '<tr><td class="td"><em>Lu</em></td><td class="td"><em><a href="mp.php?mp='.$donnees['id'].'&action=lire">'.$sujet.'</a></em></td><td class="td">'.$expediteur.'</td><td class="td">Le' .date('d/m/Y \ê H\hi', $date).'</td><td class="td"><a href="mp.php?action=supprimer&suppr=1&id='.$donnees['id'].'">Supprimer ce message</a></td></tr>';
          }
        }
        ?>
           
            </tbody>
          </table>
          <p><a href="mp.php?action=LireMpRecu">Voir les messages envoyés</a>
            <a href="mp.php?action=ecrire">Ecrire un nouveau message</a></p>
        <?php
// on ferme la condition
      }


// sinon si la variable $_GET['mp'] existe, si l'utilisateur est connecté,
// si la variable $_GET['action'] existe et contient 'lire' alors...
      elseif(isset($_GET['mp']) AND isset($_GET['action']) AND $_GET['action'] == 'lire' AND $_SESSION['logged'] == true)
      {
        $id_mp = $_GET['mp'];
// on récupère les données où l'id est égale à l'id envoyée par l'URL
        $retour = mysql_query("SELECT destinataire, sujet, expediteur, timestamp, message FROM mp WHERE id='".$id_mp."'")or die(mysql_error());
        $donnees = mysql_fetch_assoc($retour);
// vérification pour qu'une autre personne que le destinataire ne puisse voir le message
        if($donnees['destinataire'] == $_SESSION['pseudo'])
        {
          ?>
            <table class="table">
              <thead>
              </thead>
              <tfoot>
              </tfoot>
              <tbody>
          <?php
// on enlève les slashs inutiles
          $sujet = stripslashes($donnees['sujet']);
          $expediteur = stripslashes($donnees['expediteur']); 
// on met la date au format Jour/mois/année à heure h minutes
          $date = date('d/m/Y \à H\hi', $donnees['timestamp']);
          $mp = stripslashes($donnees['message']);   
// on affiche le MP       
          echo '<tr><td class="td"><h1>'.$sujet.'</h1></td></tr><tr><td class="td">Le '.$date.'</td></tr><tr><td class="td">De : '.$expediteur.'</td></tr><tr><td class="td">Message :<br /><br/>'.$mp.'</td></tr><tr><td class="td"><a href="mp.php?action=ecrire&reponse='.$id_mp.'">Répondre</a>   <a href="mp.php?action=ecrire">Nouveau</a>    <a href="mp.php">Revenir au menu de la messagerie</a></td></tr>';
// on met que le message a été lu.
          mysql_query("UPDATE mp SET vu='1' WHERE id='".$id_mp."'")or die(mysql_error());
          ?>
              </tbody>
            </table>
          <?php
        }
        else
        {
// on affiche un message d'erreur si on essaye de lire un message qui n'est pas adressé à soi-même.
          echo 'Ceci est un message privé qui ne s\'adresse pas à vous mais à '.$donnees['destinataire'].'';
// on ferme la condition "secondaire"
        }
// on ferme la condition "primaire"
      }

// Sinon si l'URL indique qu'on veut envoyer un nouveau message ('ecrire'), on affiche un formulaire d'envoi.
      elseif(isset($_GET['action']) AND $_GET['action'] == 'ecrire' AND $_SESSION['logged'] == true)
      {
// si la variable $_GET['reponse'] n'existe pas, alors c'est un nouveau message
        if(!isset($_GET['reponse']))
        {
          ?>
            <form action="mp.php?action=traitement" method="post">
              <label>Sujet :<input type="text" name="sujet" /></label>
              <label>Destinataire :<input type="text" name="destinataire" /></label>
              <label>Message :<textarea name="message" rows="10" cols="40"></textarea></label>
              <input type="submit" value="Envoyer le message" />
            </form>
          <?php
        }
// sinon, c'est une réponse
        else
        {
// on récupère les données du mp dont l'id est égale à celle du message auquel on veut répondre
          $retour_reponse = mysql_query("SELECT sujet, expediteur FROM mp WHERE id='".$_GET['reponse']."'");
          $donnees_reponse = mysql_fetch_assoc($retour_reponse);
          ?>
            <form action="mp.php?action=traitement" method="post">
<!-- on met RE : devant le sujet auquel on répond -->
              <label>Sujet :<input type="text" name="sujet" value="RE : <?php echo $donnees_reponse['sujet'];?>"/></label>
              <label>Destinataire :<input type="text" name="destinataire" value="<?php echo $donnees_reponse['expediteur']; ?>"/></label>
              <label>Message :<textarea name="message" rows="10" cols="40"></textarea></label>
              <input type="submit" value="Envoyer le message" />
            </form>
          <?php
        }
      }

// sinon si la variable $_GET['action'] est égale à 'traitement', alors on traite les données envoyées par le fomulaire
      elseif(isset($_GET['action']) AND $_GET['action'] == 'traitement' AND $_SESSION['logged'] == true)
      {
// si les champs "message", "sujet" et "destinataire" ne sont pas vides       
        if(!empty($_POST['sujet']) AND !empty($_POST['destinataire']) AND !empty($_POST['message']))
        {
// on regarde s'il existe une entrée avec le pseudo du destinataire
          $nbr_entree = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM membres WHERE pseudo='".$_POST['destinataire']."'")or die(mysql_error());
          $nbr_entrees = mysql_fetch_assoc($nbr_entree);
// s'il existe
          if($nbr_entrees['nbre_entrees'] == 1)
          {
// on sécurise les valeurs envoyées
            $sujet = addslashes(htmlentities($_POST['sujet']));
            $destinataire = addslashes(htmlentities($_POST['destinataire']));
            $message = addslashes(nl2br(htmlentities($_POST['message'])));
            $expediteur = $_SESSION['pseudo'];
            $timestamp = time();
// on récupère le dernier message envoyé au destinataire
            $retour = mysql_query("SELECT destinataire, sujet, message FROM mp WHERE expediteur='$expediteur' ORDER BY id DESC LIMIT 0,1");
            $donnees = mysql_fetch_assoc($retour);
// si c'est le même que celui qu'on veut envoyer
            if($donnees['destinataire'] == $destinataire AND $donnees['sujet'] == $sujet AND $donnees['message'] == $message)
            {
// on ne l'enregistre pas, et on affiche un message d'erreur
              echo 'Vous ne pouvez pas poster le même message 2 fois d\'affilée';
            }
// sinon ce n'est pas un double post
            else
            {
// alors on enregistre dans la base de données
              mysql_query("INSERT INTO mp(sujet, expediteur, destinataire, message, timestamp, vu, efface) VALUES('" . $sujet . "', '" . $expediteur . "', '" . $destinataire . "', '" . $message . "', '" . $timestamp . "', '0', '0')")or die(mysql_error());
// on met un message
              echo 'Votre message a bien été envoyé à '.$destinataire.'. Vous allez être redirigé vers votre boîte de réception dans une seconde.';
// et on redirige vers la boîte de réception
              redirection('mp.php');
            }
          }
// sinon le membre n'est pas enregistré dans la table
          else
          {
// alors on affiche un message d'erreur
            echo 'Le membre à qui vous souhaitez envoyer ce message n\'existe pas/plus. Vous allez être redirigé vers votre boîte de réception dans 2 secondes';
// et on redirige vers la boîte de réception
            redirection('mp.php');

          }
        }
// sinon tous les champs ne sont pas remplis
        else
        {
// alors on affiche un message d'erreur et un lien
          echo 'Vous devez remplir tous les champs. <a href="mp.php?action=ecrire">Recommencer</a>.';
        }
      }

// sinon si la variable $_GET['action'] est égale à 'LireMpRecu', on affiche la boîte d'envoi
      elseif($_GET['action'] == 'LireMpRecu' AND $_SESSION['logged'] == true AND !isset($_GET['mp']))
      {
// on récupère les messages qu'on a envoyés et que l'on n'a pas supprimés
        $retour = mysql_query("SELECT id, destinataire, sujet, timestamp FROM mp WHERE expediteur='".$_SESSION['pseudo']."' AND (efface='0' OR efface='1') ORDER BY id DESC")or die(mysql_error());
        ?>
          <table class="table">
            <caption class="caption">Messages envoyés</caption>
            <thead>
              <th class="th">Sujet</th>
              <th class="th">Destinataire</th>
              <th class="th">Date</th>
            </thead>
            <tfoot>
              <th class="th">Sujet</th>
              <th class="th">Destinataire</th>
              <th class="th">Date</th>
            </tfoot>
            <tbody>
        <?php
// on crée une boucle avec les entrées de la table
        while($donnees = mysql_fetch_assoc($retour))
        {
// on enlève les éventuels slashs superflus
          $sujet = stripslashes($donnees['sujet']);
          $destinataire = stripslashes($donnees['destinataire']);   
          $date = $donnees['timestamp'];
// on ajoute une ligne au tableau pour chaque message
          echo'<tr><td class="td"><a href="mp.php?mp='.$donnees['id'].'&action=lire">'.$sujet.'</a></td><td class="td">'.$destinataire.'</td><td class="td">Le' .date('d/m/Y \à H\hi', $date).'</td><td class="td"><a href="mp.php?action=supprimer&suppr=2&id='.$donnees['id'].'">Supprimer ce message</a></td></tr>';
// on ferme la boucle
        }
        ?>
           
            </tbody>
          </table>
          <p><a href="mp.php">Boîte de réception</a>
          <a href="mp.php?action=ecrire">Écrire un nouveau message</a></p>
        <?php
// on ferme la condition
      }

// si la variable $_GET['id'] qui contient l'id du message existe,
// si la variable $_GET['suppr'] qui indique qui a supprimé le message (destinataire ou expéditeur) existe
// et si la variable $_GET['action'] est égale à 'supprimer' qui indique la suppression d'un message, alors on le supprime.
      elseif(isset($_GET['action']) AND isset($_GET['suppr']) AND isset($_GET['id']) AND $_GET['action'] == 'supprimer')
      {
        $id = $_GET['id'];
// si c'est l'expéditeur qui supprime le message
        if($_GET['suppr'] == 2)
        {
// alors on récupère les données où l'id du message à supprimer est égale à l'id d'un message         
            $retour = mysql_query("SELECT expediteur, efface FROM mp WHERE id='".$id."'")or die(mysql_error());
// on les met dans un array
            $donnees = mysql_fetch_assoc($retour);
// si l'expéditeur est bien le membre qui veut supprimer le message
            if($_SESSION['pseudo'] == $donnees['expediteur'])
            {
// et si le message a déjà été supprimé par le destinataire
              if($donnees['efface'] == 1)
              {
// on supprime l'entrée correspondante de la table
                mysql_query("DELETE FROM mp WHERE id='".$id."'")or die(mysql_error());
// on affiche un message
                echo 'Le message a été supprimé avec succès. Vous allez être redirigé vers votre boîte de réception dans 2 secondes.';
// et on redirige
                redirection('mp.php');

              }
// sinon si le message n'a pas été supprimé par le destinataire
              elseif($donnees['efface'] == 0)
              {
// alors on modifie le champ efface par 2 pour que le destinataire puisse encore voir le message
                mysql_query("UPDATE mp SET efface='2' WHERE id='".$id."'")or die(mysql_error());
// on affiche un message
                echo 'Le message a été supprimé avec succès. Vous allez être redirigé vers votre boîte de réception dans 2 secondes.';
// et on redirige
                redirection('mp.php');

              }
// sinon
              else
              {
// on affiche un message d'erreur
              echo 'Une erreur est survenue lors de votre demande. Veuillez recommencer ultèrieurement.';
              } 
             }
// sinon, le membre qui veut supprimer le message n'est pas l'expéditeur
             else
             {
// donc on affiche un message d'erreur
              echo 'Vous ne pouvez pas supprimer un message que vous n \'avez pas envoyé vous-même.';
             }       
        }
// sinon si c'est le destinataire qui veut supprimer un message
        elseif($_GET['suppr'] == 1)
        {
// on récupère les données sur le message que l'on veut supprimer
            $retour = mysql_query("SELECT destinataire, efface FROM mp WHERE id='".$id."'")or die(mysql_error());
// on les met dans un array
            $donnees = mysql_fetch_assoc($retour);
// si le destinataire du message est bien le membre qui veut supprimer le message
            if($_SESSION['pseudo'] == $donnees['destinataire'])
            {
// et si le message a été supprimé par l'expéditeur
              if($donnees['efface'] == 2)
              {
// alors on supprime l'entrée correspondante de la table
                mysql_query("DELETE FROM mp WHERE id='".$id."'")or die(mysql_error());
// on affiche un message
                echo 'Le message a été supprimé avec succès. Vous allez être redirigé vers votre boîte de réception dans 2 secondes.';
// et on redirige
                redirection('mp.php');

              }
// sinon si le message n'a pas été supprimé par l'expéditeur
              elseif($donnees['efface'] == 0)
              {
// alors on modifie la valeur de efface par 1 pour que l'expéditeur puisse encore voir le message
                mysql_query("UPDATE mp SET efface='1' WHERE id='".$id."'")or die(mysql_error());
// on affiche un message
                echo 'Le message a été supprimé avec succès. Vous allez être redirigé vers votre boîte de réception dans 2 secondes.';
//et on redirige
                redirection('mp.php');

              }
// sinon
              else
              {
// on affiche un message d'erreur
              echo 'Une erreur est survenue lors de votre demande. Veuillez recommencer ultérieurement.';
              } 
             }
// sinon le membre qui veut supprimer le message n'est pas le destinataire de celui-ci
             else
             {
// donc on affiche un message d'erreur
              echo 'Vous ne pouvez pas supprimer un message qui ne vous a pas été envoyé.';
             }   
        }

// sinon l'action demandée n'existe pas($_GET['action'])
        else
        {
// alors on affiche un message d'erreur
          echo 'Une erreur est survenue lors de votre demande. Veuillez recommencer ultérieurement.';
        }
      }
// sinon on met un message d'erreur qui envoie un lien pour se connecter.
      else
      {
      echo 'Vous n\'êtes pas connecté ou une erreur est survenue lors de votre demande ; veuillez recommencer ultérieurement.<a href="connexion.php">Se connecter</a>';
      }
mysql_close();
    ?>
Ci-dessus le script qui doit me permettre de complèter ma base de données et gère les erreurs.

Merci
bonjour,
vérifie bien qu'elle existe une page qui s’appelle connexion.php dans le méme dossier que la page de ce script. ou regarde si tu as pas fait de faute on tappant le nom de cette page .

Re: Etablir une connexion avec un serveur

Posté : 07 juin 2011, 21:52
par andson
J'ai vérifié tout cela tout est bon. J'ai même pour être totalement sur de mon coup mis des erreurs dans le code de la page fonction.php, le résultat ne se fait pas attendre. :D

Re: Etablir une connexion avec un serveur

Posté : 08 juin 2011, 08:18
par andson
Bonjour,

Je reviens sur mon petit problème. D'abord un petit méa-culpa, j'étais en effet certain d'avoir rentré les bonnes informations car je n'avais pas de messages d'erreurs en retour du serveur, il semblerait que je me sois trompé et si je met le nom complet de la base j'ai en retour les messages d'erreur ci dessous. Si à l'aide des deux script que j'ai posté quelqu'un pouvait éclairer ma lanterne ... (auparavant je ne mettais que "nom-prenom")

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'nom-prenom-membr'@'pperso-apache01-pr.mid.pr.pperso.vnx.pfs.ld' (using password: YES) in /var/www/a/an/and/andre.sonn.perso.sfr.fr/public_html/CLUB57/2CV/spip/includes/fonction.php on line 6

Warning: mysql_select_db() [function.mysql-select-db]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /var/www/a/an/and/andre.sonn.perso.sfr.fr/public_html/CLUB57/2CV/spip/includes/fonction.php on line 8

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /var/www/a/an/and/andre.sonn.perso.sfr.fr/public_html/CLUB57/2CV/spip/includes/fonction.php on line 8
Vous n'êtes pas connecté ou une erreur est survenue lors de votre demande ; veuillez recommencer ultérieurement.Se connecter
Warning: mysql_close(): no MySQL-Link resource supplied in /var/www/a/an/and/andre.sonn.perso.sfr.fr/public_html/CLUB57/2CV/spip/includes/mp.php on line 350
D'avance merci et bonne journée

Re: Etablir une connexion avec un serveur

Posté : 08 juin 2011, 11:43
par baneagle
Le problème qui se pose là c'est que vos erreurs viennent du fait que vous ne renseignez pas les bons identifiants serveur. Et donc on ne peut pas, à priori, vous aider. Personnellement je vous conseille d'appeler le service client SFR pour qu'il vous guide et vous aide à comprendre ce qui correspond au nom du serveur, au nom de la base, à l'utilisateur et au mot de passe.

Ensuite c'est à vous (et à nous si vous ne vous en sortez pas) de vous dire ou se trouve ces informations dans votre code.

Re: Etablir une connexion avec un serveur

Posté : 08 juin 2011, 12:51
par andson
Merci pour votre conseil. Je pense que c'est la meilleur solution, car j'ai beau regarder sur leur site il n'y a aucune autre information.

Bonne journée

Re: Etablir une connexion avec un serveur

Posté : 10 juin 2011, 06:00
par andson
Bonjour à tous,

Je reviens sur mon petit soucis car s'adresser à mon FIA c'et comme s'adresser à un mur, à se demander s'il n'y a pas un automate à l'autre bout, enfin bref ...
Ci-dessous un bout de mon code de connexion et une image de mes différents identifiants dans le cas ou une subtilité m'aurait échappée, car je fais allusion à mon serveur "bases.sql." , mon identifiant "deuxcvclub", mon mot de pass "motdepass".

Code : Tout sélectionner

<?php // on crée la fonction connexion() qui réalise la connexion à la BDD function connexion() { // on se connecte à MySQL mysql_connect('bases.sql' ,'deuxcvclub' ,'motdepass'); // on sélectionne la base de données mysql_select_db("deuxcvclub-mp"); }
Extrait de la page d'aide de mon FAI :

Code : Tout sélectionner

SQL : informations et paramètres Le SQL est un système de bases de données très utilisé pour les sites dynamiques. Vous pouvez utiliser jusqu’à 3 bases de données MySQL sur vos pages perso. [b]Adresse : bases.sql [/b]
Voici les copies d'écran de mes coordonnées.

Image



Image

J'aimerai également avoir des explication sur ceci :

Code : Tout sélectionner

Autre chose : dans votre script de connexion, il faudrait que lorsque vous initialisiez les variables de sessions, vous ajoutiez les variables suivantes qui sont utilisées dans le code : $_SESSION['pseudo'] contient le pseudo du membre, $_SESSION['logged'] prend la valeur true quand l'utilisateur est connecté et la valeur false quand l'utilisateur est déconnecté.
Que dois-je faire ?

Bonne journée et merci

Re: Etablir une connexion avec un serveur

Posté : 10 juin 2011, 10:04
par Mazarini
Bonjour,

Pour te dépanner, mets l'adresse du serveur : 10.111.145.45 (elle est indiquée dans la page phpmyadmin).
C'est une mauvaise solution, mais ca te permettra d'avancer.

Tu peux aussi regarder si la machine dans l'adresse qui te permet d'accéder à phpmyadmin et regarder l'adresse IP (par un ping) pour voir si c'est la même à tout hasard.

Teste avec une petites page comme ca pour te concentrer sur le problème de connection :
<?PHP  
   mysql_connect('bases.sql' ,'deuxcvclub' ,'motdepass');
   echo 'mysql_connect : ', mysql_error(),'<br>';
   mysql_select_db("deuxcvclub-mp");
   echo 'mysql_select_db : ', mysql_error(),'<br>';
?>
A priori le user et le mot de passe sont bon si tu arrives à utiliser phpmyadmin (valable à 99%)
A priori le nom de la base est bon (c'est toi qui l'a choisi)
Il ne reste que le problème du serveur, bases.sql est un peu surprenant mais pas impossible.

Je n'utilise pas les sessions, mais :
session_start();
$_SESSION['pseudo'] = la personne identifiée
$_SESSION['logged'] = true;