begin process at 2010 02 09 22:44:05
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > PHP CHAT (AVEC PHP5 + PAF)

PHP CHAT (AVEC PHP5 + PAF)


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Classé sous :chat ajax, php chat, ajax chat, chat php, paf framework Niveau :Expert Date de création :01/05/2009 Date de mise à jour :25/09/2009 03:58:44 Vu / téléchargé :5 163 / 896

Auteur : Arto_8000

Ecrire un message privé
Site perso
Commentaire sur cette source (27)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
C'est une nouvelle version totalement redessiné, redesigné et dont l'architecture a été entièrement repensé afin d'être le plus extensible possible. Au final, le résultat est vraiment intéressant puisqu'il est très simple d'ajouter ou d'enlever des modules en fonction de nos besoins. J'ai aussi misé sur le fait qu'il soit le plus simple possible de codé ces propres modules. Pour permettre cette flexibilité, j'ai utilisé le framework que j'ai moi même développé dernièrement afin de pouvoir en premier lieu le tester et profiter du fait qu'il a été conçu pour fonctionner par module.

Pour le reste, je me suis assurer que ça soit assez simple d'installation en centralisant toutes les configurations dans le fichier configuration.ini qui est très simple à comprendre.

Toute la documentation qui est nécessaire pour comprendre comment fonctionne le chat se trouve dans le dossier documentation qui est à la racine du zip. Elle est très complète et détaillé.


 Conclusion

== Compatibilité ==

Serveur :
PHP5+
MySQL

Client :
IE7+ (aucun support pour IE6)
et n'importe qu'elle navigateur moderne.

== Lien externe ==

Démo : http://holyvier.u7n.org/demo/php%20chat/
PAF (PHP/AJAX Framework) : http://www.phpcs.com/codes/PAF-PHP-AJAX-FRAMEWORK_ 49492.aspx

== Bogues ==

Si vous trouvez un bogue ou que vous avez des problèmes à installer le chat, vous pouvez laisser un messsage sur cette page ou m'envoyer un message CodeS-SourceS.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

03 mai 2009 00:41:07 :
Correctifs
03 mai 2009 17:05:54 :
Correctifs
08 mai 2009 18:06:52 :
voir commentaire
02 août 2009 22:18:19 :
Compatibilité pour la version 5.3.0 de PHP.
25 septembre 2009 03:58:55 :
Modification du client, pour que quand on clique sur le nom d'un utilisateur l'onglet pour la conversation privée soit ouvert automatiquement.

 Sources du même auteur

Source avec Zip TYPAGE AVEC LES TYPES PRIMITIFS DE PHP
Source avec Zip PAF (PHP / AJAX FRAMEWORK)
Source avec Zip Source avec une capture AJAX CHAT V2.0
Source avec Zip RPG POUR IRC
Source avec Zip Source avec une capture CHAT AJAX

 Sources de la même categorie

SONDAGE - VOTE - POLL (AVEC MYSQL) par hornet_bzz
Source avec Zip Source avec une capture CRAYONPRO EST UN CMS SIMPLE EN PHP ET MYSQL - INSTALLATION E... par crayoncie
Source avec Zip Source avec une capture LISTENGEN GÉNÉRATEUR DE FICHIER PLAYLIST par AGG
Source avec Zip IP CALCULATOR par X_Cli
Source avec Zip Source avec une capture WHOIS DOMAIN CLASS : LOOKUP & AVAIBILITY par aKheNathOn

Commentaires et avis

Commentaire de kohntark le 02/05/2009 11:37:04

Salut,

Je n'ai fait que regarder la démo, et ça à l'air bien sympa.

