UN LOGICIEL DE CHAT TRES SIMPLE EN PHP/MYSQL

darkweaver87 Messages postés 6 Date d'inscription mercredi 16 mars 2005 Statut Membre Dernière intervention 23 août 2006 - 23 août 2006 à 15:54
cirkooo Messages postés 35 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 26 décembre 2012 - 15 juil. 2009 à 19:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/39234-un-logiciel-de-chat-tres-simple-en-php-mysql

cirkooo Messages postés 35 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 26 décembre 2012
15 juil. 2009 à 19:23
effectivement: ($_GET['pseudo']))) {, merci, jayadeva, marche impeccablement maintenant.
Jayadeva Messages postés 67 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 1 septembre 2008
12 juil. 2009 à 04:30
compte les : 4 ( et 3 ). Il t'en manque une.
cirkooo Messages postés 35 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 26 décembre 2012
12 juil. 2009 à 02:39
la ligne 10 est celle-ci:
if(!(isset($_GET['pseudo']) and !empty($_GET['pseudo'])) {
cirkooo Messages postés 35 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 26 décembre 2012
12 juil. 2009 à 02:36
moi, ça donne ça:
Parse error: syntax error, unexpected '{' in C:\wamp\www\index.php on line 10
pourtant le code est bon, les parentheses aussi.
J'ais rempli vite fait la base avec des pseudos et messages pour tester et cette erreur apparait, pourquoi? j'ais fait gaffe de ne pas laisser d'espace avant les balises d'ouverure php, j'ais enlevé tous les dièses, rempli le nom de base, de serveur, et d'admin, bon, là je ne sais plus quoi faire?
Jayadeva Messages postés 67 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 1 septembre 2008
28 mai 2007 à 19:05
Ce genre de code sert a tuer le serveur sur lequel il tourne. PHP n'est pas fait pour servir de "tchat". A la limite une tribune libre ... Et MySQL non plus! (sauf si tu sais ce que tu fait, mais bon ...)

Imagine que t'a 15 personnes qui écrivent un message toute les 3 secondes. Combien ca te fait de requêtes a MySQL Par minute ?

Bref, pense a t'optimiser et a utiliser des systèmes déjà présent sur le net comme l'"IRC" :))
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
26 août 2006 à 20:28
@ davwart... croire que les données transmises via post sont plus sécurisés que celles transmises via get serait une erreur... mais comme le dit med5 ça évite juste de changer des valeurs via l'url... .. .

@ tchaOo°
le_m3ellem Messages postés 6 Date d'inscription mardi 15 août 2006 Statut Membre Dernière intervention 8 octobre 2006
25 août 2006 à 21:10
Bein !
je trouve pas que c'est aussi intérêssant que quand j'ai "logiciel de chat" ! Je vois pas ou est ce logiciel ou ce chat dont on nous parle !
Un chat ou une causette mérite bien une page pour saisir le pseudo et une liste de connectés et et et ....
bonne continuité
4/10
med5 Messages postés 3 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 25 août 2006
25 août 2006 à 09:21
"j'aimerai bien savoir pourquoi certain préconise le POST au GET ? pour une quelconque sécurité?
je vois pas.... "

Un GET il suffit de modifier l'adresse pour changer la valeur. ^^
davwart Messages postés 855 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 28 juillet 2009 1
24 août 2006 à 19:24
j'aimerai bien savoir pourquoi certain préconise le POST au GET ? pour une quelconque sécurité?
je vois pas....
Barsy Messages postés 13 Date d'inscription dimanche 8 mai 2005 Statut Membre Dernière intervention 12 février 2008
23 août 2006 à 16:51
Il ne s'agit ici que d'un chat pour utiliser en reseau local, et on est jamais plus de trois ou quatre dessus a la fois. Donc pour le systeme de pseudo, j'ai decide de faire simple sans m'embeter a faire des sessions. Et puis je connais les autres utilisateurs et je sais qu'ils ont un pseudo a eux.

Pour ce qui est de l'effacement de la table, un simple "DELETE FROM nomtable" lorsque ca commence a ramer un peu trop est suffisant.

Et enfin, j'ai prefere le GET au POST car il permet de se connecter directement au chat sans passer par la fenetre qui demande le pseudo a chaque fois juste en rentrant l'adresse.

Par contre ce qu'il manque, c'est un focus sur la zone de texte. Je vais le rajouter.
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
23 août 2006 à 16:17
Oups erreur...

" />

et non pas

" />

Je rajouterais un point crucial qui m'avait échapé au premier coup d'oeil... la sécurité... ton chat est hautement sensible aux injections sql et attaques xss...

injection sql... si je poste comme message

'; DROP TABLE chat #

Tu n'aura plus de table chat... et ce n'est qu'un exemple... contre ça utilise mysql_real_escape_string()

attaque xss... si je poste comme message <table><tr><td> ça fera sauter la présentation de ton site... pire si je fais <script type="text/javascript">window.location.href = 'www.monsite.ext/monchat.php';</script> tes membres seront redirigé sur le chat de mon site... contre ça utilise htmlentities()... .. .

pour finir il faut toujours encadrer le nom de l'index d'un tableau par de quotes (simples ou doubles)

$_GET['pseudo'] => bon
$_GET[pseudo] => mauvais

met error_reporting(E_ALL); dans tes script quand tu code ou alors met le dans ton php.ini (ligne error_reporting)

^_^

@ tchaOo°
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
23 août 2006 à 16:07
Salut... chat simpliste mais qui doit fonctionner... je n'ais pas regarder le code en détail mais en survolant j'ais vu quelques ""erreurs""... .. .

remplace

if (isset($_POST['message']) and $_POST['message'] != NULL and $_POST['message'] != '')

par

if(isset($_POST['message']) and !empty($_POST['message']))

pour

action = "<?php echo "$SERVER[PHP_SELF]?pseudo=$_GET[pseudo]" ?>"

tu peux faire

action="<?php echo '?pseudo='.$_GET[pseudo] ?>"

cependant le systeme de pseudo est interessant mais d'une part tu risque d'être enmerdé si plusieurs personnes on le même pseudo... d'autre part mieux vaut passer par post que par get... .. .

" />

Sinon stocker en base de données c'est bien mais cela demande une gestion finement agencés sinon tu vas plomber ton serveur... qui plus est je n'ais vu nul part de nettoyage de la table... comment tu fais au bout de 15 jours de chat avec 10 personnes... ta table sera inutilement remplie... .. .

Pour finir les meta refresh c'est bien mais je serais toi je couplerais ça à un rafraichissement javascript (un simple setTimeout("window.location.href = '?';",5000); suffit)

Sinon c'est pas trop mal... ça manque un peu d'options mais c'est le cout de la simplicitée... .. . ;o)

@ tchaOo°
darkweaver87 Messages postés 6 Date d'inscription mercredi 16 mars 2005 Statut Membre Dernière intervention 23 août 2006
23 août 2006 à 15:54
Salut,

Interessante ton idée mais je ne pense pas que ce soit de la discussion "instantanée".
En effet, je pense que pour tchatter à deux ça va ... mais à moins d'avoir une super connexion internet et un super serveur dés que tu vas dépasser la vingtaine d'utilisateur les messages ne vont pas fuser ...
Mais mon commentaire n'enlève rien à la qualité de ton travail ...

@+
Rejoignez-nous