Moinsen :)
Da meine Erste Idee nicht funktioniert hat, dauerte es leider ein bisschen laenger, aber nun hab ich eine neue Loesung, bei der auch auf solche minimalistischen "falscheingaben" richtig reagiert:
Code: Alles auswählen
elseif($type == 'date')
{
$datum = DateTime::createFromFormat($gPreferences['system_date'], $array[$variableName]);
if(is_object($datum))
{
if (
!($array[$variableName] == $datum->format(str_replace(array('d', 'm', 'y'), array('j', 'n', 'Y'), $gPreferences['system_date']))) &&
!($array[$variableName] == $datum->format(str_replace(array('d', 'm', 'Y'), array('j', 'n', 'y'), $gPreferences['system_date']))) &&
!($array[$variableName] == $datum->format(str_replace(array('d', 'n', 'y'), array('j', 'm', 'Y'), $gPreferences['system_date']))) &&
!($array[$variableName] == $datum->format(str_replace(array('d', 'n', 'Y'), array('j', 'm', 'y'), $gPreferences['system_date']))) &&
!($array[$variableName] == $datum->format(str_replace(array('j', 'm', 'y'), array('d', 'n', 'Y'), $gPreferences['system_date']))) &&
!($array[$variableName] == $datum->format(str_replace(array('j', 'm', 'Y'), array('d', 'n', 'y'), $gPreferences['system_date']))) &&
!($array[$variableName] == $datum->format(str_replace(array('j', 'n', 'y'), array('d', 'm', 'Y'), $gPreferences['system_date']))) &&
!($array[$variableName] == $datum->format(str_replace(array('j', 'n', 'Y'), array('d', 'm', 'y'), $gPreferences['system_date'])))
)
{
$errorMessage = $gL10n->get('SYS_INVALID_PAGE_VIEW');
}
}
else
{
$errorMessage = $gL10n->get('SYS_INVALID_PAGE_VIEW');
}
}
Als erstes wird wieder ueberprueft ob uebehaupt ein gueltiger Wert fuer ein Datum uebergeben wurde. (Wenn nicht, wird kein Objekt "$datum" erzeugt.
Danach wird ueberprueft ob das Datum, welches aus dem Objekt, anhand der Einstellungen, generiert wird, auch mit dem uebergebenen uebereinstimmt, und hier war das Problem, wenn fuer das Monat "d" (Tag 2-stellig mit fuehrender 0) hinterlegt war, und der User (oder Admin ;) nur z.B. 6 eingegeben hat, waren die Strings nicht mehr gleich.
Dies wurde behoben indem bei allen 3en (Tag/Monat/Jahr) alle Kombinationen aus Einstellig, Zweistellig und Vierstellig (Jahr) ueberprueft werden (d.m.y, d.n.y, j.m.Y, ...) und sobald eines stimmt, als Richtig angesehen wird.
Hoffe das ist jetzt verstaendlich, bin kein so guter ErklaerBaer ^^
MfG
D347h