Actualisation de ChatBox - PHP - Programmation
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']);
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
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 :
|
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...
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/Tux69Message édité par SphAx3D le 17-10-2007 à 20:52:35