quelques remarques "brutes" :
- sous IE8 le confirm salles=>joindre est bloqué
- le div qui permet d'afficher (par ex) le chat=>a propos ne permet pas de lire l'intégralité du texte (pas de scroll possible)
- le message "La commande pour rejoindre la salle '@dfdsfs' a pris trop de temps à s'exécuter" s'affiche alors qu'il serait plus parlant d'informer sur les caractères illégaux (j'imagine que c'est pour cette raison que ça "plante") De même un nom de salle avec espace ne donne pas le résultat escompté ("truc bidule" => créé une salle "truc")
- les cursors pourraient être méliorés ( entres autres sur les onglets des salles disponibles)
- certains caractères ne passent pas dans le chat, par exemple (<) : "si a <b" => "si a"
- si j'entre par exemple "<div style="width:200000px;height:4000000px">jklbnk</div>" ça fonctionne et ça rend le scrolling auto inopérant
- surligné, d'une manière ou d'une autre, le pseudo avec lequel l'utilisateur est connecté serait un plus
- il y a possibilité d'ouvrir plusieurs fenêtres du chat avec des pseudos différents qui occasionnent des bugs
- j'ai constaté également que certains messages n'apparaissent pas dans la fenêtre de celui qui les a entré, alors qu'ils apparaissent correctement chez les autres.
- ...


... voilà pour les quelques commentaires "en live"

Je regarderai le code à l'occasion.


Cordialement,


Kohntark-

Commentaire de Arto_8000 le 03/05/2009 00:02:39

pour #1, #5 et #6, je vais corriger les bogues.

pour #8, c'est normal que ça fasse cela, car tu ne peux avoir plus d'une session sur un même navigateur. Ce que je vais faire, c'est rajouter une vérification au login, pour vérifier si la personne est déjà connecté.

pour #3, le message s'affiche quand la réponse prend plus de 1 seconde à faire son aller retour (ce qui est très lent). C'est un "indicateur" de perte de connexion. Si le message apparait toujours, c'est que l'on a plus de connexion. Si ça apparait rarement, c'est que soit le paquet ne c'est pas rendu ou que le navigateur à eu un "lag" temporaire.

Pour le nom avec des espaces, ce que tu tapes est interprété comme si tu tapais "/join truc bidule" ce qui correspond à connecte toi à la salle "truc" avec un mot de passe "bidule". Je vais quand même faire un "quick fix" qui va changer automatiquement les espaces par des underscores.

pour #9, faudrait voir dans quelles circonstances ça arrive, je vais essayer de reproduire le bogue de mon côté.

pour #2, le texte s'affiche au complet dans tous les navigateurs, il n'est que de 3 lignes. Pour le fait qu'il n'y a pas de scroll, c'est simplement que je n'ai pas jugé utile d'en avoir.

Commentaire de Arto_8000 le 03/05/2009 00:12:53

pour le #1, je viens de tester sur IE8. En fait, le problème c'est que le navigateur a besoin (pour une raison assez obscure) d'avoir ta permission pour afficher le "prompt". Une petite bar apparait dans le haut, il suffit de dire oui je veux exécuter ce très dangereux "scripted window".

Commentaire de kohntark le 03/05/2009 10:26:43

* N'ayant pas encore regardé le code je parle toujours d'un aspect purement utilisateur.

1#
J'avais bien saisi le pb du prompt. Je pense que procéder de la même manière que "salles>liste" (div) serait une bonne chose car certains utilisateur, devant ce message assez alarmiste, n'autoriseront pas le prompt.

2#
Je viens de refaire l'essai sans pb. C'était sans doute une ligne précédemment écrite.
Cela étant, pouvoir "remonter" un peu dans l'historique serait une bonne chose.

3#
J'ai tout de même l'impression que ceux sont bien les caractères spéciaux qui génèrent indirectement cette erreur :
création de "tartanpion" => aucun pb
création de "t@artanpion" => "La commande pour rejoindre la salle 't@artanpion' a pris trop de temps à s'exécuter"
Même chose si l'on tente de créer une salle ne comportant qu'un seul caractère.
Ce que je "reproche" c'est de ne pas avoir un message du style :
"La création de la salle "t@artanpion" a échouée car son nom comporte des caractères non autorisés.
Seuls les caractères suivants sont valides : [...] ... d'un minimum de 2 caractères"

Il semble y avoir un bug lorsque que l'on quitte toutes les salles. Il n'est alors plus possible de récupérer la main sur la fenêtre de chat après avoir fait salle>joindre (testé sous IE et FF)

Je vais quand même faire un "quick fix" qui va changer automatiquement les espaces par des underscores.
=>
le problème existe également avec les pseudos : "aa aa" => erreur "Paramètre manquant ou incorrect"


Cordialement,

Kohntark-

Commentaire de Arto_8000 le 03/05/2009 17:03:48

pour le #1, je peux absolument rien faire pour ça, parce qu'un prompt c'est un élément de base en javascript. D'autant plus que les utilisateurs de IE8 doivent être habitué d'avoir des messages aussi stupide qui leur soit demandé.

pour le #3, Le dernier fix a rajouté un message d'erreur quand on entre un nom de salle invalide.

pour le bogue de quand on quitte les fenêtres, j'avais initialement mis un message pour quand on quitte toutes les salles qui disaient que l'on ne pouvait pas quitter toutes les salles. Le problème est que après j'ai eu de la pollution dans mes objets et certains tests ne fonctionnaient plus bien.

pour la dernière remarque, il y a le mot clé "incorrect" dans le message. Je vais quand même rendre un peu plus clair les messages d'erreur.

Commentaire de arta le 04/05/2009 18:47:03

Bonsoir

Juste pour suivre le sujet :-)

Commentaire de kohntark le 05/05/2009 10:39:11

Je viens de télécharger et d'installer le chat pour test.
C'est "lourd", pas dans le sens péjoratif du terme, mais de celui du travail fourni.
Je te livre en vrac et en live certaines remarques et problèmes constatés lors du test. Je me place le plus souvent en tant que simple utilisateur de ta source, sans chercher dans le code (ce chat a clairement vocation a être utilisé sans grandes connaissances en programmation) :

- install => pas de pb
- appel de la page, connexion => affichage page : pb d'encodage, il y a des caractères exotiques un peu partout.
Ma base / php ... sont par défaut en utf8.
- un "actualiser" fait revenir à la page login, ce qui n'est pas une bonne chose à mon sens puisque de nombreux utilisateurs risquent d'utiliser cette fonctionnalité pour des raisons diverses ("je n'ai plus de réponses, le chat a dû planté, j'actualise !!")
- tes messages d'alertes sur les caractères non autorisés sont bien plus parlant. Cependant, pour ce qui est de quitter une salle, tu pourrai ajouter à "Vous devez avoir au moins une salle d'ouverte." cela : "pour vous déconnecter du chat utilisez 'chat>déconnexion'"
- lorsque l'on se déconnecte on ne peut pas utiliser le même pseudo après un temps suffisant pour que l'utilisateur se "décourage" et en choisissent un autre. De même il est possible de créer des centaines de pseudos (connexion=> déconnexion, choix d'un autre pseudo=> deconnexion, etc ... etc ...) ce qui remet en cause l'intégrité du script et peut le faire planter pour tous les utilisateurs.
La commande déconnexion devrait donc déconnecter immédiatement l'utilisateur est rendre son pseudo disponible.
- je reste convaincu que le prompt est une mauvaise idée et qu'il vaudrait mieux que tu procèdes de la même manière que l'affichage de la liste des salles disponibles. Ainsi il n'y aura pas la nécessité d'autoriser une action (IE), qui, comme je l'ai dit, ne sera pas effectué par de nombreuses personnes qui prendront peur au message d'alerte.
Par ailleurs la terminologie "joindre" n'est pas adaptée, je verrai plutôt "créer une nouvelle salle"
- concernant l'insertion de HTML :
lors de mon dernier message je t'avais alerté sur la possibilité (entres autres) de créer un div de height monstrueux qui posé pb en terme de lisibilité pour les autres utilisateurs (limite un deface) Ce n'est pas pour autant que l'insertion de HTML est une mauvaise chose, bien au contraire.
Pourquoi ne pas utiliser un script comme sur le forum CS ?
- je crois qu'implémenter un système anti-spam serait une bonne idée, pour interdire, par exemple, les appuis successifs sans messages sur la touche entrée


Tu penses peut être que je cherche la petite bête avec certaines de mes remarques, mais ce n'est pas le cas. La plupart des utilisateurs ne connaissent rien à la programmation au sens large du terme (paramètre incorrect, etc ..) Il leurs faut des messages clairs et des gestions d'erreurs efficaces ainsi que des limites pour les petits rigolos.

Je voulais regarder un peu le code et du coup, avec ces remarques purement utilisateur je n'ai pas eu le temps.
Ton script semble très intéressant en tous cas.

Cordialement,


Kohntark-

Commentaire de Afyn le 07/05/2009 20:15:40

Juste testé la démo.

Ca semble trés lent ? Est ce normal ?

Afyn - Navedac

Commentaire de Arto_8000 le 07/05/2009 22:08:49

Afyn -> Le taux de rafraichissement est assez bas. Il est à par défaut, un rafraichissement au 6 secondes. Tu attends donc en moyenne 3 secondes pour ton message. Si tu veux l'augmenter, le paramètre se trouve à la ligne 9 de AppChat.js

Je vais surement le monter un peu surtout qu'avec le démo en ligne je vois que le traffic généré est assez petit et que le serveur peut en prendre beaucoup plus que ça.

kohntark -> Le problème d'encodage c'est avec l'affichage de la page ou du contenu qui est reçu par Ajax ?

Commentaire de Afyn le 07/05/2009 22:13:03

Vu comme ça .. ça semble normal.

Quel est le principe de ton chat ?
Base de données ? Fichiers Texte ou sockets ?

Ou autre ?

Afyn Navedac

Invitez vos amis : www.furukoo.fr

Commentaire de kohntark le 08/05/2009 00:05:45

Je pensais l'avoir précisé, au temps pour moi. C'est avec l'affichage, le contenu envoyé / reçu par Ajax ne pose pas de pb.

Cordialement,


Kohntark-

Commentaire de Arto_8000 le 08/05/2009 00:12:43

En gros, le principe d'un chat avec php c'est que le client fait des requêtes AJAX à intervalle régulier pour recevoir les derniers messages et updates du serveur, et les données sont stockés dans des base de données

Commentaire de Arto_8000 le 08/05/2009 00:25:10

Bon, j'ai fait une mise à jour du démo en ligne. J'ai modifié quelques petit truc pour règler l'encodage. Tu me diras si tu as toujours le problème avec le patch que j'ai fait.

Commentaire de kohntark le 08/05/2009 11:00:20

Pas de changement, le problème d'encodage est toujours là.
Sans aller très loin dans la recherche j'ai fait 2/3 tests (FF 3.0):

- le navigateur affiche la page en UTF-8
- le forcer à l'afficher en ISO-8859 règle le pb
- la mise en place d'une meta charset ne change rien (mis uniquement sur index.html) la page restant affichée en utf-8
- tes fichiers semble encodé en ISO-8859. Le fait de les ré encoder en UTF-8 règle le pb (test fait sur PanelChat.js)

... c'est mince comme tests, mais si ça peut t'aider un peu.

Je reviens sur ça, mais devoir attendre plusieurs secondes pour pouvoir se connecter après une déconnexion c'est lourd, surtout pour tester :o)
Une fois de plus je ne me suis pas plongé dans le code (donc je vais peut être dire une connerie) mais pourquoi ne pas envoyer directement ce type d'événement (déconnexion) afin qu'il soit pris en compte immédiatement ? En fait je pense à l'implémentation d'un système de priorités qui permettrait de hiérarchiser l'importance des événements afin d'optimiser les temps de réponses. Dans l'état actuel de ton script ça ne sert sans doute à rien mais ça pourrait être très avantageux lors de l'ajout de nouvelles fonctionnalités.
J'avais mis en place une telle gestion sur un projet similaire (au sens des échanges client/serveur) qui donnait de bon résultats.


Cordialement,

Kohntark-

Commentaire de Arto_8000 le 08/05/2009 18:06:57

Pour le charset, j'ai tout est passé en UTF-8, ça à l'air de bien fonctionner de mon côté.

Pour l'update que je viens de faire voici quelques détails :

- Avant les script js prennait le 2/3 de la bandwith du chat. J'ai rajouté une version compressé pour que ça utilise moins de bandwith.

- Le temps de rafraichissement est passé à 3 secondes (6 secondes avant)

- Et le problème de charset devrait être réglé (?)

Commentaire de mailliam le 01/06/2009 15:39:17

Salut!
Excellente source! pour moi, il ne manque plus que les messages privés :)
félicitations en tout k !!

