Designed by Vince El Roubio !
4 en ligne   Boutique | Sites | Bar | Forum | PhpBB | Actu | Glossaire | Codes | Tips | Liens | Livres | Lettre  


 Recherche


Acheter - Vendre
neuf et occasion

pda, jeux vidéo, graveur, cd vierges, dvd vierges, matériel informatique, pc, ordinateur portable, logiciel, antivirus, annonces gratuites

 NewsLetter





   

PHPChat v1.2

Un chat en PHP





Démo - Administration - Download (v 1.2)



LES VERSIONS

version 1.2
- nom d'utilisateur
le nom de l'utilisateur connecté est géré par session. Dans la page de connexion :
<?
session_start();
session_register("log");
$log = $lelog;
?>


où $lelog est le login saisi dans le formulaire de connexion. $log est la variable de session qui sera utilisée tout au long de l'application.

- gestion de codes html et javascript saisis dans le message
Ces instructions ne seront plus supprimées du message, mais recopiées telles quelles (remplacement des caractères < et > par leurs code < et >)

- interface d'admin
un nouvelle petite page, admin.php, apparait et permet de gérer les utilisateurs connectés et les messages. Pour les utilisateurs, il s'agit seulement de les déconnecter; si la personne que l'admin déconnecte est toujours présente sur le chat, elle sera avertie par une alert javascript et sa fenêtre sera fermée, mais cette fonctionnalité est mise en place pour supprimer les éventuelles personnes qui ne sont pas déconnectées mais plus présentes sur le chat. Pour les messages, c'est la suppression de tous les posts.

version 1
C'est celle décrite ci-dessous! L'application est assez simple, et n'utilise aucune base de données; les messages sont stockés dans un fichier texte.

FICHIERS DE L'APPLICATION
L'arborescence des fichiers est la suivante :
répertoire de baserépertoire de base
   | datasrépertoire qui contient le fichier des messages, et les infos sur les connectés
      messages.txtfichier qui contient les 50 derniers messages.
   | imagesrépertoire qui contient les images utilisées pour le chat
      | smileysrépertoire qui contient les smileys
   cFin.phpfichier qui gère les déconnexions
   cMessages.phpfichier qui affiche la liste des messages
   cSaisie.phpfichier du formulaire de saisie des messages
   cSmiley.phpfichier d'affichage des smileys
   cUsers.phpfichier d'affichage de la liste des utilisateurs connectés
   cVide.phpfichier de vérification des nouveaux messages arrivants
   index.phpfichier du formulaire de connexion
   main.phpfichier qui contient les frames de l'application


remarque
   - penser à donner, sur un serveur qui tourne sous Unix, les droits d'écriture au répertoire datas.

FONCTIONNALITES DU CHAT
Les points suivants sont gérés dans cette version 1 du chat :

   - utilisateurs connectés
   - smileys
   - action telles que le /me de Irc, le /away ou le /back


FONCTIONNEMENT DU CHAT
Je ne reviendrai pas sur le formulaire de login. Voir pour cela :
le tutorial sur les formulaire
les exercices sur les mots de passe

Les points importants :

rafraichissement de la frame des messages
Dans un chat, rien n'est plus ennuyeux que de voir clignoter, toutes les 5 secondes par exemple, la liste des messages lors du rafraichissement des données. Ce rafraichissement est cependant nécessaire pour afficher les nouveaux messages.
Ici, ce rafraichissement n'intervient que si il y a des messages récents, et non pas de façon régulière.
Pour ce faire, une page se rafraichit elle même toutes les 5 secondes, mais dans une frame de taille 0 : on ne verra pas de clignottement. C'est la page cVide.php.

gestion des messages
Dans cette version, seul les 50 derniers messages sont conservés, ce qui est amplement suffisant et permet de ne pas trop ralentir le tout.
L'ajout d'un message se fait dans le fichier cSaisie.php, et la consultation est effectuée grâce à cMessages.php
L'affichage des messages est tout simple, et consiste seulement à include le fichier des messages dans la page...
La saisie est un peu plus complexe, en revanche :
    - gestion du code javascript, envoyé dans le message
      Pour des raisons de sécurité, tout ce qui se situe entre <script> et </script> est effacé. Le code html est, quant à lui, interprété.
      Voici le code de suppression du javascript :
<?
while (ereg("<script.*</script>", $message)) {
    $message = ereg_replace("(.+)<script.*</script>(.+)", "\\1 \\2", $message);
}
?>


    - gestion des smileys
      le code du smiley, envoyé dans le message, est remplacé par son image. Ce code est généré par le fichier cSmileys.php, et est en fait tout simplement une petite transformation du nom de l'image.

