PHP Quirks im Legacy Code¶
Manche Vorgehensweisen im Legacy Code der Shops sind veraltet, fehleranfällig oder bringen nicht offensichtliche Eigenheiten mit sich.
BASE 64 Pfade¶
base64_encode() ist nicht Url-Safe. Padding am Ende des Strings (=xxxx) und beispliesweise + oder / werden ggf. (auch browserabhängig) nicht korrekt übergeben via GET. Base64 daher mit rawurlencode() und rawurldecode() behandeln.
PREPARED STATEMENTS - Spaltennamen¶
Das erste ? funktioniert nicht, Prepared Statement Parameter können nicht spaltennamen definieren.
$sprache = 'de';
$sql = <<<SQL
SELECT id, modul, langvar, ?
FROM webtool2_language
WHERE modul = ? OR modul = 'global'
SQL;
$result = $db->runQuery($sql, [$sprache, __MODNAME__]);
}
Substring Multibyte¶
Beim abschneiden von Strings beachten, dass Umlaute mehrere Zeichen lang sind und ein abschneiden via substr() einen fehlerhaften Character produzieren kann
mb_substr()