Commentaire de Arto_8000 le 01/06/2009 17:23:00

Les messages privés sont déjà supportés. Pour initier une conversation, il faut faire /privmsg nomdelapersonne message. Un onglet supplémentaire avec comme nom ~nomdelapersonne va s'ouvrir et vous aller pouvoir avoir une conversation privée dans cet onglet.

Commentaire de mailliam le 01/06/2009 23:47:11

aah excellent!
et merci pour le temps de réponse rapide :)

Commentaire de gigamaster le 15/06/2009 22:08:49 9/10


P/ suivre !

Félicitations ^_^

Commentaire de Kimjoa le 20/06/2009 04:13:30

salut arto , juste pour dire que j'ai lu un truc dernièrement, sur les échanges d'information entre plusieurs clients et le serveur, et la solution adopté, été non pas de lancer les requêtes toutes les 5 secondes, mais de différer le retour d'une requête tant qu'une modif n'a pas été faite par un client...

pour être claire, sur ton chat, tout les clients effectue une requête "récupère le\les derniers" messages"  , et celle ci est retourné par le serveur que lorsque quelqu'un envoie un msg,ect ect....

pense que tout pourrait implémenter ça...
bye

Commentaire de dimoala1 le 02/08/2009 18:30:56

Marche pas :( quand tu apuy sur connecter il se passe rien , même sur son site ! j'ai testé sur deux pc et c pareil .

dommage

Commentaire de dimoala1 le 02/08/2009 21:02:48

marche pas

Commentaire de Arto_8000 le 02/08/2009 22:18:28

Il y a eu une mise à jour sur le serveur de la version de PHP qui est passé à 5.3.0, ce qui a causé un petit problème de compatibilité.

Le problème est corrigé et c'est maintenant compatible avec la version 5.3 de PHP.

Commentaire de kephren14 le 16/10/2009 12:18:44

Je n'arrive pas à installer le script !
Impossible d'aller plus loin que la page index et le login ! Impossible de valider le nom de l'utilisateur ! Rien ne se passe !

Commentaire de Arto_8000 le 16/10/2009 14:50:16

As-tu installé les tables SQL et configuré le fichier configuration.ini avec tes paramètres de connexion ?

Commentaire de kephren14 le 24/01/2010 11:49:22

Désolé de ne pas vous avoir répondu plus tot !
Tables SQL OK elles sont crées, fichier configuration.ini OK j'ai modifié les infos SQL!
Erreur sous Firefox, erreur sous IE !

Détails de l'erreur de la page Web SOUS IE
Message : Erreur de syntaxe
Ligne : 15
Caractère : 72
Code : 0
URI : http://x/chat/js/paf/misc.packed.js


Message : Erreur de syntaxe
Ligne : 15
Caractère : 72
Code : 0
URI : http://x/chat/js/paf/misc.packed.js


x = mon URL ! ^^


Commentaire de Arto_8000 le 24/01/2010 23:01:08

La seule chose que je pourrais voir rapidement c'est un problème d'encodage ou avec la compaction que j'utilise, parce que l'erreur en soit ne veut rien dire (le fichier en question fait 1 ligne de code). Essaie de changer le chemin du fichier js dans le fichier index.html pour le fichier sans le ".packed". La compaction comme tel c'est juste pour limiter la bande passante. Il arrive que la compaction ajoute des erreurs de synthaxe.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales