Statistik |
Beiträge: 144.530 (Täglich: 19,19 )
Themen: 16.700
Mitglieder: 13.209
Neuestes Mitglied: zitronentee.
Ausl. d. letzten Minute: 365%
Ausl. d. letzten 5 Minuten: 276%
Ausl. d. letzten 15 Minuten: 245%
Aktulle Uhrzeit: 14:39
Freier Webspace: 4.04 TB
PHP-Version: 7.4.33
|
|
|
|
|
PHP Kauderwelsch Ausgabe/Sonderzeichen |
|
PHP Kauderwelsch Ausgabe/Sonderzeichen |
|
Ihr Lieben,
ich habe manchmal das Problem, dass ich Ausgaben habe wie auf dem angehangenen Bild. Teilweise die ganze Seite, oder nur unterhalb der regulären Ausgabe.
PHP Dateien wie Templates sind utf-8, und den Hack "Globale Einstellungen" hier aus dem Forum habe ich auch eingebaut und auf utf-8 gestellt. Mit ein wenig Google Recherche hatte jemand geschrieben, dass man statt addslashes doch lieber mysqli_real_escape_string nutzen soll. Das habe ich testweise probiert und kurzzeitig war das Kauderwelsch auch weg, aber ich konnte mich nicht mehr in den ACP einloggen.
Nun meine Fragen:
1) was ist der Unterschied zwischen addslashes und mysqli_real_escape_string?
2) gibt es noch einen anderen Grund, warum ich hin und wieder diese Ausgabe habe? Was mache ich falsch.
Liebe Grüße und vielen Dank.
|
|
01.02.2021 12:24 |
|
|
|
Hallo,
1) Im Grunde ist der Hauptunterschied der Gebrauch und der Ursprung der Funktionen.
"addslashes()" escaped etwas weniger als die Funktion "mysqli_real_escape_string()", was jedoch mit dem Ursprung zu tun hat.
Im Grunde verwendet man "mysqli_real_escape_string()" eben genau da, wenn man es mit Daten und der SQL-Datenbank zu tun hat.
"mysqli_real_escape_string()" escaped jene speziellen Zeichen, die einen Datenbankbefehl ungültig machen und dadurch zu einer Fehlermeldung führen könnte.
Ein weiterer Unterschied ist, dass "addslashes()" von den PHP-Entwicklern stammt, während "mysqli_real_escape_string()" die MySQL API verwendet und somit mehr oder weniger von den MySQL-Entwicklern stammt. Dies hat den Vorteil, wenn mal Zeichen hinzukommen oder wegfallen, dass diese automatisch übernommen werden sollten.
Zusätzlich berücksichtigt "mysqli_real_escape_string()" auch den Charset der Datenbankverbindung, was unter Umständen ein kleiner Vorteil sein kann.
Was jedoch nicht zwangsläufig stimmt und ein weit verbreiteter Irrglaube ist, ist dass "mysqli_real_escape_string()" sicherer ist als "addslashes()" sei.
2) Dein Problem ist mir nicht ganz klar, da der Zusammenhang komplett fehlt.
"Schwarze Fragezeichen" sind eigentlich ein Hinweis, dass du Daten in "ISO-8859-1" vor dir hast, aber versuchst sie in "UTF-8" darzustellen.
Da jedoch die komplette Ausgabe aber einfach nur Unbrauchbar scheint, ist hier wohl ein anderes Problem vorhanden und da kann dir auch eine "UTF-8"-Einstellung beziehungsweise der Hack "Globale Einstellungen" nicht wirklich weiterhelfen.
__________________
|
|
01.02.2021 13:40 |
|
|
|
Guten Morgen,
entschuldigt bitte die späte Rückmeldung.
@Schrimm
Also ist es im Grunde egal, was ich verwende, aber zukünftig wäre das mysqli_real_escape_string auf jeden Fall besser dieses zu verwenden? So verstehe ich das. Und danke für deine Erklärung.
Eigentlich wollte ich nur ein output Template aufrufen, wenn es eine bestimmte Gruppe von User betrifft. Diesen Codeabschnitt hatte ich testweise in die global.php gesetzt.
php: |
1:
|
if($wbbuserdata['groupid']==1) { eval("\$tpl->output(\"".$tpl->get("hinweis")."\");");} |
|
Daraufhin kam dann das Kauderwelsch. Aber der Hinweis mit ISO-8859-1 hilft mir schon einmal.
@Viktor
HA! Jetzt ist das Kauderwelsch weg, aber die Seite wird nicht angezeigt. Aber das ist ein weiteres Problem, mit dem ich mich jetzt auseinandersetzen werde.
Vielen Dank euch <3
|
|
03.02.2021 11:11 |
|
|
|
|
|
|