mein erster Chat

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

Werbung

Jetzt auf elektrisches Fahren umstellen, Umwelt schonen und 1.500km kostenlosen Strom von Tesla bekommen. https://ts.la/carsten15473.

HTML108

Neues Mitglied
15 März 2018
2
0
1
29
Guten Morgen zusammen,

ich möchte das erste Mal ein "Chat" System realisieren. Habe dafür bereits folgendes Script im Internet gefunden:

Code:
<!DOCTYPE HTML>
<html>

<head>
<meta charset="UTF-8">
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
<script type="text/javascript">

$(function(){
  var debug = 0;

  // Ajax submit message
  $("#submit").on("click", function(e) {
    var message = $(".message"),
        form = $("#send-message-form");
    $.ajax({
      type: "POST",
      data:  form.serialize(),
      success: function(data) {
        if (debug) {
          console.log("Message send");
        }
        message.val("");
      }
    });
    e.preventDefault();
  });

  // Get contents of messages.html
  function loadMessages(){
    var messages = $("#messages"),
        messagesHtml = messages.children();

    $.ajax({
      url: "messages.html",
      cache: false,
      dataType: "text",
      success: function( data, textStatus, jqXHR ) {
        if (debug) {
          console.log($(data).length);
          console.log(messagesHtml.length);
        }
        if (messagesHtml.length != $(data).length) {
          messages.html(data);
          messages.animate({
            scrollTop: messages.find("p:last").offset().top
          }, 3000);
        }
        else {
          return;
        }
      }
    });
  }
  // Load messages.html file every 1000ms
  setInterval(function(){
      loadMessages();
  }, 1000);
});
</script>

</head>

<body>


<?php



if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["nickname"])) {
    $nickname = "user_" . date('His');
  } else {
    $nickname = $_POST["nickname"];
  }



  if (empty($_POST["message"])) {
    $message = "";
  } else {
    $message = $_POST["message"];
  }
}


if ($message && $_SESSION['username']) {

  $file = fopen("messages.html","a+");
  $date = date('H:i');
  $data = "<p>[" . $date . "] <b>" .   $_SESSION['username'] . ":</b> " . $_POST['message'] . "</p>";
  fwrite($file, $data);
  fclose($file);

}

?>




<div id="messages"></div>

<form id="send-message-form" action="" method="post">
  <input class="message" name="message" placeholder="Your message..." />
  <input id="submit" type="submit" name="submit" value="Send">
</form>

</body>
</html>
Das funktioniert auch alles ganz gut. Allerdings frag ich mich ob das der beste Weg ist um das so realisieren?
Ich "baue" gerade eine Platform, wo man als User anderer User kontaktierien kann - streng genommen: ein Chat immer zwischen max 2 Personen
Wie kann ich dieses Thema nach "Best practice" umsetzen ?
Sollte ich lieber eine Datenbank nutzen, statt ein simples HTML File?
Oder sollte ich sogar einen ganz anderen Weg einschlagen?

Schon mal vielen Dank für eure Unterstützung :)
 

Tronjer

Moderator
Team
Moderator
8 Oktober 2010
5.121
443
83
Berlin
Das funktioniert auch alles ganz gut. Allerdings frag ich mich ob das der beste Weg ist um das so realisieren?
Nein, ist es nicht. Bei einer Chat-App sollten alle Empfänger die Nachricht sehen, sowie diese gesendet wurde, und zwar ohne dass jemand dazu die Seite neu laden müsste. Aber das dürfte noch weit über deinem Erfahrungslevel liegen. Mache lieber Dinge, die du bereits kannst.