Kategorie:PHP: Unterschied zwischen den Versionen
Asphyx (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
Asphyx (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
||
Zeile 9: | Zeile 9: | ||
Nicht-kodierte Umlaute in E-Mails sind grundsätzlich nicht erlaubt und entsprechen nicht dem RFC. E-Mails können deswegen von Empfängern (insbes. GMX, Gmail & Co, die sehr streng sind) abgelehnt werden. Auf [https://www.php.net/manual/de/function.mail.php php.net] gibt es dazu sowohl Hinweise auf den RFC, als auch weiter unten ein Beispiel zur korrekten Kodierung von deutschen Umlauten mit der PHP mail() Funktion. | Nicht-kodierte Umlaute in E-Mails sind grundsätzlich nicht erlaubt und entsprechen nicht dem RFC. E-Mails können deswegen von Empfängern (insbes. GMX, Gmail & Co, die sehr streng sind) abgelehnt werden. Auf [https://www.php.net/manual/de/function.mail.php php.net] gibt es dazu sowohl Hinweise auf den RFC, als auch weiter unten ein Beispiel zur korrekten Kodierung von deutschen Umlauten mit der PHP mail() Funktion. | ||
==Kompatibilität== | |||
===`??` vs. `isset()` ab PHP 7.4.22 / PHP 8=== | |||
Ab PHP 7.4.22 und besonders in PHP 8 kann der Null-Coalescing-Operator (`??`) Kompatibilitätsprobleme in Anwendungen verursachen, die auf `isset()` basieren. `??` liefert einen Standardwert, wenn eine Variable nicht gesetzt oder `null` ist, während `isset()` prüft, ob eine Variable existiert und nicht `null` ist. In Systemen wie dem Advanced Sentry Filter (ASF) führt dies zu unterschiedlichem Verhalten bei Funktionen wie `asfGetValue()`, je nach PHP-Version (z. B. PHP 7.4 für pcs, PHP 8 für Maisp). ASF nutzt die Konstante `ISSET_COMPATIBILITY`, um zwischen `??` (Maisp) und `isset()` (pcs) zu wechseln. | |||
'''Beispiel:''' | |||
<source lang="php"> | |||
define('ISSET_COMPATIBILITY', 0); // 0 für ?? (PHP 8+), 1 für isset() (PHP 7.4) | |||
function asfGetValue($value, $default = '') { | |||
if (ISSET_COMPATIBILITY) { | |||
return isset($value) ? $value : $default; // Älteres Verhalten | |||
} | |||
return $value ?? $default; // Modernes Verhalten | |||
} | |||
// Beispielaufruf | |||
$config = ['settings' => ['mode' => 'mediawiki']]; | |||
$mode = asfGetValue($config['settings']['mode'], 'bpm2'); | |||
echo $mode; // Ausgabe: mediawiki | |||
// Problemfall: Nicht gesetzte Variable | |||
$missing = asfGetValue($config['missing']['key'], 'fallback'); | |||
echo $missing; // ?? gibt 'fallback', isset() könnte Fehler auslösen | |||
</source> |
Version vom 24. April 2025, 16:55 Uhr
Informationen folgen in Kürze - es findet aktuelle eine Datenübernahme statt.
Funktionen
PHP mail() mit Umlauten
Nicht-kodierte Umlaute in E-Mails sind grundsätzlich nicht erlaubt und entsprechen nicht dem RFC. E-Mails können deswegen von Empfängern (insbes. GMX, Gmail & Co, die sehr streng sind) abgelehnt werden. Auf php.net gibt es dazu sowohl Hinweise auf den RFC, als auch weiter unten ein Beispiel zur korrekten Kodierung von deutschen Umlauten mit der PHP mail() Funktion.
Kompatibilität
`??` vs. `isset()` ab PHP 7.4.22 / PHP 8
Ab PHP 7.4.22 und besonders in PHP 8 kann der Null-Coalescing-Operator (`??`) Kompatibilitätsprobleme in Anwendungen verursachen, die auf `isset()` basieren. `??` liefert einen Standardwert, wenn eine Variable nicht gesetzt oder `null` ist, während `isset()` prüft, ob eine Variable existiert und nicht `null` ist. In Systemen wie dem Advanced Sentry Filter (ASF) führt dies zu unterschiedlichem Verhalten bei Funktionen wie `asfGetValue()`, je nach PHP-Version (z. B. PHP 7.4 für pcs, PHP 8 für Maisp). ASF nutzt die Konstante `ISSET_COMPATIBILITY`, um zwischen `??` (Maisp) und `isset()` (pcs) zu wechseln.
Beispiel:
define('ISSET_COMPATIBILITY', 0); // 0 für ?? (PHP 8+), 1 für isset() (PHP 7.4)
function asfGetValue($value, $default = '') {
if (ISSET_COMPATIBILITY) {
return isset($value) ? $value : $default; // Älteres Verhalten
}
return $value ?? $default; // Modernes Verhalten
}
// Beispielaufruf
$config = ['settings' => ['mode' => 'mediawiki']];
$mode = asfGetValue($config['settings']['mode'], 'bpm2');
echo $mode; // Ausgabe: mediawiki
// Problemfall: Nicht gesetzte Variable
$missing = asfGetValue($config['missing']['key'], 'fallback');
echo $missing; // ?? gibt 'fallback', isset() könnte Fehler auslösen
Diese Kategorie enthält zurzeit keine Seiten oder Medien.