gestion des smileys
Afin de ne pas avoir à taper le nom et le chemin complet de son image, chaque smiley est associé à un code, qui sera saisi dans le message et retrnasformé à l'insertion dans le fichier des messages.
Cette gestion se fait en 2 étapes :
    - affichage de la liste des smileys
      cette page cSmileys.php permet de ne pas avoir à retenir le code de tous les smileys. Aisni, en choisissant parmi la liste un smiley, son code sera rapatrié dans le formulaire de saisie.
      le code d'affichage de la liste des smileys est le suivant :
<?
// parcours du répertoire qui contient les smileys, et remplissage du tableau
$lesM = dir("images/smileys/");
$i = 0;
while ($entryName = $lesM->read()) {
    if ( ($entryName!=".") && ($entryName!="..") ){
        $tabM[$i] = $entryName;
        $i++;
    
}
$lesM->close();
BubbleSort($tabM); // tri suivant le nom

$i = 0;
// boucle d'affichage des images
echo "<table width=\"100%\" align=\"center\">";
while ($i<count($tabM)) {
   echo "<tr><td width=\"100%\" align=\"center\">";
   echo "<a href=\"#\" onClick=\"javascript:chx_smiley('";
   echo substr($tabM[$i], 0, strLen($tabM[$i])-4) . "');\">";
   echo "<img src=\"images/smileys/" . $tabM[$i] ."\"></a></td></tr>";
    $i++;   
}
echo "</table>";
?>


      et la fonction qui permet de rapatrier le code du smiley en fonction de son nom :
<script language="javascript">
function chx_smiley(sNom) {
    opener.saisie_message.message.value = opener.saisie_message.message.value+" [S"+sNom+"S] ";
    opener.saisie_message.message.focus();
    window.close();
}
</script>


      Le code sera toujours entouré de [S et S], des "marqueurs", qui pemettront pas la suive de repéré le smiley dans le message.
    - transformation du code en chemin+nom de l'image à afficher
      cette opération est effectuée dans cSaisie.php, après récupération du message, et avant insertion dans le fichier.
      Script de récupération du nom de l'image en fonction de son code :
<?
while (ereg("\[S.*S\]", $message)) {
    $message = ereg_replace("(.+)\[S(.+)S\](.+)", "\\1<img src='images/smileys/\\2.gif'>\\3", $message);
}
?>



gestion des connexions/déconnexions
Afin de savoir qui est connecté au chat, il est nécessaire de stocker une information au login, puis de l'effacer lors que la fenêtre du chat se ferme.
    - connexion
      lorsque le login est saisie, et que la page de création des frames est appelée , un fichier est créé, dans le répertoire datas. Son nom est le pseudo de la personne conecté. Peu importe ce qu'il contient, l'important est son existence.
      Si, lors de la connexion, le pseudo est déjà utilisé, une erreur survient, et la personne n'entre pas sur le chat.
      Code de gestion de l'existence du pseudo :
<?
if (file_exists("datas/" . $log)) {
    die("<META HTTP-equiv='refresh' content='0;URL=index.php?interdiction=2'>");
} else {
    die("<META HTTP-equiv='refresh' content='0;URL=main.php?log=" . $log . "'>");
}
?>


      Code de création du fichier :
<?
$tmp = fopen("datas/" . $log, "w");
fputs($tmp, "sdfsdfd");
fclose($tmp);
?>


    - déconnexion
      la déconnexion est gérée lors de la fermeture de la frame principale. Une petite fenêtre s'ouvre, et le seul code consiste à supprimer le fichier correspondant au pseudo utilisé. Le fichier qui fait cette action est cFin.php.
      Code de destruction du fichier :
<?
unlink("datas/" . $log);
?>




VOIR AUSSI
formulaires
gestion ds fichiers
expressions régulières
exercices sur les mots de passe

Pour pouvoir écrire dans ce forum, identifiez-vous !

 Lire  05/09/2007 de alain75
bonjour, Pourquoi,apres avoir telecharger le module ...
  v1.3p © ASP-PHP.net 2002  

Wargoat le 28/01/2004 (153 494 hits)
Didier Téléchargez gratuitement !!!
7 logiciels illimités dont Visual Studio Pro et SQL Server 2005 !
SQL Server 2008 ß !
[gratuit] 11-12-13 février
les MS TechDays 2008 !!!
Au fil des news  
Dreamweaver CS3 + XML + Ajax - Création d'une région détail
Dans cet article, je vais vous montrer comment utiliser la technique région détail, avec Spry
PHP - joli arborescence dynamique
Magazines - Le N°104 de Programmez est disponible
PHP - PhPBB 3.0.0 !!!
[MAJ] Université de Sherbrooke - située dans un beau coin du Québec, l'Estrie...
- Ajout du programme d'imagerie et de médias numérique - Le département de mathématiques et ...
Magazines - Le N°103 de Programmez est disponible
PHP - Calcul jours ouvrables entre dates, gestion fériés
PHP - WampServer 2.0, la nouvelle version de WAMP5 !
SharePoint 2007 et Workflows Designer - Part 2 - Modifions un workflow dans SharePoint 2007
Dans la première partie, nous avons vu comment créer un WorkFlow dans MOSS avec SharePoint ...
Modifier le ruban de Word 2007 avec Open XML -
Open XML est un format de document bureautique flexible : structure basée sur l'Open Packaging ...
La corbeille de SharePoint 2007 - Fonctionnement de la corbeille de SharePoint 2007
Une des nouveautés de SharePoint 2007 est la mise en place de la corbeille pour chaque site. Il est ...
SharePoint 2007 et Workflows Designer - Part 1 - Créer un workflow simple dans SharePoint 2007
L'automatisation de Workflows, ou Flux de travail, résulte d'une volonté d'amélioration de ...
CSS - Dégradé de couleur
Magazines - Le N°102 de Programmez est disponible
Dreamweaver CS3 + Mysql - Formulaire de redirection
Suite au coup de pouce de DB77, je vous propose ce petit script pour améliorer vos pages Internet. ...
[MAJ] Tutoriel AJAX simple - En avant vers le WEB2.0
Mis à jour le 26/10/2007
Magazines - Le Hors-Série .Net de Programmez est disponible
LINQ et vous - Part 2 - Le .NET Framework 3.5 décortiqué !
Ce nouvel article fait suite à mon premier article de cette nouvelle collection « LINQ et vous ». ...
Présentation des KPI dans SharePoint - Présentation des KPI dans SharePoint 2007
Nous verrons au travers de cet article une présentation détaillée de ce qu'est un KPI et dans quel ...
LINQ et vous - Part 1 - Evolutions du .NET Framework - Visual Studio 2008
Voilà plus d'un an que je n'ai plus posté d'articles sur ma communauté préférée. Il était temps ...
Agenda - 21-22 novembre : Le Forum PHP 2007 !
Microsoft - Essayez gratuitement MS Expression Studio !!!
Les Utilisateurs dans SharePoint - La gestion des utilisateurs dans SharePoint
SharePoint dont le coeur est l'outil collaboratif, Windows SharePoint Services. Chaque utilisateur ...
Magazines - Le N°101 de Programmez est disponible
Hebergement - hébergement de forum gratuit - créer un forum.
Revue de presse - Nouvelle mise à jour chez Adobe
PHP - import csv vers bdd avec verification
PHP5 - Csv2array
PHP - Framework PHP5 - PoppyFramework
Le Moteur de Recherche de MOSS 2007 - Installer le moteur de recherche de MOSS 2007
Nous avons vu dans un précédent article comment mettre en place le moteur de recherche dans un site ...
PHP5 - incrementation alphanumerique
Magazines - Le N°100 de Programmez est disponible
Agenda - Adobe vous donne rendez-vous du 4 au 9 septembre..
ABAP leçon 1 : Les variables - Auteur : Jerome Fortias
je me devais de continuer mon travail de vulgarisation à SAP. En parallèle à mon site destiné aux ...
Agenda - Nov 2007 : Les TechEd Developers à Barcelone !
Microsoft - Vista SP1 et XP SP3 pour bientôt !
Le Moteur de Recherche de WSS V3 - Installer le moteur de recherche de WSS V3
Parmi les évolutions de Windows SharePoint Services V3, on trouve le moteur de recherche. Nous ...
PHP - array2xml convertie un array en xml
Revue de presse - Flash Player 9 Update beta
PHP5 - class Timer - ajouter/enlever du temp au time unix
Tutorial : HTML | Scripting | ASP-PHP | ASP.net | SQL Server | XML
Sharepoint | XAML | Pocket | Dreamweaver | VML | Divers
  Scripts : Scripting | ASP-PHP | ASP.net | Divers
  Boutique | Annuaire | Bannières | Météo | Tribune | Partenariats
v3 © Didier 2003   
 
 Codes Sources Wygwam ASP-magazine CodePPC DotNet Project Groupes Utilisateurs Microsoft MVP TechNet El Roubio The Inquirer FR