Minichat

Eléphant du PHP | 283 Messages

07 mai 2012, 20:40

Bonjour,

Je viens vers vous car j'ai un problème dans l'installation de mon tchat...

En effet un message d'erreur s'affiche alors que je suis sur d'avoir mit les bons identifiants dans le fichiers bdd.

Impossible de se connecter à la base de données, vérifiez vos identifiants de connexion à mysql. Warning: mysql_query() expects parameter 2 to be resource, boolean given in /public_html/minichat/minichat.php on line 13 Lost connection to MySQL server at 'reading initial communication packet', system error: 111


Voici le code de sa connexion

Code : Tout sélectionner

<?php define('MYSQL_HOST', ' '); define('MYSQL_PSEUDO', ' '); define('MYSQL_MOT_DE_PASSE', ' '); define('MYSQL_NOM_DATA', ' '); $link = @mysql_connect(HOST, USER, PASS); $db = @mysql_select_db(DBASE, $link); if(!$link || !$db) { echo 'Impossible de se connecter à la base de données, vérifiez vos identifiants de connexion à mysql.'; } ?>
Ici j'ai supprimé le nom des identifiants par mesure de sécurité :wink:


Merci à tous ceux qui pourront m'aider et si vous avez besoin de plus amples informations n'hésitez pas à me demander.

Eléphant du PHP | 283 Messages

07 mai 2012, 20:49

Enfaite j'ai oublié de vous faire parvenir le script principal :wink:
<?php

// Mise à jour le 23/09/2010
include('./includes/includes.inc.php');

define('SUP_ENTREE', 0); // Remplacé 0 par 1 si vous voulez supprimer les N dernières entrées
$nb_max = 150; // Nombre d'entrées max
$n = 50; // Nombres d'entrées à supprimer lorsque le nombre d'entrées max est atteint
$lm = 120; // La taille maximum du message (caractères maximum)
$nmpp = 8; // Nombres de messages par pages

$sql_ret = "SELECT COUNT(*) AS nb_post FROM script_minichat";
$retour = mysql_query($sql_ret, $link) or die(mysql_error());
$data_Post = mysql_fetch_array($retour);
$totalPost = $data_Post['nb_post'];
$nombreDePages = ceil($totalPost / $nmpp);

if (isset($_POST['pseudo'], $_POST['message'])) // Si les variables existent
{
  if (!empty($_POST['pseudo']) && !empty($_POST['message'])) // Si on a quelque chose à enregistrer
  {
    if (empty($_POST['info'])) // Le $_POST['info'] est une ruse pour les spammeurs
    {
      if (strlen($_POST['message']) < $lm) // Si le message ne dépasse pas la taille autorisée
      {
		$expire = time() + 24*3600; // Le cookie expirera dans 24h
		setcookie('pseudo', $_POST['pseudo'], $expire); // On écrit un cookie
		setcookie('joker', md5(uniqid().$_POST['pseudo']), $expire); // On écrit un second cookie
	
        // On utilise la fonction mysql_real_escape_string() pour la sécurité
        $pseudo = trim(mysql_real_escape_string(utf8_decode($_POST['pseudo'])));
        $message = mysql_real_escape_string(utf8_decode($_POST['message']));
        $time = time()+3600; // On ajoute 1 heure pour gmt+1
 
        // Ensuite on enregistre le message
        $sql = "INSERT INTO script_minichat VALUES('', '".$pseudo."', '".$message."', '".$time."')";
        $insert = mysql_query($sql, $link) or die(mysql_error());

        if($insert == TRUE)
        {
          header('Location: minichat.php');
        }
        else
        {
          header('Location: minichat.php?erreur=send');
        }
        
        mysql_free_result($insert);
      }
      else
      {
        header('Location: minichat.php?erreur=solong');
      }
    }
    else
    {
      header('Location: minichat.php?erreur=spam');
    }
  }
  else
  {
    header('Location: minichat.php?erreur=vide');
  }
}
else
{ 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <?php echo utf8_encode('<title>Mini-chat (Démo)</title>'); ?>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        
        <script type="text/javascript">
        function addText(instext) {
        var mess = document.mess.message;
        //IE support
        if (document.selection) {
            mess.focus();
            sel = document.selection.createRange();
            sel.text = instext;
            document.guestbook.focus();
        }
        //MOZILLA/NETSCAPE support
        else if (mess.selectionStart || mess.selectionStart == "0") {
            var startPos = mess.selectionStart;
            var endPos = mess.selectionEnd;
            var chaine = mess.value;

            mess.value = chaine.substring(0, startPos) + instext + chaine.substring(endPos, chaine.length);

            mess.selectionStart = startPos + instext.length;
            mess.selectionEnd = endPos + instext.length;
            mess.focus();
        } else {
            mess.value += instext;
            mess.focus();
            }
        }
        </script>
        
        <style type="text/css">
        body
        {
          width: 86%;
          margin-top: 16px;
          margin-right: 64px;
          margin-bottom: 32px;
          margin-left: 64px;
          background-color: #F9F9F9;
        }
    
        .chat
        {
          width: 55%;
          margin-left: 32px;
          margin-top: 16px;
          font-size: 11px;
          font-family: Verdana, Arial, "Times New Roman", Sans-Serif;
          text-align: left;
          border-style: dashed;
          border-width: 1px;
          padding: 10px;
          background-color: #FFFFFF;
        }
    
        .erreur
        {
          font-family: Verdana, Arial, "Times New Roman", Sans-Serif;
          font-size: 13px;
          text-align: left;
          color: red;
        }
    
        h3
        {
          text-align: center;
        }
        
        #smileys 
        {
          margin: 2px;
        }
        
        .souligne 
        {
          text-decoration: underline;
        }
        
        .input 
        {
          display: none;
        }
        </style>
    </head>
    <body>
   
<?php
}

