Actualisation de ChatBox

Actualisation de ChatBox - PHP - Programmation

Marsh Posté le 21-04-2005 à 01:54:13    

Mon Problème:
Je suis sur le point de finir une "ChatBox" sur mon site, mais j'ai encore un problème au niveau de l'actualisation de la page. Enfait quand je viens d'ajouter un message et que j'appui sur F5, le même message se remet au dessus.  Je sait juste que le problème doit venir de :
 
$requete="SELECT * FROM chatbox WHERE pseudo='".$pseudo."' ORDER BY ID DESC LIMIT 0 , 1";
$resultat=mysql_query($requete);
$dernier_message=mysql_fetch_array($resultat);
 
Enfin, voici mon code:
 
<?
if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
{
    if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
    {
        // D'abord, on se connecte à MySQL
        mysql_connect("sql.free.fr", "sphax3d", "xxxxx" );
        mysql_select_db("sphax3d" );
 
        // On utilise la fonction PHP htmlentities pour éviter d'enregistrer du code HTML dans la table
  $heure = date ("H" );
  $minute = date ("i" );
  $jour = date ("d" );
  $mois = date ("m" );
        $message = htmlentities ($_POST['message']);
        $pseudo = htmlentities ($_POST['pseudo']);
  $requete="SELECT * FROM chatbox WHERE pseudo='".$pseudo."' ORDER BY ID DESC LIMIT 0 , 1";
  $resultat=mysql_query($requete);
   
  // on recupère le dernier message enregistré par le même visiteur
  $dernier_message=mysql_fetch_array($resultat);
   
  // si ce dernier message est identique au message actuel, il n'est pas enregistré dans la bdd
  // si l'utilisateur appuye sur F5 pour recharger la page, le message n'est pas enregistré en double
 
  if($dernier_message['message']!==$message){
 
        // Ensuite on enregistre le message
        mysql_query("INSERT INTO chatbox VALUES('', '$heure', '$minute', '$jour', '$mois', '$pseudo', '$message')" );
  }
        // On se déconnecte de MySQL
        mysql_close();
    }
}
// Que l'on ait enregistré des données ou pas...
// On affiche le formulaire puis les 10 derniers messages
// Tout d'abord le formulaire :
?>
<div class=chatbox>
<?
// Maintenant on doit récupérer les 10 dernières entrées de la table
// On se connecte d'abord à MySQL :
mysql_connect("sql.free.fr", "sphax3d", "xxxxx" );
mysql_select_db("sphax3d" );
// On utilise la requête suivante pour récupérer les 10 derniers messages :
$reponse = mysql_query("SELECT * FROM chatbox ORDER BY ID DESC LIMIT 0,15" );
// On se déconnecte de MySQL
mysql_close();
// Puis on fait une boucle pour afficher tous les résultats :
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<b><? echo $donnees['pseudo']; ?> - <? echo $donnees['jour']; ?>/<? echo $donnees['mois']; ?> - <? echo $donnees['heure']; ?>h<? echo $donnees['minute']; ?>min</b> :<br>- <? echo $donnees['message']; ?><br>
<?
}
// Fin de la boucle, le script est terminé !
?>
</td></tr><tr><td colspan=2>
<form action="index2.php" method="post">
<center>
<font size=2>Pseudo : </font><input type="text" size=13 maxlength=40 name="pseudo" value="<? echo $_POST['pseudo'] ?>">
<input type="submit" value="Envoyer"><br>
<font size=2>Message : </font><input type="text"size=24 maxlength=255 name="message"><br>
</center>
</form>
 
 
Merci de me corriger si quelqu'un voit un problème à l'endroit que j'ai cité précédement :-) .
PS: Allez vous rendre compte de l'effet sur le site : http://sphax3d.free.fr/Tux69


Message édité par SphAx3D le 17-10-2007 à 20:52:35
Reply

Marsh Posté le 21-04-2005 à 01:54:13   

Reply

Marsh Posté le 21-04-2005 à 02:20:52    

un fois que tu as fais ton insert tu détruit $_POST['message'];
 
unset($_POST['message']);


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 21-04-2005 à 10:54:37    

<mode chieur=on>
A pemière vue, tu es à fond dans linux vue le background...
Or, on ne parle pas du tout de linux dedans...  
Donc, juste une question : pourquoi avoir mis plein de Tux sur ton site ???
- Parce que tu es un fan des pinguins ?
- Pour faire style ?  
- Tu aimes le jaune, noir blanc ?
- Tu va bientôt mettre une rubrique GNU/Linux ?  
- ...
</mode>
 
A part ça, j'ai tester ta chatbox et ça fonctionne.  
Je te conseille juste de concevoir un système basé sur cookie les ip par exemple, pour éviter qu'un abruti t'envoie quelques centaines de message à suivre avec cURL par exemple...
D'ailleur, comme tu as pu le constater, je n'ai pas pu m'en empecher  :ouch:  
J'ai pu de par la même occasion tester HTTP_Request de PEAR...
Voici comment n'importe qui pourrait foutre la ****** dans ton petit chatbox :

Code :
  1. require 'HTTP/Request.php';
  2. $i = 1;
  3. while ($i <= 5) {
  4.   echo $i++;
  5.   $chifre = mt_rand(1, 100);
  6. $pseudo = "a".$chifre."d";
  7. $message = "b".$chifre."c";
  8. $r = new HTTP_Request('http://sphax3d.free.fr/Tux69/index.php');
  9. $r->setMethod(HTTP_REQUEST_METHOD_POST);
  10. $r->addPostData('pseudo',$pseudo);
  11. $r->addPostData('message',$message);
  12. $r->sendRequest();
  13. print $r->getResponseBody();
  14. }


J'ai été gentil, j'en ai mis que 5... Mais imagine ce que pourrais mettre un en**** ? 1000, 10000...  
 
Sur cette petite expérience... Je men vais éssayer de faire une pale copie du plugin de winamp pour afficher l'uptime de ma bécanne... :sarcastic:  


Message édité par yoyo354 le 21-04-2005 à 14:15:45

---------------
http://yoyo.eurotchat.net -> Wednesday 14 September a 02:00:01 up 43 days, 11:47,  2 users,  load average: 0.07, 0.03, 0.00
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed