|
|
avr
11
2006
|
Ajouter des fonctionnalités de chat de base à votre site ASP |
|
|
|
Programmation -
ASP/.Net/PHP
|
|
Ecrit par jice
|
|
11-04-2006 |
|
New Page 1
Ajouter des
fonctionnalités de chat de base à votre site ASP.
1- Présentation
Il s'agit d'un code très simple. Pour le stockage des messages saisis par les
chatteurs et leurs pseudos, il n'utilise pas de base de données mais seulement deux fichiers
texte (l'un pour les messages et l'autre pour les
pseudos des visiteurs). Un fichier .wav est lancé à chaque fois
qu'un
nouveau message est saisi. En outre un bouton permet à chaque utilisateur de changer de
conversation en effaçant les fichiers et en recréant d'autres. Avant d'intégrer
ce code à votre application, il faut être conscient que les bases de données
sont mieux optimisées que les fichiers textes pour la gestion des
opérations d'écriture (dépendamment du nombre de visiteurs et de messages,
les performances de votre site pourraient être affectées).
Avant de commencer à coder créer 2 fichiers vides .txt
que vous nommerez "login.txt" et "messages.txt".
Regroupez-les dans un
dossier nommé "messages". A noter qu'il faut autoriser les opérations
d'écriture sur ce répertoire sinon le programme ne fonctionnera pas. Il
faut aussi ajouter un fichier .wav (gling.wav par exemple) au répertoire ainsi
crée.
2- Les scripts :
Création d'une page principale qui sera le conteneur de plusieurs frames.
<html>
<head>
<title>Le mini chat</title>
</head>
<frameset rows="9%,60%,*" framespacing="0" border="0" frameborder="0">
<frame name="haut" src="banniere.html" scrolling="no" noresize target="_self">
<frame name="centre" src="frame.html" scrolling="auto">
<frame name="bas" src="form.asp" scrolling="no" noresize target="_self">
<noframes>
<body>
</body>
</noframes>
</frameset>
</html>
Création d'un frame
caché qui va inclure la page message.asp, frame.html
|
<html>
<head>
</head>
<frameset rows="*">
<frame name="principal" src="message.asp">
<noframes>
<body>
</body>
</noframes>
</frameset>
</html>
|
|
|
Création d'une page pour les
bannières : banniere.html
|
<html>
<head>
<title>bannière</title>
<base target="_self">
</head>
<body topmargin="2" leftmargin="2" bgcolor="#CCCCFF" style="border-bottom: 1 solid #C0C0C0">
<table border="0" cellpadding="0" cellspacing="0" width="100%" height="46"><tr>
<td width="100%" bgcolor="#CCCCFF" height="45" valign="top" style="font-size: 10 pt;
margin-left: 10; margin-top: 0">
<font size="2" face="Verdana" color="#0000FF">
<span style="background-color: #FFB951"> Derniers messages :</span></font></td>
<td width="100%" bgcolor="#CCCCFF" height="45" valign="top"
style="font-size: 10 pt; margin-left: 10; margin-top: 0">
<p align="right">
<font face="Verdana" size="1" color="#0000FF">
<span style="background-color: #FFB951">v
</span></font>
<span style="background-color: #FFB951">
<font face="Verdana" size="1"color="#0000FF">1.0
</font></span></p>
</td>
</tr>
</table>
</body>
</html>
|
|
|
Enfin création d'une dernière page qui servira à lancer le minichat.(pop up
Javascript)
|
function minichat()
{window.open('mini_chat.html','_blank','toolbar=0,location=0,directories=0,
status=0,scrollbars=0,resizable=0,copyhistory=0,menuBar=0,width=395,height=250')
}
<a href="javascript:minichat()">Aller sur le minichat</a>
|
|
|
Passons maintenant au formulaire dans
une page que vous appellerez form.asp
|
<html>
<!--//DEBUT-->
<%
' on demande au serveur de créer un objet de type fichier
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
' on désigne le chemin de deux fichiers intitulés "message.txt" et "login.txt"
' Le premier va être le fichier qui va collecter les messages
' Le second va collecter les pseudos des utilisateurs dans le but de controler leur validité
cible = Server.MapPath("messages/messages.txt")
logs = Server.MapPath("messages/login.txt")
' Si on clique sur le bouton ok ou
' si le champ message n'est pas vide alors
if ((request.form("go")<>"") or (request.form("message")<>"")) then
session("log")="in"
' On controle la validité du pseudo avec le fichier login.txt grâce au cookie
if ((request.cookies("login")<>"") and (request.cookies("login")<>request.form("pseudo"))) then%>
<script>
alert("Vous ne pouvez pas changer de pseudo en cours de conversation !")
</script>
<%
session("log")="out"
end if
if request.cookies("login")="" then
set controle = FSO.OpenTextFile(logs,1)
while not controle.atendofstream
if request.form("pseudo")=controle.readline then
session("log")="out"
response.cookies("login")=""
%>
<script>
alert("Ce pseudo est en cours d'utilisation !")
</script>
<%
end if
wend
end if
if session("log")="in" then
if session("login")="" then
set ajout_pseudo= FSO.OpenTextFile(logs,8)
ajout_pseudo.writeline request.form("pseudo")
response.cookies("login")=request.form("pseudo")
response.cookies("login").Expires = date+1
end if
' Ajout du nouveau message dans le fichier si tout est ok
' on ouvre le fichier en mode "écriture à la fin du fichier" désigné par le nombre 8
set ajout = FSO.OpenTextFile(cible,8)
' on incrémente le pseudo et le message dans le fichier
ajout.writeline formatdatetime(now(),4)&" "&request.form("pseudo")&" > "&request.form("message")
' on vide l'objet Fichier
set FSO = nothing
end if
' Sinon, si on clique sur "Tout Effacer" alors
elseif request.form("destruct")<>"" then
session("login")=""
session("log")="out"
' Suppression du fichier en cours...
set efface_message = FSO.getfile(cible)
set efface_logs = FSO.getfile(logs)
efface_message.delete
efface_logs.delete
' ...et on en recrée un nouveau
FSO.CreateTextFile(cible)
set ajout = FSO.OpenTextFile(cible,8)
ajout.writeline "NOUVELLE CONVERSATION"
ajout.writeline "-----------------------------"
FSO.CreateTextFile(logs)
' enfin on vide l'objet Fichier
set FSO = nothing
' fin de condition
end if
%>
<head>
<base target="_self">
<title></title>
</head>
<body topmargin="2" leftmargin="5" style="font-family: verdana; font-size: 8 pt;
border-top: 1 solid #C0C0C0" bgcolor="#CCCCFF">
<!--//Contrôle javascript du formulaire-->
<script><!--
function controle_Validator(theForm)
{
if (theForm.pseudo.value == "")
{
alert("Identifiez vous !");
theForm.pseudo.focus();
return (false);
}
if (theForm.pseudo.value.length > 8)
{
alert("Pas plus de huit caractères pour le pseudo !");
theForm.pseudo.focus();
return (false);
}
return (true);
}
//--></script>
<!--//Fin du script de contrôle-->
<!--//Début du formulaire-->
<form method="post" action="form.asp" onsubmit="return controle_Validator(this)">
Votre pseudo :
<input type="text" name="pseudo" size="20"
value="<%=request.cookies("login")%>" style="font-size: 10 px">
<input type="submit" value="Tout effacer !" name="destruct" style="font-size: 10 px">
<br><br>Votre message :<br>
<input type="text" name="message" size="49" style="font-size: 8 pt; font-family: verdana">
<input type="submit" value="ok" name="go" style="font-size: 10 px">
</form>
<!--//Fin du Formulaire-->
</body>
<!--//FIN-->
</html>
|
|
|
Enfin la page de
visualisation des messages intitulée message.asp
|
<html>
<!--//DEBUT-->
<%
' On demande au serveur de créer un objet de type Fichier
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
' On désigne le chemin et le fichier cible à atteindre
liste = Server.MapPath("messages/messages.txt")
' on ouvre le fichier en mode lecture désigné par le nombre 1
set message = FSO.OpenTextFile(liste,1)%>
<!--//Partie Head-->
<head>
<%
' controle du nombre de lignes et
' renvoi des chaines de caractères
' trouvées dans le fichier
' On désigne par le A le nombre de ligne
a=0
' Tant qu'il y a des lignes jusqu'a la fin du fichier
While not message.atEndOfStream
' Ajout de 1 à la variable A
a=a+1
' Renvoi des chaines de caractères trouvées et formatées en html
response.write("<font face=verdana size=1>"&message.readline &"<br>")
Wend
' Si la valeur de la variable session appellée nbline est différente de la variable A alors
if session("nbline")<>a then
' Exécute le fichier gling.wav 1 fois%>
<bgsound src="gling.WAV" loop="1">
<%
' la variable session nbline (nombre de ligne d'avant) vaut
' alors la valeur de A (nombre de lignes actuelles)
session("nbline")=a
' sinon
else
' la variable session nbline vaut alors la valeur de A tout simplement.
session("nbline")=a
' on vide l'objet Fichier
set FSO=nothing
' fin de condition
end if%>
</head>
<!--//Fin Partie Head-->
<!--//Partie Body-->
<!--//La page se réactualise toutes les deux secondes (1000 vaut 1 seconde)-->
<body onload="window.setTimeout ('history.go (0)',2000)">
<!--//On désigne par la balise "bas_de_page", la fin visuelle de la page-->
<a name="bas_de_page"></a>
<!--//On fait un renvoi visuel automatique vers la page en bas-->
<script>
{window.location.href="#bas_de_page"}
</script>
</body>
<!--//FIN-->
</html>
|
|
|
Référence:
Le code source reproduit ci-dessus est extrait du site asp-php.net.
http://www.asp-php.net/scripts/asp-php/mini-chat.php?page=4
|
|
Dernière mise à jour : ( 20-06-2006 )
|
|
Professional Development with Web APIs : Google, eBay, Amazon.com, MapPoint, FedEx |
|
Professional Development with Web APIs : Google, eBay, Amazon.com, MapPoint, FedEx
Un livre idéal pour les programmeurs .Net qui veulent intégrer à
leurs applications de commerce électronique, les fonctionnalités
offertes à travers les services web de Google, Fedex, Ebay, Amazon et
MapPoimt.
Après un bref rappel des concepts de base, ce livre aborde
des sujets avancés comme l'appel des API à partir d'appareils mobiles ou
des applications développées avec VBA, l'envoi d'un fax via l'API Paypal,
la création de votre propre web API (cette liste n'est pas limitative).
A la fin de ce livre vous trouverez des études de cas qui montrent
comment utiliser les API précitées pour développer rapidement une
application CRM et un un tableau de bord électronique.
Références
http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764584456.html, Denise M. Gosnell, Wrox,
ISBN: 0-7645-8445-6,
April 2005,
324 pages
|
|
|