j4nk3y: Update einer Chatfunktion

Beitrag lesen

Lieber Felix,

Sprich, wenn die Datenbank nicht nicht existiert dann lege sie an und erstelle alle nötigen Tabellen. bis jetzt sind das etwa 40 die Teilweise direkt mit Daten gefüttert werden.

wenn Du Deinen Chat auf Deiner Seite am laufen hast, wie oft wird es wohl vorkommen, dass Du die Datenbank neu erstellen musst? Genau, niemals!

Das ist richtig. Aber es geht ja nicht nur um den Chat das ist nur eine kleine Funktion die nichtmal 0,1% am gesamten Projekt ausmacht.

Um eine DB einzurichten, verwende ich phpMyAdmin, ein Tool, welches auch viele Webhoster ihren Kunden zur DB-Administration anbieten. Dann ist die DB eingerichtet und meine Software kann loslegen.

Nutze ich auch. Aber da ich häufiger meine Datenbank lösche und wieder neu einrichte, habe ich ganz am Anfang beschloßen das per php zu erledigen.

Du könntest eine Art install.php-Script bereitstellen, welches vor einer ersten Benutzung die Datenbank tatsächlich einrichtet - aber nur ihre Tabellen. Die DB selbst musst Du bei einem "Shared Webhosting" zusammen mit dem DB-Benutzer vorher schon bereitgestellt haben.

Darauf sollte es hinaus laufen.

Außerdem wird eine Transaktion gestartet,

Meine Klasse ist nicht für Transaktionen entwickelt worden.

Dann kann ich die nicht nutzen. Die sind zwingend erforderlich, sonst kommt es zu Fehlern.

Und wie escape ich da richtig?

Was war an meinen Beispielen missverständlich? Dort wird nichts escaped, das übernimmt die PDO-Klasse, die von meiner Klasse benutzt wird.

Hm, achso ok. Danke.

Nein, das lässt Du hübsch als "raw"-Format unverändert. Erst wenn Du Daten an einer bestimmten Stelle in einem bestimmten Kontext (z.B. HTML) ausgibst, maskierst Du sie an eben dieser Stelle kontextgerecht. Also:

// nicht so:
$quark = htmlspechialchars($db->get($query['sql'], $query['params']));
echo "<html><head><title>Chat</title></head><body>$quark</body></html>";

// sondern so:
$data = $db->get($query['sql'], $query['params']);
echo "<html><head><title>Chat</title></head><body>",htmlspecialchars($data),"</body></html>";

Nichts anderes meinte ich.

Im Übrigen bin ich immer noch der Meinung, dass Du für Deinen Chat besser Objekte entwirfst, die (ähnlich wie MyPDO den Umgang mit PDO etwas vereinfacht) in Deinem Programm diverse Vorgänge vereinfachen.

Stellen wir uns doch einmal einen User vor. Was hat der und was kann der?

class ChatUser {
  // Eigenschaften
  private $email;
  private $login;
  private $pw;

  // Methoden
  public  function __construct ($db_data) {} // Konstruktor-Funktion, nimmt DB-Daten auf
  public  function change_email () {}
  public  function change_pw () {}
  public  function login () {}
  public  function logout () {}
  private function save_data () {} // wird von change_email und change_pw benötigt
  public  function send_message () {}
}

Die Methoden change_email und change_pw nutzen intern die Methode save_data, welche z.B. mit MyPDO (oder etwas völlig anderem - egal) den Datenabgleich mit der DB regelt. Möchte sich ein User z.B. bei Deinem Chat anmelden (z.B. example.org/chat/login), so lädt Dein Haupt-Script alle DB-Einträge aus der DB, deren Login-Namen dem gePOSTeten Wert entsprechen und erstellt daraus ChatUser-Objekte. Diese dürfen dann der Reihe nach ihre login-Methode ausführen, um einen Login-Vorgang zu testen. Ist er erfolgreich, wird z.B. das ChatUser-Objekt in $_SESSION['user'] gespeichert, um Deiner Anwendung zu signalisieren, dass da ein erfolgreicher Login war.

Die Methode send_message hat intern auch wieder Code, der mit der Datenbank interagiert, z.B. die Message in der Tabelle chatlog abzuspeichern.

Auf diese Art und Weise modularisierst Du Dein Programm mit Objekten, um im Hauptprogramm dann mit diesen zu operieren.

Das hört sich alles schön und gut an, nur kann ich das nicht umsetzen weil ich mich wie gesagt in Objektorientiertem php nicht auskenne, keine Übung habe und auch nicht sehe welche vorteile das für mich hat. Objektorientiertes php ist für mich einfach komplizierter bzw. unübersichtlicher als das was ich derzeit mache.

Liebe Grüße,
Jo

0 151

Update einer Chatfunktion