// On supprime les entrées supérieur à N Si SUP_ENTREE est défini à 1
if(SUP_ENTREE == 1)
{
  $sql_d = "SELECT COUNT(*) AS nb_entrees FROM script_minichat";
  $res_d = mysql_query($sql_d, $link) or die(mysql_error()); 
  $data = mysql_fetch_array($res_d);

  if ($data['nb_entrees'] > $nb_max)
  {
		$sql_d2 = "DELETE FROM script_minichat ORDER BY id LIMIT ".$n;
		$res_d2 = mysql_query($sql_d2, $link)or die(mysql_error());
		mysql_free_result($res_d2); 
  }
}

$url = trim(strip_tags($_SERVER['REQUEST_URI']));
$url = ereg_replace('/', ' ', $url);
$uri = explode('=', $url);
//$uri_final = explode('.', $uri[2]);
$p = $uri_final[1];

if (isset($_GET['p']) && !empty($_GET['p']) && intval($p) <= intval($nombreDePages))
{
	$page = intval($_GET['p']);  
}
else 
{
  $page = 1; 
}

$ppaa = ($page - 1) * intval($nmpp);
$ppaa = mysql_real_escape_string($ppaa);

// Maintenant on doit récupérer les N dernières entrées de la table
// On utilise la requête suivante pour récupérer les N derniers messages :

$sql_rep = "SELECT pseudo, message, time FROM script_minichat ORDER BY time DESC LIMIT " . $ppaa . ", " . $nmpp;
$reponse = mysql_query($sql_rep, $link) or die(mysql_error());

echo utf8_encode('<div class="chat"><h3>Bienvenue sur le MiniChat (Démo)</h3>');

if(mysql_num_rows($reponse) > 0)
{

  // Gestion des erreurs
  if(isset($_GET['erreur']) && $_GET['erreur'] == 'vide')
  {
    echo utf8_encode('<p class="erreur">Un ou plusieurs champs sont restés vides.</p>');
  }

  if(isset($_GET['erreur']) && $_GET['erreur'] == 'send')
  {
    echo utf8_encode('<p class="erreur">Une erreur est survenue lors de l\'envoi du message.</p>');
  }

  if(isset($_GET['erreur']) && $_GET['erreur'] == 'solong')
  {
    echo utf8_encode('<p class="erreur">Le message dépasse la taille autorisée de '.$longueur_message.' caractères</p>');
  }
  
  if(isset($_GET['erreur']) && $_GET['erreur'] == 'spam')
  {
    echo utf8_encode('<p class="erreur">Les spammeurs n\'ont rien à faire ici.</p>');
  }

  // Puis on fait une boucle pour afficher tous les résultats :
  while ($donnees = mysql_fetch_array($reponse))
  {
    echo utf8_encode('<b>'.$donnees['pseudo'].'</b> a écrit le <span style="color:green;font-size:10px;font-style:italic;">'.date('d/m/Y à H\hi', $donnees['time']).'</span> : <br/>'.stripslashes(controle($donnees['message'])));
    echo '<br/><br/>';
  }

// Fin de la boucle, le script est terminé !
}
else
{
  echo utf8_encode('<p class="erreur">Il n\'y a encore aucun message d\'envoyé dans le minichat.</p>');
}

