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.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Über JOIN den Usernamen ausgeben
Einklappen
Neue Werbung 2019
Einklappen
X
-
Zuletzt geändert von kaminbausatz; 30.01.2019, 17:18.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.........
- 1 Likes
Kommentar
-
Zitat von sharete Beitrag anzeigen
Ich habe den Code jetzt übernommen, bekomme allerdings einen Fatal Error:PHP-Code:Fatal error: Uncaught Error: Call 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
PHP-Code:while($ausgabe = $abfrage->fetch_object()){
Im login:
StattCode:$_SESSION['user'] = 0; // AG30012019+ //<<<<<<<<<<<<<<
nimm:Code:$_SESSION['user'] = 99; // AG30012019+ //<<<<<<<<<<<<<<
StattCode:$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+
nimm:Code:$StrSQL2 = "SELECT users.benutzername as bn, kontakt.betreff, kontakt.nachricht FROM users INNER JOIN kontakt ON users.userid = kontakt.userid_fk;"; // AG30012019+
Code:userid | benutzername | passwort 99 | Anonymus |
Dann nochmal testen. Wenn wieder ein Fehler kommt, weitermachen mit Schritt 3.a., um den Fehler einzugrenzen.
Kommentar
-
Zitat von sharete Beitrag anzeigenAlf2016 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 CodezeilePHP-Code:else: $_SESSION['user'] = 99;
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 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. AlsoCode:SELECT ... ORDER BY datum DESC
Kommentar
-
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
-
Zitat von sharete Beitrag anzeigenDas Thema hat sich erledigt, habe es selbständig weiter erarbeitet und es läuft . Danke an alle, die mir Hilfestellung gegeben haben!
Eine Nachfrage noch: Du schriebst, daß sei deine eigene Homepage. Wo kann man denn das Ergebnis jetzt bewundern?...
Kommentar
Kommentar