Kategorie:PHP: Unterschied zwischen den Versionen

Aus MILLENNIUM ARTS ISP - Hilfe | FAQ
Zur Navigation springen Zur Suche springen
KKeine Bearbeitungszusammenfassung
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.