• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Einfaches Chat System.

HyperStorm

Neues Mitglied
Hi, ich habe ein paar Fragen zu einem kleinen Lern Projekt.
Ich möchte einen Chat schreiben.

Hier mald as Script:
PHP:
<html>
<body style=background-color:#000000>

<?
include ("submit.php");

if (isset($_POST['date']) && is_numeric($_POST['date'])) {
   $posted = intval($_POST['date']);
   $sendezeit = (time() - $posted);
   if ($sendezeit < 10 || $sendezeit > 36000) {
   echo "<font text-align='center' size='3' color='009EE0'><b>Do not Spam here. You have to wait 10 sec.</b></font><br><br>";
   die("");
 }
}

mswrite();
msview();

function mswrite()
{
$timestamp = time(); 
$datum = date('d.m.Y', $timestamp); 

$text=$_POST['text'];
$name=$_POST['name'];
$fp = fopen("text.txt", "a");
fwrite ($fp,$datum." | ".$name."\r\n".$text."\r\n");
fclose ($fp);
}

function msview()
{
$text=nl2br(htmlentities(file_get_contents('text.txt')));
echo "<font text-align='center' size='3' color='009EE0'><b>$text</b></font><br><br>";
}
?>

</body>
</html>

Folgende Funktionen brauche ich noch:

- Eine Aktualisierung.
Also entweder dass er bei einem neuen Beitrag bei allen aktualisiert,
oder dass alle 10 Sekunden aktualisiert wird.

- Den Output umdrehen.
Also dass statt von oben nach unten, von unten nach oben geschrieben wird.
So dass neue Nachrichten immer oben sind.

- Eine Zeitangabe.
Habs schon mit date und der formatierung versucht.
Aber da kam raus: 01:00:00 am 01.01.1970, warum auch immer...
Edit: Es wird beim aufrufen der Seite schon "28.09.2012 | " ausgegeben.
Nur warum? Bei weiteren Beiträgen wird es dann richtig ausgegeben.


Leider finde ich dazu nichts für mich brauchbares bei google.
Zumindest kann ich es mit meinen eher eingeschränkten php Kenntnissen
nicht einsetzen ^^

Wäre also cool, wenn mir jemand ein paar Tipps oder
Codes für die 3 Punkte geben könnt :)

Vielen lieben Dank schon mal für alle Antworten.

MfG
HyperStorm
 
Zuletzt bearbeitet:
So hart das auch klingen mag. Verwirf den Chat. Dass was du zusammengebastelt hast lässt sich nicht in der Produktion umsetzen.
Eine Textdatei für einen Chat zu verwenden ist pfui! Du müsstest handling dafür einbauen dass die Datei nicht gleichzeitig beschrieben werden kann und dazu gibt es nicht viel zu sagen außer einfach: nein. Mach es nicht so.

Generell sollte das Frontend eines Chats nicht mit PHP umgesetzt werden. Benutze hierfür Javascript und AJAX und schau dir das longpolling Konzept an. Wobei ich finde dass PHP dafür trotzdem ungeeignet ist.

HTML5 schafft Abhilfe mit WebSockets diese solltest du dir ebenfalls mal ansehen. Hier mal eine Einführung mit dem Wikipedia Artikel: WebSocket. Bei Bedarf findest du auch haufenweise Tutorials zur Implementierung.

Desweitern ist deine Abfrage zur Sendezeit sinnlos, da der Client die Sendezeit ganz einfach manipulieren kann.

Ein Chat ist keine einfache Aufgabe. Ich würde sogar sagen es ist eine sehr Anspruchsvolle. Ich würde dir empfehlen dich ersteinmal in die Grundlagen einzuarbeiten und generell etwas PHP, HTML & Javascript zu lernen bevor du dich an ein solches Projekt wagst.

Grüße,
cookie
 
Sehr hilfreich...
Wollte eigl. nur ein paar tipps zu den oben genannten Punkten.

Is ja schön dass du mich belehren willst wie man es nicht macht,
aber ich will einfach nur etwas rum probiern.

Das soll kein Gloabler Chat mit 2.000 Zugriffen pro sekunde werden.
Evtl. sollte es lieber "Shoutbox" heißen, is aber auch egal.

Gibts evtl. doch noch jemanden der auf meine oben genannten Fragen
antworten kann?
 
Sehr hilfreich...
Wollte eigl. nur ein paar tipps zu den oben genannten Punkten.

Is ja schön dass du mich belehren willst wie man es nicht macht,
aber ich will einfach nur etwas rum probiern.

Das soll kein Gloabler Chat mit 2.000 Zugriffen pro sekunde werden.
Evtl. sollte es lieber "Shoutbox" heißen, is aber auch egal.

Gibts evtl. doch noch jemanden der auf meine oben genannten Fragen
antworten kann?

Heieiei, da will man helfen und wird so angefahren :D

Das soll kein Gloabler Chat mit 2.000 Zugriffen pro sekunde werden.
Evtl. sollte es lieber "Shoutbox" heißen, is aber auch egal.

Nein es ist nicht egal. Denn für eine Shoutbox muss man nicht so einen großen Softwaredesign Aufwand betreiben wie für einen Chat. Das hättest du genauer definieren müssen.

- Eine Aktualisierung.
Also entweder dass er bei einem neuen Beitrag bei allen aktualisiert,
oder dass alle 10 Sekunden aktualisiert wird.


Code:
<meta http-equiv="refresh" content="10">

Lädt deine Seite alle 10 Sekunden neu. Besser wäre es allerdings die Shoutbox wie AJAX neu zu laden, da du hier den User nicht beim surfen auf der Seite störst. Das neuladen sobald eine neue Nachricht da ist kannst du nur über longpolling oder ein websocket lösen. Ansonsten kannst du auch normal pollen was sich aber sehr negativ auf deine Performance auswirken wird.

- Den Output umdrehen.
Also dass statt von oben nach unten, von unten nach oben geschrieben wird.
So dass neue Nachrichten immer oben sind.


Steige von einer Textdatei auf eine Datenbank um. Das ist designtechnisch erstens besser gelöst und zweitens kannst du die von dir gewünschten Sortierfunktionen leicht umsetzen.

- Eine Zeitangabe.
Habs schon mit date und der formatierung versucht.
Aber da kam raus: 01:00:00 am 01.01.1970, warum auch immer...
Edit: Es wird beim aufrufen der Seite schon "28.09.2012 | " ausgegeben.
Nur warum? Bei weiteren Beiträgen wird es dann richtig ausgegeben.


Was genau meinst du?

Eine Sache noch. Du solltest dir mal das EVA-Prinzip anschauen. Momentan verwurschtelst du dein HTML und PHP. Trenne das noch besser.


 
Ah super ;)
Sry wegen dem "Anschiss" weiter oben, bin heut generell nich so gut drauf. (muss mir abgewöhnen
solche projekte zu machen wenn ich schlechte laune hab xD)

Werde deine Tipps mal befolgen und mal schauen was bei raus komm ^^

Danke auf jeden Fall schon mal und nochmal sry.
 
Zurück
Oben