mysql_free_result($reponse);

$i = intval($i);
echo '<p>Page : ';
echo get_list_page($page, $nombreDePages, './minichat.php');

?> 
<h5>Postez un message:</h5>
<form method="post" action="minichat.php" name="mess">
<div id="smileys">
  <a onclick="addText(' :O ');return(false)"><img src="./images/1.gif" border="0" alt="" /></a>
  <a onclick="addText(' ^^ ');return(false)"><img src="./images/2.gif" border="0" alt="" /></a>
  <a onclick="addText(' lol ');return(false)"><img src="./images/3.gif" border="0" alt="" /></a>
  <a onclick="addText(' o_O ');return(false)"><img src="./images/4.gif" border="0" alt="" /></a>
  <a onclick="addText(' ;) ');return(false)"><img src="./images/5.gif" border="0" alt="" /></a>
  <a onclick="addText(' :p ');return(false)"><img src="./images/6.gif" border="0" alt="" /></a>
  <a onclick="addText(' :( ');return(false)"><img src="./images/23.gif" border="0" alt="" /></a>
  <a onclick="addText(' O_O ');return(false)"><img src="./images/19.gif" border="0" alt="" /></a>
  <a onclick="addText(' :love: ');return(false)"><img src="./images/26.gif" border="0" alt="" /></a>
  <a onclick="addText(' :ange: ');return(false)"><img src="./images/37.gif" border="0" alt="" /></a>
  <a href="#" onclick="addText('');return(false)"><b style="text-decoration:none;">G</b></a>
  <a href="#" onclick="addText('');return(false)"><i style="text-decoration:none;">i</i></a>
  <a href="#" onclick="addText('[s][/s]');return(false)"><u style="text-decoration:none;">s</u></a>
</div>

<table border="0" cellpadding="1" cellspacing="1">
<tr>
<td>Pseudo :</td> <td><input type="text" name="pseudo" value="<?php echo $_COOKIE['pseudo'] ?>" size="20" maxlength="20" /></td></tr>
<tr>
<td>Message :</td> <td><textarea name="message" cols="50" rows="7" ></textarea></td></tr>
<tr><td><input class="input" type="text" name="info" /></td></tr>
<tr>
<td colspan="3" align="center"><input type="submit" value="Envoyer" /></td></tr>

</table>
<a href="javascript:window.document.mess.submit()"></a>
</form></div>
<?php
echo '<br/>';
echo '<center><a href="http://sourceforge.net/donate/index.php?group_id=325199"><img src="http://images.sourceforge.net/images/project-support.jpg" width="88" height="32" border="0" alt="Support This Project" /> </a></center>';
?>
</body>
</html>

<?php
// On éteint la lumière en sortant
mysql_close($link);
?>

ViPHP
xTG
ViPHP | 7331 Messages

07 mai 2012, 20:50

Enlèves les @ dans le premier code pour avoir une remontée d'erreur.

Eléphant du PHP | 283 Messages

07 mai 2012, 20:57

Maintenant ça me met ça

Warning: mysql_connect(): Lost connection to MySQL server at 'reading initial communication packet', system error: 111 in /public_html/minichat/includes/connect.inc.php on line 8 Warning: mysql_select_db() expects parameter 2 to be resource, boolean given in /public_html/minichat/includes/connect.inc.php on line 9 Impossible de se connecter à la base de données, vérifiez vos identifiants de connexion à mysql. Warning: mysql_query() expects parameter 2 to be resource, boolean given in /public_html/minichat/minichat.php on line 13 Lost connection to MySQL server at 'reading initial communication packet', system error: 111

Eléphant du PHP | 267 Messages

08 mai 2012, 00:04

salut,

il semblerait qu'il y ait une erreur dans le fichier :
<?php

define('MYSQL_HOST',      ' ');
define('MYSQL_PSEUDO',      ' ');
define('MYSQL_MOT_DE_PASSE',   ' ');
define('MYSQL_NOM_DATA',    ' ');

$link = @mysql_connect(HOST, USER, PASS);
$db = @mysql_select_db(DBASE, $link);

if(!$link || !$db)
{
   echo 'Impossible de se connecter à la base de données, vérifiez vos identifiants de connexion à mysql.';
}
?>
il faut mettre :
$link = @mysql_connect(MYSQL_HOST, MYSQL_PSEUDO, MYSQL_MOT_DE_PASSE);
$db = @mysql_select_db(MYSQL_NOM_DATA, $link);

@+
dix2

ViPHP
xTG
ViPHP | 7331 Messages

08 mai 2012, 06:58

C'était ce que je voulais qu'il trouve de par lui même en lisant les erreurs, sauf que manque de bol elle est pas aussi explicite que prévue. :mrgreen:

Eléphant du PHP | 283 Messages

08 mai 2012, 09:35

Le problème persiste même après avoir modifié ce fichier...

Mais normalement ce script est sensé s'installer dans une base de donnée nommé "test" d'après le fichier lisez moi mais je souhaiterais l'installer dans un nom de base différent car mon hébergeur donne des noms automatique aux bases.
Cela change t'il quelque chose dans ce qu'il faut changer ?

Script complet disponible ici http://scripts.toocharger.com/fiches/sc ... t/5126.htm

ViPHP
xTG
ViPHP | 7331 Messages

08 mai 2012, 11:03

La constante MYSQL_NOM_DATA est là pour cibler la bonne base de données.
Quand à l'erreur persistante, arrives-tu à te connecter à la base de données avec tes identifiants via un logiciel tel que phpmyadmin ou autre (voir dans le panel admin de l'hébergement) ?

Eléphant du PHP | 283 Messages

08 mai 2012, 11:07

Voici ce que ça m'affiche

Impossible de se connecter à la base de données, vérifiez vos identifiants de connexion à mysql. Warning: mysql_query() expects parameter 2 to be resource, boolean given in /public_html/minichat/minichat.php on line 18 Lost connection to MySQL server at 'reading initial communication packet', system error: 111

La base de donnée fonctionne très bien car j'ai déjà différentes tables dessus.

Eléphant du PHP | 283 Messages

08 mai 2012, 11:11

Donc c'est quand même bizzare, le script fonctionne t-il chez vous ?

Eléphant du PHP | 283 Messages

08 mai 2012, 11:17

Donc maintenant voici ce que ça m'affiche

Table 'tchat.script_minichat' doesn't exist

Donc le problème vient, je pense du fait que le script veut lire
la table "tchat.script_minichat' au lieu de "tchat".

Mais y a t-il une façon d'arranger ça ?

ViPHP
xTG
ViPHP | 7331 Messages

08 mai 2012, 12:36

Non il cherche à lire la table script_minichat qui se trouve dans la base de données tchat. ;)
Donc la base de données est mal renseignée.

Eléphant du PHP | 283 Messages

08 mai 2012, 12:37

Mais comment peut on arranger le problème ?

Eléphant du PHP | 283 Messages

08 mai 2012, 14:12

C'est bon j'ai arranger le problème, j'avais oublié de changer le nom de ma table ^^

Par contre j'ai encore un message d'erreur au dessus du tchat :

Deprecated: Function ereg_replace() is deprecated in /public_html/minichat/minichat.php on line 182


Et dedans:

Deprecated: Function eregi_replace() is deprecated in /public_html/minichat/includes/fonctions.inc.php on line 56 Deprecated: Function eregi_replace() is deprecated in /public_html/minichat/includes/fonctions.inc.php on line 57 Hackensolo a écrit le 03/11/2008 à 04h56 :
Bonjour à tous, ceci est mon premier minichat.
Vous en pensez quoi ?

Eléphant du PHP | 267 Messages

08 mai 2012, 14:40

les fonctions ereg_replace() et eregi_replace() sont obsolètes
maintenant, il faut utiliser preg_replace()

@+
dix2