UN LOGICIEL DE CHAT TRES SIMPLE EN PHP/MYSQL

Signaler
Messages postés
6
Date d'inscription
mercredi 16 mars 2005
Statut
Membre
Dernière intervention
23 août 2006
-
Messages postés
35
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
26 décembre 2012
-
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

Messages postés
35
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
26 décembre 2012

effectivement: ($_GET['pseudo']))) {, merci, jayadeva, marche impeccablement maintenant.
Messages postés
67
Date d'inscription
mercredi 2 juillet 2003
Statut
Membre
Dernière intervention
1 septembre 2008

compte les : 4 ( et 3 ). Il t'en manque une.
Messages postés
35
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
26 décembre 2012

la ligne 10 est celle-ci:
if(!(isset($_GET['pseudo']) and !empty($_GET['pseudo'])) {
Messages postés
35
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
26 décembre 2012

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?
Messages postés
67
Date d'inscription
mercredi 2 juillet 2003
Statut
Membre
Dernière intervention
1 septembre 2008

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" :))
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

@ 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°
Messages postés
6
Date d'inscription
mardi 15 août 2006
Statut
Membre
Dernière intervention
8 octobre 2006

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
Messages postés
3
Date d'inscription
dimanche 25 mai 2003
Statut
Membre
Dernière intervention
25 août 2006

"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. ^^
Messages postés
855
Date d'inscription
mardi 19 novembre 2002
Statut
Membre
Dernière intervention
28 juillet 2009
1
j'aimerai bien savoir pourquoi certain préconise le POST au GET ? pour une quelconque sécurité?
je vois pas....
Messages postés
13
Date d'inscription
dimanche 8 mai 2005
Statut
Membre
Dernière intervention
12 février 2008

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.
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

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°
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

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°
Messages postés
6
Date d'inscription
mercredi 16 mars 2005
Statut
Membre
Dernière intervention
23 août 2006

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 ...

@+