» Start & Installation » ASP-Grundlagen » VBScript » Datenbanken » Erweiterte Techniken » Fehlercode-Suche » FAQ » Forum für aspfehlercodes » ASP » JavaScript » ASCII & ANSI » HTTP-Statuscodes » Codepage » LCID » VBScript » JScript
|
Link: Wichtiger Hinweis in eigener Sache!
| Autor: Klaus Keller | Erstellt am: 2003-06-01 | Geändert am: 2006-02-15 | Aufrufe: 17849 |
Tipp 35: Einfacher ASP-Chat
Mit diesem Tipp möchte ich Ihnen einen einfachen Chat, welcher komplett in ASP geschrieben ist, präsentieren. Dabei ist der Chat so aufgebaut, daß dieser einfach erweitert werden kann. Möchten Sie z.B. daß der Chat nur von einem bestimmten Personenkreis genutzt wird, so kann dies über einen Passwortgesicherten Login erfolgen. Ein Beispiel hierfür habe ich in Tipp 17 bereits vorgestellt.
(Update) Ab sofort ist es möglich bestimmte Nicknames zu sperren, z.B. "Admin". Ebenfalls wird ab sofort geprüft, ob ein Name bereits vorhanden ist, ist dieser vorhanden wird eine Fehlermeldung dem Besucher angezeigt. Die in dieser Seite aufgezeigte Skripte enthalten derzeit noch nicht die Änderungen, im Download sind die Änderungen natürlich enthalten. Die Skripte in dieser Seite werden schnellstmöglich aktualisiert.
Der Chat hat insgesamt 4 Dateien: Die Default.asp beinhaltet das Formular, um den Nickname anzugeben. Sobald dieser angegeben wurde, wird erneut die Default.asp angegeben, um das Frame mit den Nachrichten und dem Formular darzustellen.
Die Message.asp listet die Nachrichten auf. Die MessageForm.asp beinhaltet das Forum für den Text. Die Seite Logout.asp löscht den Nickname. Für das Verwenden des Chats werden Session-Cookies verwendet.
Die Nachrichten werden dabei in Application-Variablen gespeichert, so daß eine Datenbank nicht erforderlich ist. Natürlich sind alle Nachrichten weg, wenn z.B. der Server neu gestartet werden. Aber dies sollte sicherlich kein Problem sein.
Zunächst einmal die Default.asp. Der vollständige Quellcode aus der Datei:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| <% @ Language="VBScript" LCID = 1031 %><% Option Explicit Response.Buffer = true Session.LCID = 1031 Session.Timeout = 30 Response.Expires=0 Response.AddHeader "Pragma","no-cache" Response.AddHeader "cache-control", "private" Response.Expiresabsolute = Now() - 1000 Response.CacheControl = "no-cache"
Public i
If len(Session("Nickname")) = 0 AND len(Request.Form("Nickname")) = 0 THEN Call LoginForm() Else Call CheckIn() End If
Public Sub CheckIn() If len(Request.Form("Nickname")) > 0 Then Session("Nickname")=Request.Form("Nickname") Application.Lock For i = 20 to 2 Step -1 Application("ChatText" & i) = Application("ChatText" & i-1) Next Application("ChatText1") = "<font color=""#0020dF"">** " & _ Session("Nickname") & _ " betritt den Chatraum **</font>" Application.Unlock End If %> <html> <head> <title>ASP-Chat</title> </head> <frameset rows="*,70" frameborder=0 border=0 noresize framespacing=0> <frame src="Messages.asp" noresize> <frame src="MessagesForm.asp" scrolling="no" noresize> </frameset> </html> <% End Sub
Public Sub LoginForm() %> <html> <head> <title>ASPChat - Login</title> </head> <body bgcolor="#ffffff"> <table align=center><tr><td align=center> <br><br> Bitte geben Sie Ihren Nickname für den Chatraum an: <form method="post" action="default.asp" id=form1 name=form1> <input name="Nickname" id="Nickname" type="text" size=10><br> <input type="submit" value="Eintreten" id=submit1 name=submit1> </form> </td></tr></table> </body> </html> <% End Sub %> |
Bis Zeile 13 dürfte wohl alles bekannt sein, ASP-Header und Variablendeklaration. Von Zeile 15 bis 19 wird geprüft, was getan werden soll, der Chatraum darstellen, oder die "Login-Maske". Die Login-Maske wird dann dargestellt, wenn in der Session-Variablen kein Wert steht, und wenn kein Name von der Login-Form übergeben wurde.
Wenn ein Nickname übergeben wurde, wird der Nickname von Zeile 22 - 43 in der Prozedur Checkin in einer Session-Variablen gespeichert. Anschliessend wird eine Hinweis darauf gesetzt, daß der Benutzer xy den Chatraum betreten hat. Zuletzt wird in der Prozedur der HTML-Code für die Frames gesetzt.
Die Prozedur LoginForm stellt lediglich das Formular für die Angabe des Nicknamens dar.
Die Datei Messages.asp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <% @ Language="VBScript" LCID = 1031 %><% Option Explicit Response.Buffer = true Session.LCID = 1031 Session.Timeout = 30
Public i %><html> <head> <title>ASPChat - Nachrichten</title> <meta http-equiv="refresh" content="5;Messages.asp"> </head> <body bgcolor="#ffffff"> <font size="12px" style="font-size:12px"> <% For i = 20 to 1 Step -1 Response.Write(Application("ChatText" & i) & "<br>") Next %> </font> </body> </html> |
In dieser Datei werden die Beiträge dargestellt. Dafür wird der Text aus Application-Variablen ausgelesen. Wie Sie von Zeile 17 bis 19 erkennen können, wird hierfür eine Schleife verwendet. Wenn Sie mehr oder weniger an Nachrichten darstellen, möchten, so müssen Sie lediglich die Schleife anpassen, z.B. von i = 20 auf i = 50, oder Ihre gewünschte Anzahl. Wichtig hierbei: Sie müssen die Schleife in allen Dateien anpassen!
Die Datei MessagesForm.asp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| <% @ Language="VBScript" LCID = 1031 %><% Option Explicit Response.Buffer = true Session.LCID = 1031 Session.Timeout = 30 Response.Expires=0 Response.AddHeader "Pragma","no-cache" Response.AddHeader "cache-control", "private" Response.Expiresabsolute = Now() - 1000 Response.CacheControl = "no-cache"
Public i
If len(Session("Nickname")) = 0 Then Call ShowMessageNewLogin() Else If len(Request.Form("ChatText")) > 0 THEN Application.Lock For i = 20 to 2 Step -1 Application("ChatText" & i) = Application("ChatText" & i - 1) Next Application("ChatText1") = "<b>" & Session("Nickname") & _ ":</b> " & Request.Form("ChatText") Application.Unlock End If Call ShowMessageForm() End If
Public Sub ShowMessageForm() %> <html> <head> <title>ASPChat - Nachrichteneingabe</title> </head> <body bgcolor=#317dd1> <font size=2>Bitte geben Sie Ihre Nachricht und klicken Sie auf Senden</font><br> <table border=0 cellspacing=0> <tr> <form method="post" action="MessagesForm.asp" id=form1 name=form1> <td> <input id="ChatText" name="ChatText" type="text" size=30> </td> <td> <input type="submit" id="submit1" name="submit1" value="Nachricht absenden"> </td> </form> <td> </td> <form method=post action="Logout.asp" target="_top" id=form2 name=form2> <td valign=top> <input type="submit" id="submit1" name="submit1" value="Logout"> </td> </form> </tr> </table> </body> </html> <% End Sub %>
<% Public Sub ShowMessageNewLogin() %> <html> <head> <title>ASPChat - Nachrichteneingabe</title> </head> <body bgcolor=#317dd1> <font size=3> Sorry, Sie sind nicht eingeloggt, bitte loggen Sie sich <a href="Default.asp" target="_parent">hier</a> ein. </font><br> </body> </html> <% End Sub %> |
Die MessagesForm.asp beinhaltet das Formular für das Schreiben von Beiträgen. Bis Zeile 15 alles wie gewohnt: Header und Variablendeklaration. In Zeile 15 wird zuerst einmal abgefragt, ob überhaupt ein Nickname im Session-Cookie ist. Nur als Prüfung, falls das Session-Cookie abgelaufen ist, Session-Timeout wurde auf 30 Minuten gesetzt. Und natürlich als zusätzlich Prüfung, ob überhaupt ein Nickname angegeben wurde. Falls kein Nickname im Session-Cookie steht, wird die Prozedur "ShowMessageNewLogin" aufgerufen, mit dem Hinweis auf das Login-Formular.
In Zeile 18 wird geprüft, ob überhaupt ein Text angegeben wurde, wenn ja, wird dieser gesetzt.
Nur zur Erinnerung: Damit nicht gleichzeitig Application-Variablen geändert werden, werden diese gesperrt, dies erfolgt mit Application.Lock. Mit Application.Unlock wird Application wieder entsperrt, erst dann ist wieder ein lesender oder schreibender Zugriff möglich.
Die Prozedur ShowMessageForm ab Zeile 30 zeigt das Formular, um Beiträge zu schreiben.
Logout.asp Sehr einfach erklärt die Aufgabe der Logout.asp: Logout und Nickname aus dem Session-Cookie entfernen. Allerdings wird auch eine Meldung gesetzt (Benutzer xy verlässt den Chatraum). Der Quellcode der Datei:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| <% @ Language="VBScript" LCID = 1031 %><% Option Explicit Response.Buffer = true Session.LCID = 1031 Session.Timeout = 30
Public i
If len(Session("Nickname")) > 0 Then Application.Lock For i = 20 to 2 Application("ChatText" & i) = Application("txt" & i - 1) Next Application("ChatText1") = "<font color=""#00d000"">** " & _ Session("Nickname") & _ " verlässt den Chatraum **</font>" Application.Unlock
Session("Nickname")="" Session.Abandon End If %> <html> <head> <title> ASPChat - Logout </title> </head> <body> <font> Logout wurde erfolgreich durchgeführt. Besuchen Sie uns bald wieder! </font> </body> </html> |
Herunterladen: tip35.zip
|
|