j4nk3y
  • html
  • javascript
  • php
  1. 2
    Felix Riesterer
    • datenbank
    • php
    • sicherheit
    1. 0
      j4nk3y
      1. 0
        Gunnar Bittersmann
    2. 0
      Gunnar Bittersmann
      1. 0
        Matthias Apsel
        1. 0
          Gunnar Bittersmann
      2. 0
        j4nk3y
        1. 0
          Gunnar Bittersmann
          1. 0
            j4nk3y
      3. 0
        Felix Riesterer
        1. 0
          j4nk3y
          • zur info
          1. 1
            Felix Riesterer
            • php
            • programmiertechnik
            • zur info
            1. 0
              j4nk3y
        2. 0
          Gunnar Bittersmann
    3. 0
      j4nk3y
      1. 0
        Felix Riesterer
        • php
        • programmiertechnik
        • sicherheit
        1. 0
          j4nk3y
          1. 0
            Der Martin
            1. 0
              j4nk3y
              1. 0
                Der Martin
                1. 0
                  j4nk3y
          2. 0
            Felix Riesterer
            1. 0
              j4nk3y
              1. 0
                Der Martin
                1. 0
                  j4nk3y
              2. 1
                dedlfix
                1. 0
                  Gunnar Bittersmann
                  • typografie
                2. 0
                  j4nk3y
                  1. 0
                    dedlfix
                    1. 0
                      j4nk3y
                      1. 0
                        dedlfix
                        1. 0
                          j4nk3y
                          1. 0
                            dedlfix
                            1. 0
                              j4nk3y
                              1. 0
                                Der Martin
                                1. 0
                                  j4nk3y
                                  1. 0
                                    Der Martin
                              2. 1
                                dedlfix
                                1. 0
                                  Der Martin
                              3. 0
                                Gunnar Bittersmann
                                • datenbank
                                • programmiertechnik
                                1. 0
                                  j4nk3y
        2. 0
          Der Martin
        3. 0
          Gunnar Bittersmann
          • internationalisierung
          • php
          1. 0
            Felix Riesterer
            1. 0
              Tabellenkalk
              • zitat
              • zu diesem forum
              1. 1
                Matthias Apsel
    4. 0
      1unitedpower
      1. 1
        dedlfix
        1. 1
          1unitedpower
          1. 0
            Christian Kruse
          2. 0
            dedlfix
            1. 0
              1unitedpower
              1. 0
                dedlfix
                1. 0
                  Christian Kruse
                  1. 0
                    dedlfix
                  2. 0
                    1unitedpower
                    1. 0
                      Christian Kruse
                      1. 0
                        1unitedpower
                    2. 0
                      dedlfix
                      1. 0
                        1unitedpower
                        1. 0
                          dedlfix
  2. 0
    j4nk3y
    1. 0
      Gunnar Bittersmann
      • html
      1. 0
        j4nk3y
        1. 0
          Gunnar Bittersmann
          1. 0
            j4nk3y
            1. 0
              Matthias Apsel
              1. 0
                j4nk3y
  3. 0
    j4nk3y
  4. 0
    pl
    1. 0
      j4nk3y
      1. 0
        dedlfix
        1. 0
          j4nk3y
          1. 0
            dedlfix
            1. 0
              j4nk3y
              1. 0
                pl
                1. 0
                  j4nk3y
                  1. 0
                    pl
                    1. 0
                      dedlfix
                      1. -2
                        pl
                        1. 0
                          Matthias Apsel
                  2. 0
                    pl
              2. 0
                dedlfix
                1. 0
                  j4nk3y
                  1. 0
                    dedlfix
            2. 0
              j4nk3y
              1. 0
                dedlfix
      2. 0
        pl
  5. 0
    j4nk3y
    1. 0
      dedlfix
    2. 0
      j4nk3y
      1. 0
        j4nk3y
        1. 0
          pl
        2. 0
          dedlfix
          1. 0
            j4nk3y
            1. 0
              dedlfix
              1. 0
                j4nk3y
          2. 0
            j4nk3y
            1. 0
              j4nk3y
  6. 0
    j4nk3y
    1. 0
      Der Martin
      1. 0
        j4nk3y
        1. 0
          dedlfix
          1. 0
            j4nk3y
            1. 0
              Der Martin
              1. 0
                j4nk3y
        2. 0
          Der Martin
          1. 0
            j4nk3y
            1. 1
              Felix Riesterer
              1. 0
                j4nk3y
                1. 0
                  Matthias Apsel
                  1. 0
                    j4nk3y
                    • menschelei
                2. 0
                  Felix Riesterer
                  • php
                  • programmiertechnik
                  • sql
                  1. 0
                    j4nk3y
                    1. 0
                      Der Martin
                      1. 0
                        j4nk3y
                        1. 0
                          Der Martin
                          1. 0
                            j4nk3y
                            • menschelei
                    2. 0
                      Felix Riesterer
                      1. 0
                        pl
                      2. 0
                        j4nk3y
                        1. 2
                          dedlfix
                          1. 0
                            j4nk3y
                            1. 0
                              dedlfix
                              1. 0
                                Christian Kruse
                                1. 1
                                  dedlfix
                  2. 0
                    j4nk3y
                  3. 0
                    j4nk3y
                    1. 0
                      Felix Riesterer
                      1. 0
                        dedlfix
                        1. 0
                          j4nk3y
                          1. 0
                            pl
                            1. 0
                              j4nk3y
                          2. 0
                            dedlfix
                      2. 0
                        j4nk3y
                        1. 0
                          Der Martin
                        2. 0
                          Felix Riesterer
                          1. 0
                            Der Martin
                            1. 0
                              dedlfix
                          2. 0
                            j4nk3y
                            1. 1
                              Der Martin
                              1. 0
                                j4nk3y
    2. 0
      j4nk3y
      1. 0
        dedlfix
        1. 0
          j4nk3y
          1. 0
            Christian Kruse
            1. 0
              j4nk3y
              1. 0
                Christian Kruse
              2. 0
                Matthias Apsel
                • zu diesem forum
                1. 0
                  j4nk3y