
Dies ist ein Update zum ursprünglichen Chatraum, das wir hier auf CSS-Tricks veröffentlicht haben. In gewisser Weise ist die Technologie dieselbe. Wir werden PHP verwenden, um mit dem Server zu kommunizieren, jQuery, um den Chat am Laufen zu halten, und die Chats selbst werden wie in der ersten Version in .txt-Dateien gespeichert.
Was sich geändert hat, ist die Hinzufügung einiger neuer Funktionen
- Benutzernamen sind für aktuell chatende Benutzer eindeutig
- Sie können eine Liste der aktuell chatenden Benutzer sehen
- Es gibt mehrere Räume zum Chatten
Ein wenig MySQL
Während die erste Version keine Datenbank verwendete, setzen wir für diese Version ein wenig MySQL ein. Im Download befindet sich eine Datei namens Setup.sql zum Erstellen der initialen Datenbank. MySQL wird nicht für die Chats selbst verwendet, sondern für zwei andere Dinge:
- Verfolgen aktiver Benutzer
- Die Räume
Wenn jemand zum Chat beitritt, wählt er einen Benutzernamen. Mit etwas jQuery wird eine AJAX-Anfrage gesendet, um zu prüfen, ob dieser Benutzername derzeit in der Datenbank verwendet wird. Wenn er verwendet wird, erhalten Sie eine Warnung

Andernfalls wird angezeigt, dass es in Ordnung ist

Wenn es in Ordnung ist und Sie auf "Chats beitreten" klicken, wird dieser Benutzername in die Datenbank eingetragen und weitere Prüfungen auf seinen Namen werden anderen mitteilen, dass der Name nicht verfügbar ist. Inaktive Benutzer werden aus der Datenbank entfernt.
Räume hinzufügen/bearbeiten/entfernen
Die Namen der Chaträume werden in der Datenbank gespeichert. Um einen neuen Chatraum hinzuzufügen, fügen Sie einfach eine neue Zeile zur Datenbank hinzu mit dem Namen des Chatraums und dem Dateinamen der Textdatei, in der Sie den Chat speichern möchten

Dann müssen Sie nur noch sicherstellen, dass die Textdatei auf dem Server am richtigen Ort liegt und über die richtigen Schreibrechte verfügt (siehe Download für die korrekte Platzierung).
jQuery
Ich bin sicher, Sie haben inzwischen bemerkt, dass wir uns keinen tatsächlichen Code angesehen haben. Das ist Absicht. Der gesamte Code ist im Download (siehe unten) verfügbar. Es ist nicht so überwältigend viel, dass es unüberschaubar wäre, aber ich denke, es ist zu viel für ein Standard-Schreib-Tutorial/Überblick. Stattdessen wollen wir einen Überblick geben, wofür es verantwortlich ist
Benutzername-Prüfung: Auf der Startseite des Chats, wenn Sie Ihren Benutzernamen wählen, beobachtet jQuery dieses Texteingabefeld. Wenn Sie ein Zeichen eingeben (bei keyup), fragt es eine bestimmte PHP-Datei (via AJAX), ob dieser Benutzername bereits verwendet wird. Die PHP-Datei antwortet mit Ja oder Nein, und eine entsprechende Meldung wird auf dem Bildschirm angezeigt.
Nachrichtenfeld: Wenn ein Benutzer in das Textarea zum Senden einer Nachricht tippt, beobachtet jQuery dieses Feld und stellt sicher, dass der Text eine bestimmte Zeichenzahl nicht überschreitet (gesetzt durch das maxlength-Attribut des Textareas)
Nachricht senden: Wenn die Eingabe-/Enter-Taste im Chatfeld gedrückt wird, wird der Wert zur Verarbeitung gesendet. PHP schreibt den Text in die Textdatei.
Chat aktualisieren: Alle paar Sekunden fragt jQuery eine PHP-Datei, um die Textdatei zu prüfen, ob neue Zeilen vorhanden sind. Wenn ja, werden diese angezeigt.
Funktionen, die er nicht hat
- Sie können Leute nicht rausschmeißen
- Er verarbeitet keine Sonderzeichen
Sie wollen diese Sachen hinzufügen? Ich würde mich freuen und ich werde dies aktualisieren.
Demo und Download
UPDATE: Es gab ein SICHERHEITSPROBLEM mit einem bestimmten Aspekt, das Zugriff auf jede Datei auf dem Server gewähren konnte. Ein Leser konnte mir zeigen, wie er öffentlich auf meine wp-config.php WordPress-Datei zugreifen konnte, die natürlich sehr sensibel ist. Die Schwachstelle liegt in der Datei update.php, die einen "state"- und "file"-Parameter akzeptiert. Wenn direkt darauf zugegriffen wird und ein relativer Dateipfad verwendet wird, können geschützte Dateien auf diese Weise erreicht werden. Wenn es behoben ist, werde ich den herunterladbaren Code aktualisieren.
UPDATE: Jason Gradwell schlug Schutzmaßnahmen auf der PHP-Seite vor, die erfordern würden, dass die Datei nur über Ajax und nur von einer bestimmten Quelle aufgerufen wird.
<?php if (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_REFERER']!="http://your-site.com/path/to/chat.js") {
die();
} ?>
Danksagungen
Besonderer Dank an Kenrick Beckett, der den ursprünglichen Code erstellt hat, und an Jason Lengstorf für die Überprüfung und einige sicherheitstechnische Aufräumarbeiten.
Für die Zukunft
Hier ist eine Zusammenfassung von Dingen, die Leute in den Kommentaren vorgeschlagen haben oder die mir sonst noch gut gefallen würden
- Sicherheitsproblem von oben behoben
- Flutkontrolle (so etwas wie nur 1 Nachricht alle 5 Sekunden senden können)
- Link zum Abmelden (PHP-Sitzung löschen)
- Erlauben Sie etwas HTML, aber nicht anderes (Whitelist von Tags). Zum Beispiel <a href=””> erlauben, aber JavaScript trotzdem entfernen. Möglicherweise ein paar Schaltflächen für HTML (WYSIWYG?). Code-Hervorhebung für Inhalte in <code>-Tags.
- Registrierung erlauben, um einen bestimmten Benutzernamen dauerhaft zu haben (und alles, was dazu gehört, wie "Passwort vergessen")
- Schutz vor nicht existierenden Chatraum-Namen, z.B. /Chat2/room/?name=LOL
- Unterstützung für alle Sonderzeichen (UTF-8)
- Private Nachrichten (@) (nur die Person, die diesem Benutzernamen entspricht, wird sie sehen)
- Leute rausschmeißen / Leute per IP sperren (nur als Administrator-Benutzer, oder vielleicht nur eine Blacklist von IPs)
- Mehr Emoticons
- Eine tatsächliche Absendetaste haben (für mobile Geräte, die JavaScript unterstützen, aber keine regulären Tastenereignisse haben)
- Automatische Filterung von Schimpfwörtern
- Externes Anmeldesystem nutzen, wie Twitter oAuth, Google Login oder Facebook Connect
- Benutzernamen als E-Mails, dann Gravatare verwenden
- Links mit 4-Buchstaben-Erweiterungen funktionieren nicht (z.B. .info)
- Long Polling, anstatt alle paar Sekunden anzufragen
Unglaublich! Einfach hervorragend.
Hier sind jedoch einige Vorschläge für eine zukünftige Version
1. Abmelde-Link
2. Unbegrenzte Zeichen in einer Nachricht
3. Eine WYSIWYG-Toolbar (HTML-Formatierung)
4. Code-Hervorhebung (PHP, Java…)
5. Registrierungsoption
6. Möglicherweise ein Admin-Panel
Abgesehen davon ist es einfach die beste Chat-App aller Zeiten!
.
“Das ist großartig! Hier sind die 6 Wege, wie ich denke, dass Sie es ändern sollten:”… #client
Hurra, Sie sollten all die Dinge einbauen und hier einreichen.
Das Gelbe vom Ei!
Chris,
Sie sollten flock() für txt-Dateien verwenden.
Nur ein paar Vorschläge zur Verbesserung der aktuellen Chat-App, ohne die Funktionalität wirklich zu erweitern.
Fügen Sie eine "Abmelden"-Schaltfläche hinzu
Fügen Sie eine Validierung für das Benutzernamenfeld hinzu (derzeit, wenn Sie das Formular mit einem leeren Wert absenden, werden Sie einfach zu blank.php weitergeleitet)
Ziemlich coole kleine App. Wie lange bewahren Sie die Textdatei auf? Ist sie auf eine bestimmte Anzahl von Zeilen beschränkt?
Reich
Andere Funktionen
Kodierung UTF-8
‘@’, um eine private Nachricht zu senden
Gute Arbeit, Chris!
Nun, wenn Sie mit Fiebug einige Dinge im JS-Code ändern, können Sie die ganze Sache durcheinander bringen …
GROSSARTIG! Ich habe darauf wie 2 Monate gewartet. Fragen Sie Kenrick, er wird Ihnen sagen, dass ich ihn die ganze Zeit damit genervt habe :D. Schön, dass es endlich da ist, ich freue mich darauf, es auf meiner Website zu implementieren.
Gut gemacht, es sieht großartig aus. Allerdings sind anonyme Chats nicht immer eine gute Idee..
Ich denke, Sie sollten gegen eine
nicht existierenden Chat-Namen
Übrigens, gute Arbeit!
Es scheint ein wenig seltsam, dass, wenn Sie MySQL für einen Teil der Anwendung verwenden, warum nicht auch für die eigentlichen Gespräche?
Nur eine MySQL-Datenbank zu haben, um auf Flatfiles zu verweisen, ist ein wenig umständlich, finden Sie nicht?
Vielleicht, vielleicht auch nicht. Ich mag die Idee mit den Textdateien. Sie können einfach die Datei nehmen und haben sofort eine Transkription der Unterhaltung, die Sie überall wiederverwenden können. Das Löschen ist so einfach wie das Markieren des gesamten Textes und das Löschen. Der Umgang mit Datenbanken ist viel umständlicher. Obwohl ich sagen muss, dass man mit den Daten in einer echten Datenbank wahrscheinlich viel mehr machen könnte.
Wie groß können diese Dateien werden? Wenn sie zu groß werden, beeinträchtigt das die Reaktionszeit?
Ich verstehe, dass ein komplettes Flat-File-Chat-Skript für die einfache Verwaltung, die Sie beschreiben, vorhanden ist.
Ebenso verstehe ich die Verwendung von MySQL für alles, da es Ihnen viel zusätzliche Kontrolle und Manipulationsmöglichkeiten über die Daten gibt.
Ich verstehe nicht, warum Sie sich auf BEIDES verlassen. Persönlich ist die Verwendung beider Systeme umständlich und äußerst ineffizient.
Wenn alles in SQL wäre, könnten Sie Ihre Chats mit einer Abfrage abrufen, während Sie im aktuellen Setup zwei benötigen; eines davon erfordert auch I/O-Zugriff auf das Dateisystem.
Ich bin mir nicht sicher, wie "äußerst ineffizient" das ist. Es ist nicht so, dass wir zwei verschiedene Frameworks laden… Sie schreiben in eine Textdatei, Sie schreiben in eine Datenbank, praktisch das gleiche "Gewicht" an Ereignissen.
Das Öffnen einer MySQL-Verbindung (oder der Zugriff auf eine Datei) ist ineffizient. Sie wollen die Nutzung so weit wie möglich reduzieren.
Ehrlich gesagt, für die Menge an Daten, die Sie in Ihrer SQL haben, könnten Sie diese auch als einfachen PHP-Array in die Datei selbst speichern.
Entfernen Sie die SQL-Datenbank, schöne Flatfile.
Übrigens, wenn Sie dies wirklich erweitern wollen (wie in Ihren aktuellen Verbesserungen für die Zukunft aufgelistet) und Sie bei Flatfile bleiben, verwenden Sie SQLite. Viel besser zu verwalten als Ihr eigenes selbst entwickeltes System.
Ich muss Chris hier zustimmen. Es ist wirklich schön, direkt aus dieser Textdatei greifen zu können. Außerdem scheint es effizienter zu sein, diese Datei zu schreiben und neu zu schreiben, als für jede Zeile des Chats eine neue Zeile in einer Datenbank zu erstellen. Außerdem sollten die Dinge, die er in der Datenbank speichert, offensichtlich in einer Datenbank gespeichert werden. Ich stimme der SQLite-Empfehlung nicht zu. Bleiben Sie bei MySQL für alles außer dem eigentlichen Chat und Textdateien für den Chat. Ich denke, es ist ein schönes System. Ich bin allerdings kein SQL-Experte.
Warum sind Sie so gegen SQLite? Es ist ein brillantes System, fast so schnell wie das reine Hinzufügen von Zeilen.
Es ist im Grunde die Leistung von MySQL in einer Flatfile. Es gibt nur wenige (unübliche) Befehle, die es nicht gut ausführen kann.
Ich glaube, Benjamin Mayo hat hier einen sehr guten Vorschlag gemacht!
Genau meine Meinung.
Mir scheint, entweder ganz auf die DB setzen oder ganz auf die Textdateien. Normalerweise hätte ich mich für die DB entschieden, aber hier könnte es sehr praktisch sein, auf jede DB-Verbindung verzichten zu können und die Konfiguration in einer eigenen Datei zu speichern.
Scheint so sauberer zu sein.
Den Betrieb eines Chatraums mit SQL wird Ihren SQL-Server ruinieren und er wird sehr schlecht. Vertrauen Sie mir, wenn Sie viele Besucher haben, ist es die schlimmste Idee überhaupt.
Was ist eigentlich der beste Weg? Können Sie die Vor- und Nachteile für jede Methode nennen?
Sie müssen ein paar Dinge in Ihrem PHP überprüfen ;). Es ist möglich, direkt in die Textdatei mit dem PHP-Skript zu schreiben.
Erstaunliche Arbeit, Bro….
Mach weiter so
Was ich gerne integriert sehen würde
* UTF8 / Sonderzeichen (das ist wirklich essentiell)
* Private Nachrichten (@)
* Leute/IPs rausschmeißen/sperren
* "Abmelden"-Schaltfläche
* Option, seinen Nick/Namen zu registrieren (Passwort und E-Mail erforderlich – Kontoverifizierung)
( * Ein Admin-Panel wäre großartig)
Was ist mit einem Plugin für WP daraus? (und es mit der Benutzerdatenbank und dem Admin-Panel integrieren…)
Danke für die großartige Web-App ;)
Wirklich nett.
Es wäre nützlich, eine Abmeldeschaltfläche zu haben und Leute rausschmeißen zu können.
Eine weitere Sache, über die man nachdenken sollte, ist, dass Sie vielleicht häufiger nach neuen Nachrichten suchen sollten, da es etwas langsam erscheint.
Danke Chris… großartiges Skript..! :)
Ich halte Minimalismus für sehr wichtig (d.h. keine Zugriffslisten von Moderatoren, Administratoren, Farben, Schriftarten etc.)
Ein paar Dinge, die meiner Meinung nach in der App enthalten sein sollten
* Anzeige des Benutzernamens, der beigetreten oder gegangen ist (rot blinken, dann ausblenden beim Verlassen) – Beigetretener Nickname in Gelb und nach ein paar Sekunden per setTimeout nach Weiß überblenden, wie der Rest)
* Zeitstempel der empfangenen Nachrichten (Ich mag die Funktionalität, die letzten paar Zeilen zu sehen, die beim Betreten eines Raumes gesagt wurden, aber sie könnten für mich über 3 Stunden alt sein)
Was mir gefallen hat:
* Die Benutzerliste sehen
* Mehrere Räume haben
* Live-Tippprüfung für nutzbaren Nicknamen
* Die letzten paar Zeilen aus dem Log sehen, wenn man einem Raum beitritt
Was mir nicht gefallen hat:
* Emoticons mit grauen Hintergründen auf Weiß
* Horizontales Scrollen
* Wenn ich Enter drücke, sehe ich, wie es in die nächste Zeile geht und dann abgesendet wird. Es sollte bei diesem Tastendruck auf false zurückkehren (Nur ein kurzer Moment des Mauszeigers | -Symbol sichtbar)
* HTML-Tags entfernt (in htmlentities umwandeln?)
Die Emoticons haben bei mir keinen grauen Hintergrund, nur einen Schatten. Verwenden Sie IE 6?
Egal… sie *haben* graue Hintergründe. Sie sind für mich aber so hell, dass ich sie nicht gesehen habe.
Ich glaube nicht, dass alle einen grauen Hintergrund haben – zum Beispiel hat das Lächeln einen grauen Hintergrund
https://css-tricks.de/examples/Chat2/room/smiles/smile.gif
Aber das große Lächeln nicht
https://css-tricks.de/examples/Chat2/room/smiles/bigsmile.png
Eine wilde Vermutung wäre, dass alle .gif's immer noch einen grauen Hintergrund haben und die PNG's schön transparent sind.
Das ist großartig!
Sie haben also nichts dagegen, wenn Leute versuchen, Dinge hinzuzufügen, richtig?
Der Missbrauch ist definitiv schwer zu kontrollieren. Vielleicht fügen Sie eine Funktion hinzu, um nach bestimmten Wörtern zu suchen und sie abzumelden, wenn sie sie verwenden…
Ich habe tatsächlich schon einmal ein Skript wie dieses gesehen. Sehr cool. Anstelle von F**K würde es heißen. Tu es nicht noch einmal. Du hast es wieder getan und es hat dich automatisch rausgeschmissen. Das war Hightech im Vergleich zu anderen Chats.
Sie können schlechte Wörter herausfiltern, indem Sie "preg_replace" in der Datei "process.php" ändern. Ich habe die Datei aktualisiert und können sie hier herunterladen: http://tmg33.com/misc/process.php.zip
Ich habe die Datei process.php.zip aktualisiert, sodass sie nicht mehr case-sensitiv ist.
Danke Justin! Ich habe es in den Live-Chat eingefügt, es funktioniert großartig beim Filtern der wenigen traditionellen Flüche, die ich zum Filtern eingefügt habe.
Da ist ein Idiot mit Ihrem Namen, der ihn mit Cum und anderem Zeug spammt.
Ich persönlich würde ein IP-Adressen-Feld in die MySQL-Tabelle einfügen.
Finden Sie den Kerl. Und sperren Sie ihn von css-tricks.com, er schätzt Ihre harte Arbeit oder Ihre Demos offensichtlich nicht.
Fügen Sie ein verstecktes IP-Feld beim Absenden des Formulars mit PHP hinzu :)
Ich stimme zu… aber was, wenn es 100 Leute waren? Ich denke, er hat gut daran getan, nur die Demo lahmzulegen.
Guter Anfang und hat gutes Potenzial. Ich würde gerne die nächste Version davon sehen.
Freddy Gonzalez sagt, dass da ein Idiot mit Ihrem Namen ist, der es mit Cum und anderem Zeug spammt.
???
http://www.gravatar.com/avatar/79ca93c8b5871f0fbeee4b8c9d35cbaf?s=32
Eine Sache, die mich gestört hat, war, dass die Chatbox beim ersten Laden der Seite nur 5 Zeilen anzeigte. Das machte es schwierig, mitten in ein Gespräch einzusteigen.
Ich habe es geändert, um die letzten 50 Zeilen anzuzeigen, indem ich diesen Code in der Datei chat.js geändert habe
"...
success: function(data){
state = data.state-50;
updateChat();
..."
Ein paar weitere Fehler
* Wenn Links mit einer Erweiterung von 4 Zeichen (wie *.info oder *.name) gepostet werden, wird er nach dem 3. Zeichen abgeschnitten. In process.php prüft der RegEx nur auf {2,3}, sollte auch 4 erlauben.
* Nicht existierende Chaträume. Obwohl das Chatten nicht möglich ist, funktioniert die Benutzerliste. Ich würde sagen, verschwenden Sie keine Ressourcen. Blockieren Sie es oder erlauben Sie nicht-offizielle Räume vollständig.
* Noch einmal, ich bin mir nicht sicher, warum Sie htmlentities(strip_tags()) verwenden, ich denke, htmlentities() ist genug, besonders in einem HTML/CSS-Chatraum ;) – vielleicht sogar gut genug, um Backticks zu verwenden, um es als vorformatierten Text zu machen (eine einfache [span]-Hülle um den mit Backticks versehenen Text mit Whitespace-Pre sollte ausreichen)
—
TeMc
Schöne Anwendungen, es ist wirklich einfach und voller Funktionen.
Dies ist ein großartiges Beispiel, danke
Hallo Chris, das ist eine großartige Web-App. Wie würdest du einen privaten Raum erstellen, damit seltsame Leute nicht am Chat teilnehmen, wenn du das zum Beispiel auf deiner Website hosten wolltest? Damit nur eingeladene Benutzer an der Konversation teilnehmen können.
Ich war erstaunt über den Chat und die Tatsache, dass wir in den Test-Chaträumen keine Schimpfwörter hatten, tatsächlich war es sehr international und alle waren sehr nett ;-)
Ich werde diesen Chat vielleicht auf einer privaten Seite ausprobieren…
Wow, toller Chat… ist es möglich, einen eigenen Gruppen-Benutzer zu erstellen?.
Sehr coole Chatroom-App. Die Ajax-Funktion funktioniert gut. Vielen Dank, dass Sie dies erstellt haben.
Das ist wirklich eine gute Chat-App.. :) Habe sie geliebt..
Wie alle vorgeschlagen haben, wäre Abmelden eine gute Option zusammen damit…
Und es wäre auch gut, wenn Sie eine App wie eine Eins-zu-Eins-Chat-App bereitstellen könnten, also privaten Chat zwischen zwei Personen
Ich hatte vor einiger Zeit eine Modifikation von Kenrick Becketts Originalskript vorgenommen, mit Funktionen wie einer aktuellen Benutzerliste und einem "vor x Zeit"-Ding bei Nachrichten wie bei Facebook, Smiley-Unterstützung mit einer Smiley-Auswahl und farbigen Spitznamen basierend auf den ersten 6 Zeichen des Nick-Hashs (und leicht abgedunkelt), damit es für denselben Nick konsistent ist. Ich habe es hier hochgeladen, sehen Sie es sich an: http://stagas.com/chat/
Wow, das ist cool. Sie sollten das als Videocast machen, damit wir Anfänger es besser verstehen können.
Das ist ein Chatroom-Skript, das ich vor ein paar Jahren gemacht habe (als der Ajax-Hype begann) (zuletzt im Frühjahr 2007 daran gearbeitet)
http://www.christophdum.com/_dev/chat/
So funktioniert es
Sobald der Benutzer eine Nachricht abschickt, wird diese in einer MySQL-DB gespeichert (zur Aufbewahrung eines Transkripts) und gleichzeitig wird eine neue Textdatei erstellt, die NUR diese eine Nachricht mit dem Benutzernamen und anderen Parametern (wie ob es sich um eine persönliche Nachricht an einen bestimmten Benutzer handelt) enthält – der Dateiname ist eine Zahl (die letzte Post-ID)
Wenn Sie also dem Chat beitreten, fordert er im Grunde die letzte Nachrichten-ID vom Server an (die z.B. 1000 ist), versucht dann, die Textdatei mit dem Namen 1001.txt vom Server abzurufen – wenn die Datei existiert, wird der Inhalt (die Nachricht) angezeigt und nach 1002.txt gefragt – wenn sie nicht existiert, bedeutet das nur, dass es keinen neuen Beitrag gibt, also versucht es, 1001.txt in einer halben Sekunde (oder einer Sekunde) erneut vom Server abzurufen.
Es gibt ungefähr 20 solche Dateien im Chat-Ordner, und jedes Mal, wenn eine neue Nachricht erstellt wird, wird die 21. Datei gelöscht (damit sie sich automatisch bereinigt).
Solange ein Benutzer keine Nachricht eingibt, werden weder der PHP-Parser noch MySQL aufgerufen
Ich habe in einer früheren Version eine einzelne TXT-Datei ausprobiert, aber flock() ist eine Qual – das Erstellen einer einzelnen Datei für jede Nachricht hat dieses Problem für mich gelöst
Mit dieser Technik habe ich während des NFL-Drafts etwa 100 gleichzeitige Benutzer bedient (was meiner Meinung nach für eine HTTP-basierte Anwendung ziemlich gut ist – und es könnten mehr sein, wenn Sie die Timeouts etwas erhöhen (wodurch die Antwortzeit etwas langsamer wird)).
Es hat eine Benutzerliste, private Nachrichten, Admin-Funktionen, Ignorierfunktion, mehrere Räume und eine wirklich nette Funktion: Wenn Sie eine Weile gechattet haben und etwas finden möchten, das früher im Transkript geschrieben wurde, scrollen Sie einfach nach oben und suchen Sie danach – wenn eine neue Nachricht eintrifft, scrollt das Skript nicht automatisch (wodurch Sie finden können, wonach Sie im Transkript gesucht haben) – wenn Sie dann zum Ende des Transkripts zurückscrollen, scrollt das Skript automatisch weiter.
PS: Entschuldigen Sie mein schlechtes Englisch
Wurde das Sicherheitsproblem behoben?
Sieht aber großartig aus!!
Gute Frage… ich möchte es wissen.
Na los Leute!! Sie können den Code herunterladen und selbst überprüfen.. seien Sie nicht faul
Ich mag die neuen Funktionen wirklich. Vielleicht wird ChatV3 ein neues Projekt anstoßen?
Mein Interview mit Chris Coyier
Ich wollte Sie wissen lassen, dass ich Ihr Interview in Google Chrome (auf Windows XP) angesehen habe und der Text so hell ist, dass ich ihn kaum lesen kann. Ich habe es in Firefox geöffnet und es sah normal aus.
Ich bin mir nicht sicher, ob etwas in Chrome anders gerendert wird oder was.
Vielen Dank, Jason.
Wie können wir einen UTF-8-Nicknamen einfügen?
Ein sehr gutes Tutorial wie immer. Eine sehr interessante Idee, die ich ausprobiert habe, bisher nur begrenzt getestet, aber sie hat Potenzial!
Wieder gut gemacht
Mit diesem können Benutzer sich abmelden: http://tmg33.com/misc/logOut.php.zip .
Haha! Aus Sicherheitsgründen gesperrt.
Als ich diesen Beitrag zum ersten Mal las, dachte ich, es könnte ein Sicherheitsrisiko geben. Hilft die Bereinigung der Daten dabei überhaupt, oder ist das nicht möglich?
Vielen Dank....
hoho! Das ist cool~ Ich liebe es!
Ist es möglich, den vollständigen Chat im Chatraum zu behalten? Derzeit bleiben nur die letzten etwa 5 Zeilen dort erhalten, nachdem man einige Minuten weg war. Wie kann ich das machen? Ich kann keine Option finden...
[2] Wurde das Sicherheitsproblem behoben?
Hallo Chris, das ist großartig. Danke, dass du das gemacht und hier veröffentlicht hast – ich würde gerne wissen, ob das Sicherheitsproblem behoben wurde.
Kannst du mehr Details zum Sicherheitsproblem geben? Ich sehe nicht, wie die Kenntnis des Dateipfads dir erlaubt, die Datei zu öffnen. Ich möchte es einfach wissen, da dies hilft, sicherzustellen, dass zukünftige Projekte sicherer sind.
nette Sache, ich werde es in ein WordPress-Plugin verwandeln
das funktioniert auf localhost.
aber wenn ich es auf einen Webserver hochlade, werden Chat & Liste der Chat-Benutzer nicht angezeigt… aber die Erfolgsaufzeichnung in der txt-Datei funktioniert...
Was kann ich tun??
Ja, es ist in Ordnung. Aber es gibt Probleme mit IE. Wenn ich mich nicht irre.
Bitte klären Sie das.
Großartig! Dürfen wir das Aussehen des Chats anpassen, "chat v2" entfernen, unsere eigenen Smilies verwenden usw.?
Chris, gute Arbeit, ich frage mich, ob mir jemand bei der Installation und Erstellung eines Raumes helfen kann.
Danke
Es ist seltsam, dass es in IE funktioniert, aber nicht in Firefox. Ich frage mich, ob es mit bestimmten Explorer-Versionen inkompatibel ist.
Wie kann ich chinesische Zeichen im Benutzernamen und im Chat verwenden?
Zuerst einmal vielen Dank für ein tolles Produkt!
Ich verwende die 2. Version Chat2, aber wenn ich eine Nachricht eingebe und Enter drücke, passiert nichts! Ich kann weitertippen und das Textfeld wird jedes Mal größer, wenn ich Enter drücke... Was könnte falsch sein?
Eine Antwort wäre willkommen. Vielen Dank
Updates: Es funktioniert! Ich glaube, es lag daran, dass ich einige Funktionen durcheinandergebracht habe, als ich versucht habe, die Whispering-Methode hinzuzufügen!
Ich habe einen einfachen Vorschlag!
Es wäre für Benutzer wie mich sehr hilfreich, wenn es im Paket auch ein kurzes Tutorial gäbe!
Vielen Dank! Es funktioniert großartig!
Über die Datei „README for Whispering.txt“
Ich hatte später so viele Probleme mit der Hinzufügung der Whispering-Option! Später stellte ich fest, dass es viele Fehler und Texte gibt, die völlig aus ihrer richtigen Form und Zeile gefallen sind. Bitte überprüfen Sie den Whispering-Text, da ich so viele Probleme hatte und ihn nicht lösen konnte! Eine bessere Erklärung für das Whispering und neuer Code sind nötig. Der Rest funktioniert perfekt!
Schade, dass ich den Whispering-Code nicht beheben konnte.
Viel Glück
Hallo,
Die Algorithmen, die Sie zum Entfernen von JS und anderem gefährlichen Code verwendet haben, reichen nicht aus. Sie sollten die bereits geschriebene Lösung namens HTMLPurifier verwenden. Persönlich werde ich dies nicht so installieren. Wenn ich mehr Zeit hätte, würde ich selbst zur Lösung beitragen.
Positiv ist, dass die Behebung nicht lange dauern würde, wenn man sie sich ansieht.
Darüber hinaus verstehe ich, dass es für die Zwecke der Konfigurationsdatei am besten wäre, wenn diese Datei nicht öffentlich zugänglich wäre.
Abgesehen davon ist die Benutzeroberfläche nett, aber etwas CSS für die Schaltflächen würde das Ganze abrunden.
Insgesamt gute Arbeit
@Christoph Dum
Kann ich Ihren Code testen?
toller Code...
Nur zur Info – Sie sollten Ihre eingebundenen Dateien überprüfen. Einige Leute haben ein paar farbenfrohe Wörter in den Test-Chats verwendet, die entfernt werden sollten, bevor jemand verärgert wird.
Ansonsten ein schönes Skript – schade, dass es in einer alten jQuery-Version ist, scrollen funktioniert nicht mit iPhone Safari.
Shervin Sardari schreibt