Benutzererkennung im Internet

Autor Sergy Alpin

*Die Rechtschreibung im Artikel kann fehlerhaft sein, aber Java, JavaScript, HTML - Quelltexten sind fehlerfrei.
 

Wenn Sie für Ihre Unternehmens- oder private Webseiten beschäftigt sind, dann wissen Sie bereits, daß für ein gutes Interneteintritt einen Benutzererkennungseffekt  sehr wichtig ist.

Es gibt etwas starke in dem Effekt. Wenn Benutzer auf anderem Ende des Welt erkannt wird, dann vergießt er es nie.

Es ist für mich ein Wunder gewesen, wenn ich am Februar 1997 bei zweitem Besuch auf Al Acro JavaLand Webseiten (http://www.cityknights.net/alacro/) eine Meldung gemerkt habe, die sagte zum mir etwa: "Du bist zweite mal bei mir. Findest Du meine Seiten so interessant?"

Und wenn es bei Ihnen um ein virtuellen Kaufhaus geht oder wenn Sie exotische Elementen wie VRML - Welten oder Plug-ins  in Ihre Seiten implementiert wollen, dann ist Browser - Erkennung für Sie dringend empfohlen.
 

1. Kein Kaffe ohne Cookies...

Einfacher Weg, um einen konkreten Benutzer zu identifizieren, ist die Client - PC Variable Cookie zu nutzen. Die Cookie ist bei Netscape Browser in eine Datei Namens cookies.txt unter Netscape - Verzeichnis auf Festplatte gespeichert. (cookies.txt - Abbildung 1). Internet Explorer speichert jede Cookie in eine einzelne Datei in Windows - Verzeichnis.
 
Abbildung 1
 
# Netscape HTTP Cookie File 
# http://www.netscape.com/newsref/std/cookie_spec.html 
# This is a generated file!  Do not edit. 
 

www.snafu.de FALSE /~alpin FALSE 946684799 visits_to_me 37

 
Seit halbes Jahr sorgt sich das cookie JavaApplet auf allen meinen Webseiten für Benutzererkennung (Quelltext - Abbildung 2).


cookie JavaApplet

Wenn ein Browser meine Seite, wo cookie JavaApplet implementiert ist, besucht, bekommt er in Cookie eine Zeile mit dem Inhalt:

www.snafu.de FALSE /~alpin FALSE 946684799 visits_to_me 1

Das macht Server mit der Befehlszeile in HTTP-Header, die in allgemeinem Fall so aussieht:

Set-Cookie: NAME =VALUE; expires= DATE IN GMT FORMAT; path=PATH; domain= DOMAINNAME; secure

Erklärung für cookies - Parametern finden Sie in der Tabelle 1.

Um die Zeile

www.snafu.de FALSE /~alpin FALSE 946684799 visits_to_me 1

in der Datei cookies.txt zu erzeugen, muß Server Befehlszeile
 
Set-Cookie: visits_to_me =1; expires= Friday, 31-Dec-99 23:59:59 GMT;

an Browser senden. Optionale Parametern, die nicht eingegeben sind, generiert Server automatisch.
 

Tabelle 1
 
cookie - Parameter Bedeutung Beispielswert Bemerkung 
NAME identifiziert das cookie - Zeile (String) visits_to_me Eingabe erforderlich
VALUE ein beliebiges String 1 Eingabe erforderlich
expires Datum in GMT Format. Wenn Datum verlaufen ist, löscht Browser die Zeile expires =Friday, 31-Dec-99 23:59:59 GMT; in cookies.txt ist Datum in verschlüsselte Form wie 946684799 darstellt optional 
 
path Nur die Servern, deren Domainname Parameter domain und Pfad - path entsprechen, dürfen diese cookie - Zeile lesen und ändern* path=/~alpin optional
domain Server Domainname kann vollständig oder verkürzt  sein domain= www.snafu.de 
oder  
domain=.snafu.de
optional
secure Wenn die Schlüsselwort secure in cookie eingegeben wird, dann darf die Cookie nur mit „Secure Socket Layers" durch Netz übertragen. Ohne Eingabe überträgt sich Cookie in unverschlüsselte Form optional 
 * Wenn Domainname verkürzt ist,  zum Beispiel www.snafu.de, folgt ihr in cookies.txt ein FALSE. Es bedeutet, daß die cookie - Zeile für Server www.snafu.de und ähnliche wie www.berlin.snafu.de lesbar ist.
 

Für die Verwaltung von Inhalten der Datei cookies.txt nutzt cookie JavaApplet Eigenschaft cookie von JavaScript Objekt document.

Wenn eine Webseite, wo cookie JavaApplet implementiert ist, in Browser erscheint, liest Applet die Datei cookies.txt durch, findet Zeile mit NAME visits_to_me und nachfolgendem VALUE - Wert (zum Beispiel 1). Dann addiert Applet zu dem Wert 1, schreibt in Applets - Bereich „Hi, thanks for Your 2 visit(s) on this pages!" und schreibt die Zeile mit neuem VALUE - Wert in cookies.txt über.

Wenn Cookie - Zeile mit dem NAME visits_to_me nicht vorhanden ist, erzeugt Applet die Zeile und begrüßt den neuen Gast mit erstem Besuch.

Erscheinungspunkten von JavaScript - Objekt sind die Zeilen 53 und 62 (sehe Quelltext - Abbildung 2).

In Zeile 53 liest JavaScript - Objekt cookies.txt und speichert sein Inhalt  in String cookie.

In Zeile 62 schreibt das Applet mittels JavaScript - Objektes neue Zeile - Inhalt in cookies.txt.
 
 

Um cookie JavaApplet unter Windows 95 zu erzeugen, benötigen Sie einige Werkzeuge:

ein Text - Editor wie Notepad;
Java Developers Kit 1.0.2, das Sie von der Seite http://java.sun.com/products/JDK/1.0.2/ herunterladen können;
Classen - Bibliothek java_301, die als java_301 - Datei in Netscape Navigator 3.0 Gold - Verzeichnis ist.

Installieren Sie Java Developers Kit 1.0.2 in die Verzeichnis zum Beispiel C:/java/. Kopieren Sie die Datei java_301 in Verzeichnis C:/java/lib/. Erzeugen Sie eine neue Verzeichnis C:/Cookie/.

Öffnen Sie eine neue Datei Namens cookie.java in Notepad.

Nehmen Sie cookie.java Quelltext (Abbildung 2) mit Cut & Paste - Technologie. Demnächst besuchen Sie auch meine Webseite http://www.snafu.de/~alpin/sources.html , wo einige meine andere Quelltexte stehen. Um sie zu nutzen, brauchen Sie einen Paßwort.
 

Abbildung 2
 
//javac -classpath C:/java/lib/classes.zip;C:/java/lib/java_301 cookie.java //1 
import java.io.*; //2 
import java.util.*; //3 
import java.awt.*; //4 
import java.applet.*; //5 
import netscape.javascript.JSObject; //6 
import netscape.javascript.JSException; //7 
   
public class cookie extends Applet { //8 
String Author; //9 
StringBuffer cookietext =new StringBuffer(); //10 
String KeyText="visits_to_me="; //11 
String VisitsText = new String(); //12 
String rasdelitel=";"; //13 
   
public void init() { //14 
Author = getParameter("Author"); //15 
setBackground(Color.black); //16 
} //17 
   
   
public void start() { //18 
String Text=";expires=Friday, 31-Dec-99 23:59:59 GMT"; //19 
readCookie(rasdelitel); //20  
if (key(KeyText, rasdelitel).equals("0"))  VisitsText="1"; //21  
else { //22  
Integer Visits= new Integer (key(KeyText, rasdelitel)); //23  
int i = Visits.intValue(); //24  
 i++; //25  
VisitsText = VisitsText.valueOf(i); //26  
} //27 
Text= KeyText+VisitsText+Text; //28  
writeCookie(Text); //29  
repaint(); //30  
} //31 
   
public void paint (Graphics g){ //32 
Font f= new Font("TimesRoman",Font.BOLD,15); //33 
g.setFont(f); //34 
g.setColor (Color.green); //35 
String Meldung ="Hi, thanks for Your "+VisitsText+" visit(s) on this pages!"; //36  
Dimension dim; //37 
int appHoehe; //38 
int appBreite; //39 
dim=size(); //40 
appHoehe = dim.height; //41 
appBreite = dim.width; //42 
FontMetrics fm = g.getFontMetrics(); //43 
int strBreite = fm.stringWidth(Meldung); //44 
int strHoehe = fm.getHeight(); //45 
int xPos = (appBreite - strBreite)/2; //46 
int yPos = (appHoehe+strHoehe)/2-3; //47 
if (Author.equals("Ihre Name")) //48 
g.drawString(Meldung,xPos,yPos); //49  
} //50 
   
public void readCookie(String rasdelitel){//51  
try { //52 
String cookie =(String)JSObject.getWindow (this).eval ("document.cookie"); //53  
StringTokenizer st = new StringTokenizer(cookie, ";", false); //54 
while (st.hasMoreTokens()) { //55 
cookietext.append (st.nextToken().trim() +rasdelitel); //56 
} //57 
}  catch (Exception ex) {} //58 
} //59 
   
public void writeCookie(String Text){ //60 
try { //61 
JSObject.getWindow (this).eval ("document.cookie ='" +Text+"';"); //62 
} //63 
catch (Exception ex) { } //64 
} //65 
   
public String key(String KeyText, String rasdelitel) { //66 
int nachalo = cookietext.toString().indexOf(KeyText); //67 
int konez = cookietext.toString().indexOf(rasdelitel,nachalo); //68 
if(nachalo !=-1)   return cookietext.toString().substring(nachalo+16, konez); //69 
else return "0"; //70 
} //71 
}//72
 

In Zeile 20 (sehe Quelltext - Abbildung 2) ruft Applet die Funktion readCookie(String rasdelitel) mit einem Parameter „;", der Trennzeichen in Cookie bezeichnet. Die Funktion speichert in StringBuffer cookietext alle Paaren NAME=VALUE, die Server aus cookies.txt lesen kann.

In Zeilen 21-26 wird Wert für VisitsText definiert. In Zeile 21 wird in if - Anweisung Funktion key(String KeyText, String rasdelitel)  aufgerufen, die aktuelle VALUE von cookie mit NAME  „visits_to_me=" als String ermittelt und als String zurück liefert.

Wenn Browser erste mal die Seite besucht, ist VALUE = „0" und String VisitsText gleich „1" wird. Wenn VALUE ungleich „0" ist, dann erhöht sich VALUE in Zeilen 23-26 auf +1 und in VisitsText gespeichert wird.

Einschließlich bildet sich in Zeile  28 ein neuen Text für cookie - Zeile, der in Zeile 29 Funktion writeCookie(Text) in cookies.txt schriebt.

In Zeile 30 aufgerufene Methode repaint() bildet neuen Aussicht von cookie JavaApple:
in Zeile 36 wird String Meldung definiert, der VisitsText enthält;
in Zeile 49 wird Meldung als String geschrieben.

Speichern Sie Datei cookie.java in C:/Cookie/.

Öffnen Sie MS-DOS-Eingabeaufforderung - Fenster und wechseln Sie Verzeichnis nach C:/Cookie/.

Kompilieren Sie cookie.java mit dem Befehl:

javac -classpath .;C:/java/lib/classes.zip;C:/java/lib/java_301 cookie.java

Das classpath C:/java/lib/java_301 benötigt Java - Compiler, um Packages netscape.javascript.JSObject und netscape.javascript.JSException aus Classen - Bibliothek java_301 zu exportieren.

Java - Compiler erzeugt cookie.class - Datei in C:/Cookie/ Verzeichnis.

Um cookie JavaApplet zu testen, werden wir eine HTML - Datei (Abbildung 3)  brauchen, die einen Applet - Tag  enthält.

Abbildung 3
 
<HTML> 
<applet code = "cookie.class" width=500 height=22 mayscript = true> 
<param  name = Author value = "Ihre Name"> 
</applet> 
</HTML>
Öffnen Sie in Notepad eine neue Datei, tippen Sie Text von der Abbildung 3 und speichern Sie die Datei mit html - Erweiterung etwa mycookie.html in C:/Cookie/ Verzeichnis.

In Netscape Communicator schalten Sie „Accept all cookies" im Menü Edit/Preferences/Advanced   ein, öffnen Sie mit dem Netscape mycookie.html und lesen Sie Begrüßung: „Hi, thanks for Your 1 visit(s) on this pages!".
 

2.  Netscape, Internet Explorer... wer bist Du?

Die verschiedene auf dem Markt vorhandene Browser haben so unterschiedliche Möglichkeiten, daß zu einem gutem Internet - Stil gehört, die zu checken. Zum Beispiel, wenn Sie Java - Applets auf Ihre Webseiten anbieten wollen, es ist wichtig zu wissen, ob Besuchers Browser Java vollständig unterstützt.

Die Eigenschaften von JavaScript Objekt navigator erlauben Ihrem Server einige Browsers Charakteristiken zu erfahren.

Wenn Sie die Datei mit folgendem HTML - Text (Abbildung 4) in Ihr Browser öffnen, dann wird die Tabelle angezeigt (Abbildung 5).

Abbildung 4
 
<HTML><BODY> 
<SCRIPT LANGUAGE="JAVASCRIPT"> 
<!-- 
HTML="<TABLE BORDER=1><TR VALIGN=TOP>"+ 
   "<TD>1"+"</TD>"+ 
   "<TD>navigator.appCodeName"+"</TD><TD>"+navigator.appCodeName+"</TD></TR>"; 
HTML=HTML+"<TR VALIGN=TOP>"+ 
   "<TD>2"+"</TD>"+ 
   "<TD>navigator.appName"+"</TD><TD>"+navigator.appName+"</TD></TR>"; 
HTML=HTML+"<TR VALIGN=TOP>"+ 
   "<TD>3"+"</TD>"+ 
   "<TD>navigator.appVersion"+"</TD><TD>"+navigator.appVersion+"</TD></TR>"; 
HTML=HTML+"<TR VALIGN=TOP>"+ 
   "<TD>4"+"</TD>"+ 
   "<TD>navigator.userAgent"+"</TD><TD>"; 
if (navigator.appName=="Netscape"){ 
for (i=0;i<navigator.userAgent.length;i++){ 
HTML=HTML+navigator.userAgent[i]; 
} 
} 
else 
HTML=HTML+navigator.userAgent; 
HTML=HTML+"</TD></TR>"; 
HTML=HTML+"</TABLE>"; 
document.writeln(HTML); 

//--> 

</SCRIPT> 
</BODY></HTML> 

 

Abbildung 5**
 
1 navigator.appCodeName  Mozilla Codenamen eines WWW-Browsers* 
2 navigator.appName Netscape Name* 
3 navigator.appVersion 4.01 [en] (Win95; I)  Version und die Betriebssystemplattform Browsers*
4 navigator.userAgent  Mozilla/4.01 [en] (Win95; I) Daten des verwendeten Browser wie sie im HTTP-Protokoll an den aufgerufenen Server übermittelt werden* 
*Kommentare werden in Browser nicht angezeigt ;
**Die Daten für Netscape Communicator 4.01

Die Browser Eigenschaften könnten Sie zum Beispiel zu wissen brauchen, um auf Ihre Webseite zu entscheiden, ob ein Java Applet richtig in diesem konkretem Browser darstellt wird.

Folgendes Beispiel (Abbildung 6) testet, ob Browser ein Netscape ist. Wenn Antwort „Ja" ist, dann wird cookie JavaApplet in Ihre Webseite implementiert.

Abbildung 6
 
<HTML><BODY> 
<SCRIPT LANGUAGE="JAVASCRIPT"> 
<!-- 
HTMLOK="<applet code = 'cookie.class' width=500 height=22 mayscript = true><param  name = Author value = 'Ihre Name'></applet>"; 
HTMLNO="Hallo, "+ navigator.appName+"!"; 
if (navigator.appName=="Netscape"){ 
document.writeln(HTMLOK); 
} 
else 
document.writeln(HTMLNO); 
//--> 
</SCRIPT> 
</BODY></HTML> 
Die if - Anweisung prüft, ob navigator.appName gleich „Netscape" ist. In positivem Fall wird mit document.writeln() das Applet-Tag für cookie JavaApplet in Ihre Webseite geschrieben, in negativem - eine Begrüßung  für andere Browser.
 

3. Schmeckt ein Plug-in dem Browser?...

Was passiert, wann World Wide Web Boom zum Ende ist? Als einen WWW - Browser eine ganz gewöhnliche Teil von Fernseher wird, was wird in PC - Welt für professionelle Nutzung als Erinnerung über heutige Netscape, Internet Explorer und andere Web - Anwendungen bleiben? Einige Leute glauben, daß die Entwicklung von Plug-ins für Netscape oder ActiveX für Internet Explorer einen Weg von jetzigen Browser zu Web - Anwendungen der Zukunft ist.

Mehr über Plug-ins und wie könnte Ihr Server erkennen, welche Plug-ins und MIME (Multipart Internet Mail Extension) Typen Browser unterstützt, erfahren wir bald in nächstem Artikel.

 Copyright © sergy alpin 1998
All rights reserved