Mein Chat
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
aktualisieren
ankern
bettag
buffer
code
einstellen
element
ende
fehler
fehlermeldung
http
inhalt
internet
log
nachricht
problem
setzen
text
textfeld
url
-
Hallo Leute,
wie mach ich es bei meinem Chat, dass wenn ich eine Nachricht absende, dass dann der Chat nicht immer nach oben springt?
Danke im Voraus.
Hier der Chat http://nbettag.de/chat/index.php -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Vor allem solltest du deinen Refresh deutlich höher einstellen, damit du keine Probleme bekommst. Das Aktualisieren im Sekundentakt ist nicht erlaubt soweit ich weiss.
Bitte halte diesbezüglich mal Rücksprache mit einem Knight!
Beitrag zuletzt geändert: 27.6.2010 12:30:12 von karpfen -
karpfen schrieb:
Vor allem solltest du deinen Refresh deutlich höher einstellen, damit du keine Probleme bekommst. Das Aktualisieren im Sekundentakt ist nicht erlaubt soweit ich weiss.
Warum? Was für Probleme? -
bettag schrieb:
Warum? Was für Probleme?
Das erzeugt unnötigen Traffic. Da solltest du unbedingt mal nen Knight fragen, was du als Wert einstellen darfst, so dass der Chat noch als erlaubt gilt! Auf jeden Fall solltest du schon jetzt den Refresh auf minimum 5 Sekunden einstellen, bevor du den genauen erlaubten Wert erfahren hast, nicht dass du hier abgestraft wirst.
Beitrag zuletzt geändert: 27.6.2010 12:32:13 von karpfen -
karpfen schrieb:
bettag schrieb:
Warum? Was für Probleme?
Das erzeugt unnötigen Traffic. Da solltest du unbedingt mal nen Knight fragen, was du als Wert einstellen darfst, so dass der Chat noch als erlaubt gilt!
Ja, ich hab den Chat ja deswegen auf nen anderen Server gelegt, kein LC Server (:
Euch zuliebe ! -
Also erstmal würde ich Ajax benutzen, anstelle von ständigen Refreshes - das hält den Traffic schon gering. iFrames sind mega hässlich - da doch lieber ein DIV-Element mit appendChild(); erweitern.
Als nächstes solltest du ganz unten - also hinter deinen ganzen Nachrichten einen Anker setzen. An diesen kommst du dann mit Javascript via scrollIntoView(Element);
Wenn du dich - entgegen der optimalität - gegen Javascript entscheidest, kannst du dies ebenfalls mti einem Anker machen. Dann musst du allerdings den Inhalt des iFrames auf inhalt.php#anker aktualisieren. Der Inhalt des iFrames müsste dann so aussehen:
Die Quelle des iFrames muss dann beispielsweise chat.php#ende lauten.<html><head></head><body> Inhalt1 Inhalt2 Inhalt3 <a name="ende"> </a> </body></html>
Hatte gerade keine Zeit, mir was ausführliches auszudenken - aber das Prinzip sollte klar sein ;)
-
tplus schrieb:
Also erstmal würde ich Ajax benutzen, anstelle von ständigen Refreshes - das hält den Traffic schon gering. iFrames sind mega hässlich - da doch lieber ein DIV-Element mit appendChild(); erweitern.
Als nächstes solltest du ganz unten - also hinter deinen ganzen Nachrichten einen Anker setzen. An diesen kommst du dann mit Javascript via scrollIntoView(Element);
Wenn du dich - entgegen der optimalität - gegen Javascript entscheidest, kannst du dies ebenfalls mti einem Anker machen. Dann musst du allerdings den Inhalt des iFrames auf inhalt.php#anker aktualisieren. Der Inhalt des iFrames müsste dann so aussehen:
Die Quelle des iFrames muss dann beispielsweise chat.php#ende lauten.<html><head></head><body> Inhalt1 Inhalt2 Inhalt3 <a name="ende"> </a> </body></html>
Hatte gerade keine Zeit, mir was ausführliches auszudenken - aber das Prinzip sollte klar sein ;)
Kannst Du mir es vielleicht umschreiben? Ich würd dir dann den Quelltext geben? (: -
Also hier ein mal eine Variante, die vorest nur auf html&php beruht.
die "index.php":<html> <head> <!-- something, something --> </head> <body> <h1>Supergeiler chat!</h1> <iframe src="chat.php#ende" name="chatscreen"></iframe> <form method="post" action="chat.php?#ende" target="chatscreen"> <input type="text" name="textfeld"> <input type="hidden" name="action" value="send"> <input type="submit"> </form> </body> </html>
und die viel interessantere "chat.php"<?php $logpath = 'secure/log.txt'; // pfad zur log-datei (sollte .htaccess geschuetzt sein.) $refint = '5'; // refresh-intervall $refurl = 'chat.php'; // refresh-url (die url zu diesem dokument) $meta = ""; // weitere meta-angaben if($_GET['method']!='ajax'){ if($_GET['clear']){ $foo = fopen($logpath,"w+"); fclose($foo); } if($_POST['action']=='send'&&$_POST['textfeld']!=""){ $text = addslashes(htmlentities($_POST["textfeld"])); // html&php escapen $ip = $_SERVER['REMOTE_ADDR']; // user-ip $time = time(); // zeit $wfile = fopen($logpath,'a'); // log-datei an einem sicheren ort if($wfile){ fwrite($wfile, "$time:$ip:$text\n"); // datenformatieren und schreiben fclose($wfile); // schlieszen } } echo "<html><head>$meta<meta http-equiv=\"refresh\" content=\"$refint; URL=$refurl#ende\"></head><body>"; // dokuimenten kopf $rfile = fopen($logpath,'r'); // einlesen if($rfile){ while(!feof($rfile)){ $buffer = fgets($rfile); // einlesen if(strlen($buffer)>=4){ $tmp = explode( ":",$buffer, 3); // daten in array packen $time = date("d. M Y H:i:s", $tmp[0]); // zeit $ip = $tmp[1]; // ip $text = $tmp[2]; // text echo "<div class=\"chatmess\">$ip ($time): $text </div>"; // ausgabe als div } } fclose($rfile); // schlieszen } echo '<a name="ende" />'; // anker setzen echo '</body></html>'; // dokument-ende. }else{ /* platzhalter fuer ajax-methode aktuell nicht implementiert */ } ?>
Die "Einstellungen" wirst du schon noch selbst vornehmen müssen, aber es ist ja (wirklich) alles feinsäuberlich kommentiert. Ausserdem könnte es bei IPV6 glaube ich noch probleme geben, fällt mir gerade auf (delimiter unglücklich gewählt)
Wenn da noch jemandem ein fauxpas auffällt: bitte verbessern.
Beitrag zuletzt geändert: 27.6.2010 16:49:17 von tplus -
Bei mir kommt kein Text? :D
Beitrag zuletzt geändert: 27.6.2010 16:21:44 von bettag -
Hier eine Erklärung was die Fehlermeldung bedeutet:
http://www.php-fehlermeldungen.de/topic38.html
Nach dem bekannt ist woran es liegt, dürftest du den Fehler alleine beheben können^^
bettag schrieb: Bei mir kommt kein Text? :D
Davor stand was anderes da^^ der Text oben bezieht sich auf deinen Text vor deinem edit...^^
Beitrag zuletzt geändert: 27.6.2010 16:25:29 von volnerius -
volnerius schrieb:
Hier eine Erklärung was die Fehlermeldung bedeutet:
http://www.php-fehlermeldungen.de/topic38.html
Nach dem bekannt ist woran es liegt, dürftest du den Fehler alleine beheben können^^
bettag schrieb: Bei mir kommt kein Text? :D
Davor stand was anderes da^^ der Text oben bezieht sich auf deinen Text vor deinem edit...^^
Ja, den Fehler davor hab ich selber behoben ;)
Hast du ne Ahnung, wegen dem neuen Fehler? -
War in der Zeile
, welche natürlich hätte heissen müssen$text = htmlentities(addslashes($_PST["textfeld"])); // html&php escapen
$text = htmlentities(addslashes($_POST["textfeld"])); // html&php escapen
solche kleinen tippfehler sollte man aber auch selbst korrigieren können.
Naja, ist korrigiert. Sollte nun funktionieren. -
tplus schrieb:
War in der Zeile
, welche natürlich hätte heissen müssen$text = htmlentities(addslashes($_PST["textfeld"])); // html&php escapen
$text = htmlentities(addslashes($_POST["textfeld"])); // html&php escapen
solche kleinen tippfehler sollte man aber auch selbst korrigieren können.
Naja, ist korrigiert. Sollte nun funktionieren.
Ja. Danke. Wie mach ich es, dass man sich einen Benutzernamen geben kann? -
Wie es aussieht hast du kp von dem was in diesem Skript passiert deshalb empfehle ich dir also es lieber, oder such im Internet nach einem fertigen Chat...
-
volnerius schrieb:
Wie es aussieht hast du kp von dem was in diesem Skript passiert deshalb empfehle ich dir also es lieber, oder such im Internet nach einem fertigen Chat...
Wie langweilig :( -
volnerius schrieb:
Das dumpfe Gefühl habe ich irgendwie auch. Ist ja schon fast dreist, den Thread hier als "Mein Chat" zu betiteln - im Moment ist es ja fast eher mein Chat.
Wie es aussieht hast du kp von dem was in diesem Skript passiert deshalb empfehle ich dir also es lieber, oder such im Internet nach einem fertigen Chat...
Wäre allerdings unter Careware-Lizenz denkbar. dass man sowas mal schreibt. Mit einem Aufruf an Lima zu spenden. So haben dann immerhin alle was davon.
bettag schrieb:
Mal so rein theoretisch, ohne was zu versprechen: Hast du da denn auch MySQL/PostgreSQL?
Wie langweilig :( -
bettag schrieb:
volnerius schrieb:
Wie es aussieht hast du kp von dem was in diesem Skript passiert deshalb empfehle ich dir also es lieber, oder such im Internet nach einem fertigen Chat...
Wie langweilig :(
Das einzige was langweilig bist du, da du rein garnichts alleine machst, außer die ganze zeit Skripte an zu fordern, wo von du eh keine Ahnung hast... ^^ Also setz dich ran lern nen bissl php und code den chat selber und bettel nicht die ganze Zeit nach Hilfe ohne was dafür zu tun
Beitrag zuletzt geändert: 27.6.2010 17:37:55 von volnerius -
Ja, ich hab auch MySQL
-
Gut, dann kannst du jetzt mal in der schönen Suchmaschiene Google die 4 Wörter: PHP und MySQL Chat Skript....
Oder Nein, das überfordert dich bestimmt, hier ein direkter Link: http://www.php-free.de/Chats/more2.html auf der Seite findest du auch fertige Chat Skripte...
Beitrag zuletzt geändert: 27.6.2010 22:21:41 von volnerius -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage