hi!
mit http:// gehts ja nicht.
Natürlich nicht, dafür müsste der entsprechende User ja einen Web-Server bei sich installieren.
Wie sage ich also dem Skript, wie es eine Nachricht an eine bestimmte Adresse schicken soll?
Du musst das anders sehen: das Skript verschickt nicht an irgendjemanden eine Nachricht, sondern entscheidet, ob jemand der ein bestimmtest Skript aufruft, diese Nachricht erhält. Im folgenden eine kurze Erklärung, wie ich das realisieren würde.
Du könntest die Nachrichten zb. folgendermaßen in der Datei speichern:
VonName&AnIP&Nachricht
wobei du für AnIP die IP-Adresse des Users einsetzt, an den die Nachricht gehen soll. Falls sie an alle adressiert ist, steht dort eben ein *. Dann sollte die Nachrichten-Datei beispielsweise so aussehen:
=== cut ===
Hans&*&Hallo Leute!
Fritz&*&Hallo Hans, wie geht's...
Fritz&123.456.321.654&Ich muss dir noch was geheimes sagen...
Hans&*&Hallo Fritz!
...
=== cut ===
Dann verwendest du ein Skript, das die obige Datei anzeigt. Dieses Skript wird von jedem Benutzer im Chat immer wieder aufgerufen. Und in diesem Skript kannst du dann auch die IP-Adresse des Benutzers überprüfen, dem die Daten gerade angezeigt werden. Und nur wenn die in der obigen Datei angegebene IP-Adresse mit der des Benutzers übereinstimmt, dann wird die Nachricht ausgegeben. Beispiel:
=== cut ===
#!/usr/bin/perl -w
print "Content-type: text/html\n\n<html><head><title>Chat</title></head><body>\n";
open(DATEI, "<messages.txt");
@lines = <DATEI>;
close(DATEI);
for (@lines)
{
($from, $to, $text) = split(/&/);
if ($to eq "*" || $to eq $ENV{'REMOTE_ADDR'})
{
print "<p><b>$from</b>: $text</p>\n";
}
}
print "</body></html>";
=== cut ===
Voraussetzungen dafür, dass obiges funktioniert, sind natürlich:
...dass du nicht eine HTML-Datei schreibst und diese dann immer wieder anzeigst, sondern ein Skript verwendest, das die HTML-Datei aus der Datei mit den Nachrichten bei jedem Aufruf dynamisch erzeugt.
...dass in der aktuellen Userliste die IP-Adresse jedes Benutzers gespeichert ist.
Ich hoffe, das war jetzt alles und ich habe nichts vergessen :-) Wenn weitere Fragen bestehen, frag ruhig...
bye, Frank!