Ankündigung

Einklappen
Keine Ankündigung bisher.

Über JOIN den Usernamen ausgeben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #31
    Im Gästebuch gab es noch einen Fehler: In der Zeile, die mit "$StrSQL2 = "SELECT..." beginnt mußten die Anführungsstriche um "Anonymus" maskiert werden, habe es nachgeholt. Dazu mußte ich auch die PHP-Code-Tags durch neutrale ersetzen. Nicht wundern, wenn das Code-Highlighting nicht mehr geht.

    Kommentar


    • #32
      Der in #29 gezeigte Code erzeugt kein valides HTML.

      Nach dem Absenden des Formulars ist $_POST['submit'] gesetzt und wird geprüft.

      Nicht geprüft werden $_POST['betreff'] usw.

      Es genügt nicht, lediglich zu prüfen ob diese Variablen gesetzt sind!

      Ein md5('') bringt auch ein Ergebnis!

      Prepared Statements verhindern (wirkungsvoll?) eine SQL-Injection, mehr nicht.

      Stichwort XSS -> ungefilterte Ausgaben.

      Über nummerierte Variablen ($StrSQL, $StrSQL2) muss man nicht reden.


      Lieber Alf2016, du setzt bisher die Meßlatte sehr hoch und bist auch mit rüder Kritik nicht sparsam.........

      Kommentar


      • #33
        Entfernt

        Kommentar


        • #34
          Zitat von sharete Beitrag anzeigen

          Ich habe den Code jetzt übernommen, bekomme allerdings einen Fatal Error:
          PHP-Code:
          Fatal errorUncaught ErrorCall to a member function fetch_object() on boolean in /var/www/jail/home/sharete/docs/kontakt.php:53 Stack trace#0 {main} thrown in /var/www/jail/home/sharete/docs/kontakt.php on line 53 
          Line 53:
          PHP-Code:
          while($ausgabe $abfrage->fetch_object()){ 
          Damit kann ich als "Neuling" leider gar nichts anfangen..
          Dann wärest du jetzt bei Punkt 2. bzw. 3. meiner Agenda aus #30. Bevor du dort weitermachst kannst du aber auch noch - provisorisch oder wenn du magst, auf Dauer, dem Vorschlag von aus #18 folgend, folgendes ersetzen:

          Im login:

          Statt
          Code:
          $_SESSION['user'] = 0;                   // AG30012019+   //<<<<<<<<<<<<<<
          (das war die markierte Zeile)

          nimm:
          Code:
          $_SESSION['user'] = 99;                   // AG30012019+   //<<<<<<<<<<<<<<
          Im Gästebuch:

          Statt
          Code:
          $StrSQL2 = "SELECT IF(users.benutzername = 0), \"Anonymus\", users.benutzername) as bn,
                      kontakt.betreff, kontakt.nachricht
                      FROM users RIGHT OUTER JOIN kontakt
                      ON users.userid = kontakt.userid_fk;";             // AG30012019+
          (müsste bei dir ca. Z. 46 sein)

          nimm:
          Code:
          $StrSQL2 = "SELECT users.benutzername as bn,
                      kontakt.betreff, kontakt.nachricht
                      FROM users INNER JOIN kontakt
                      ON users.userid = kontakt.userid_fk;";             // AG30012019+
          Dann gibst du noch in die DB in Tabelle Kontakt folgenden Datensatz ein:

          Code:
          userid | benutzername | passwort
              99 | Anonymus     |
          Paßwort bleibt leer. Mit der 99 das funktioniert. Du könntest aber jede andere freie ID nehmen. Ich nehme halt, wenn ich sowas mache (tue ich nicht gern, weil ich es unsauber finde), die 99. Frag mich nicht, warum...

          Dann nochmal testen. Wenn wieder ein Fehler kommt, weitermachen mit Schritt 3.a., um den Fehler einzugrenzen.


          Kommentar


          • #35
            Eine "hardcodierte" UserID, das macht man doch wirklich nicht. Ein select userid where benutzername = "Anonymous" -> diese userid in die Session...

            Kommentar


            • #36
              Entfernt

              Kommentar


              • #37
                Zitat von sharete Beitrag anzeigen
                Alf2016 Es nimmt Fortschritt an! Der Username wird angezeigt (ich habe zwei Personen erstellt und es getestet... bei beiden wird der Name korrekt angezeigt). Ich bekomme auch keinen Fehler ABER nun habe ich ein, zwei Bugs im System.

                1. Wenn ich die Userdaten falsch eingabe (eingabedaten sind nicht korrekt) und dann auf registrieren klicke, bin ich sofort als Anonymus angemeldet.
                2. Ich habe unter den Usernamen Anonymus einen Beitrag erstellt. Dieser Beitrag ist im Gästebuch dauerhaft an letzter Stelle. Sprich poste ich einen neuen Beitrag mit z.B. User "Test" wird der Beitrag vor der Stelle von Anonymus gesetzt.
                3. Als nicht registrierter Nutzer bin ich immer noch nicht fähig, einen Gästebucheintrag zu erstellen.

                EDIT: Moment, ich merke ja gerade, dass ich die Codezeile
                PHP-Code:
                else: $_SESSION['user'] = 99
                eingefügt habe. Ich nehme mal an, dass ich deswegen als Anonymus angemeldet werde, wenn die Daten nicht korrekt eingegeben wurden?

                EDIT2: Wenn ich das richtig verstehe, wird der Beitrag von Anonymus an letzter Stelle angezeigt, da ich die Beiträge nicht spezifisch sortiere. Sortiert er die Beitrage deswegen automatisch nach der ID?
                zu 1. und 3.: Da muß ich das mal nochmal in Ruhe durchgehen. Das ist eigentlich nicht verwunderlich, aber ich dachte, die Reg. und der Login kommen sich nicht in die Quere. Es wäre von Vorteil, wenn du mir die ganzen includierten Dateien geben könntest, so daß ich das ganze vollständig bei mir testen kann. Wenn du sie hier nicht veröffentlichen möchtest, kannst du sie mir per pn schicken. Ich stelle schon keinen Unfug damit an, versprochen...
                zu 2. Das Problem ist dadurch entstanden, weil ich in meinem Select die "ORDER BY"-Klausel vergessen habe. Die mußt du einfach noch hinten wieder anhängen. Also
                Code:
                SELECT ... ORDER BY datum DESC

                Kommentar


                • #38
                  Punkt 1. und 3. kann ich nur prüfen, wenn ich das "Gesamtwerk" testen kann. M.E. (d.h. Stand wie ich es aus den Codes ersehe, ich muß sowas aber "live" sehen) funktioniert das mit dem Registrieren nicht, weil du immer beides durchführst, das muß aber alternativ sein. Du kannst dabei alles "Beiwerk", andere Unterseiten, header, footer, Bilder usw. usf. weglassen, aber die drei Prozesse "Gästebuch", "Login" und "Registrieren" muß ich bei mir so installieren können, daß sie genauso ineinandergreifen, wie bei Dir. Bei den Forms ist mir aufgefallen, daß bei action nichts steht. Warum, keine Ahnung. Aber so wird das nicht funktionieren. Bezüglich des Includes "dbconnection.php": Da kannst du die Verbindungsdaten alle rauslöschen, da muß ich sowieso meine eintragen. Als Server, DB, User und PW raus, schreib meinetwegen "meineDB" usw. rein oder "".
                  Dann brauche ich noch eine Dump von deiner DB nach aktuellem Stand. Auch da kannst du alles außer kontakt und users rauslassen.

                  Kommentar


                  • #39
                    Entfernt

                    Kommentar


                    • #40
                      Zitat von sharete Beitrag anzeigen
                      Das Thema hat sich erledigt, habe es selbständig weiter erarbeitet und es läuft . Danke an alle, die mir Hilfestellung gegeben haben!
                      Sag bescheid, wenn du mal wieder Hausarbeiten zu lösen hast...

                      Eine Nachfrage noch: Du schriebst, daß sei deine eigene Homepage. Wo kann man denn das Ergebnis jetzt bewundern?...

                      Kommentar

                      Lädt...
                      X