Chat Problem

  • PHP

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hallo!
    Ich habe einen kleinen Chat gebastelt. der auch alles Speichert. Es kommen noch Admin Befehle usw. hinzu doch erstmal will ich ihn nur einfach machen.
    So, zuerst meldet man sich im Login an, und dann kann man im Chatfenster etwas schreiben. Das geschriebene wird auch angezeigt und gespeichert.
    Doch ich bin kein Profi, und habe auch vieles aus Codeschnipseln gebastelt. Jetzt wollte ich noch dieses machen:
    - Wenn man etwas schreibt, und speichern drückt und wieder etwas neues schreibt, wird das erst geschriebene, 1 Zeile nach unten rutscht, und das neue ganz oben angezeigt wird.
    - Und das der username vor dem geschrieben steht.
    Das mit dem immer Aktualisieren, werde ich mit einem Html Code realisieren.

    Ich hoffe jemand kann mir helfen!
    Code:

    PHP-Quellcode

    1. <?php
    2. $username = $_POST["username"];
    3. /*
    4. Darauf achten, dass die Datei Schreibrechte besitzt.
    5. */
    6. $datei = 'Index.html';
    7. /*
    8. Neuer Inhalt speichern
    9. */
    10. if (isset($_POST['speichern'])) {
    11. $fp = fopen($datei, 'a+');
    12. /*
    13. Doppelte Zeilenumbrüche entfernen
    14. */
    15. $news_neu = str_replace("\n", "", $_POST['news_neu']); // -> Evtl. Obacht: Win/Lin/... \n \r\n ...
    16. $news_neu = stripslashes($news_neu); // Anpassen
    17. #$news_neu = strip_tags($news_neu); // Anpassen
    18. fputs($fp, $news_neu, strlen($news_neu));
    19. fclose($fp);
    20. }
    21. /*
    22. Datei in Array einlesen
    23. */
    24. $news = file($datei);
    25. /*
    26. FORMULAR
    27. */
    28. echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
    29. echo '<textarea cols="30" rows="3" name="news_neu">';
    30. echo '</textarea>';
    31. echo '<br>';
    32. echo '<input type="submit" name="speichern" value="speichern">';
    33. echo '</form>';
    34. /*
    35. Testausgabe
    36. */
    37. echo '<font size="3">Chat:</font>';
    38. echo '<br><br>';
    39. echo nl2br(implode('',$news));
    40. ?>
    Alles anzeigen
    Nicht mehr alle Tassen im Schrank?
    Dann stell doch Gläser rein!!!
    xD
  • Am besten realisiere das immer wieder Aktualisieren mit Javascript... setTimeout...

    Zu deinen ersten Problem:
    Habe dir mal ebend diesen Skript-Snippet geschrieben, auf meinen Server funktioniert er einwandfrei. Wie gesagt ist nur ein Snippet von dem Code, kannste ja in dein Code einbauen oder?

    PHP-Quellcode

    1. $res = fopen($file,"rb");
    2. $all = fread($res,filesize($file));
    3. $all .= $eintrag;
    4. fclose($res);
    5. unlink($file);
    6. $res = fopen($file,"ab");
    7. fwrite($res,$all);
    8. fclose($res);


    Was wird hier gemacht?
    Mit $res wird die Datei $file geöffnet zum lesen (Zeiger ist am Anfang positioniert). Dann lese ich die ganze Datei ein, und Speicher den Inhalt in $all. Nun wir mittels des .= Operators in die Variable $all der Vordefinierte Eintrag am ende eingefügt. Mit unlink wird die Datei $file gelöscht. Nun wir die Datei zum Schreiben geöffnet.Die Datei wird nun neu erstell, und alles wird eingefügt,... $all hat ja am ende den neuen Beitrag, somit wird dieser also auch als letztes angezeigt..., zu guter letzt wird die Datei geschlossen.

    Desweiteren, kann es sein das dein Code nicht einwandfrei funktioniert (aber garantiert nichts mit Fehler 1 zu tun hat), da du bei der If abfrage eine neue { öffnest, aber nirgendswo schließt.

    Mfg,
    Metalknight