Seite 1 von 1

Problem mit Geburtstags-/Hochzeits-MOD (Login nicht möglich)

Verfasst: 08.09.2007 14:59
von be4
Hallo!
Ich habe mir letztes Jahr von einem Mitglied dieser Community ein MOD in mein Forum einpassen lassen.
Und zwar geht es um Hochzeitstage.

Statt Geburtstagen sollten also Hochzeitstage angezeigt werden.

Nach dem Einbau hab ich mich erstmal überhaupt nicht weiter um das Projekt gekümmert, aber nun wollte ich mit dem Forum starten und ... nichts geht mehr.
Nach mehreren Versuchen habe ich das Problem auf folgende Vorgänge einschränken können:


Wenn sich ein User registriert, ist er plötzlich gezwungen, einen Hochzeitstag anzugeben. Ohne geht es nicht. Aber nicht jeder, der sich in diesem Forum registrieren kann, muss das haben.

Nach der Registrierung wird dieser eingegebene Hochzeitstag aber durch ein anderes Datum ersetzt (meine Vermutung: Geburtstag des MOD-Einbauers). Es ist also völlig egal, welches Datum man bei der Registrierung eingibt, es wird automatisch umgestellt.

Ein Login ist nicht möglich.

Der Admin muss das Hochzeitsdatum per Hand neu eingeben, erst dann kann sich das Mitglied einloggen.


Wie in etwa schaut die Zeile aus, in der ich dem Script sage, dass es gefälligst das eingegebene Datum nehmen soll?

Wo kann ich bestimmen, dass ein Datum nicht zwingend erforderlich ist?


Liebe Grüße
be4

Re: Problem mit Geburtstags-/Hochzeits-MOD (Login nicht mögl

Verfasst: 08.09.2007 15:44
von Seimon
be4 hat geschrieben:Wo kann ich bestimmen, dass ein Datum nicht zwingend erforderlich ist?
Ich vermute hier:

includes/usercp_register.php

So sieht die Stelle für die Originalfelder aus:

Code: Alles auswählen

else if ( $mode == 'register' )
	{
		if ( empty($username) || empty($new_password) || empty($password_confirm) || empty($email) )
		{
			$error = TRUE;
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_empty'];
		}
	}
eventuell suchst du mal nach:

Code: Alles auswählen

$lang['Fields_empty'];
in zusammenhang mit

Code: Alles auswählen

if( empty($birthday) )
oder

Code: Alles auswählen

if( empty($hochzeitstag) )

oder du machst gleich mit einem programm wie winmerge einen vergleich mit der originalen includes/usercp_register.php

Verfasst: 08.09.2007 17:49
von be4
Danke, jetzt weiss ich erst einmal, wo ich suchen muss. :)

Update (und Quelltext gelöscht): Ich hab es geschafft, dass die Eingabe eines Datums nicht mehr erforderlich ist.

Nun habe ich einen neuen User angelegt. Dieser kann sich nicht einloggen. :( Wenn ich mir das Profil ansehe, steht da ein Datum drin, welches nicht "kompatibel" mit dem Rest der Programmierung ist ...


In der Datei functions.php habe ich das gefunden:
function realdate($date_syntax="Ymd",$date=0)
{
global $lang;
$i=2;
if ($date>=0)
{
return create_date($date_syntax,$date*86400+1,0);
} else
{
$year= -(date%1461);
$days = $date + $year*1461;
while ($days<0)
{
$year--;
$days+=365;
if ($i++==3)
{
$i=0;
$days++;
}
}
}
$leap_year = ($i==0) ? TRUE : FALSE;
$months_array = ($i==0) ?
array (0,31,60,91,121,152,182,213,244,274,305,335,366) :
array (0,31,59,90,120,151,181,212,243,273,304,334,365);
for ($month=1;$month<12;$month++)
{
if ($days<$months_array[$month]) break;
}

$day=$days-$months_array[$month-1]+1;
//you may gain speed performance by remove som of the below entry's if they are not needed/used
return strtr ($date_syntax, array(
'a' => '',
'A' => '',
'\\d' => 'd',
'd' => ($day>9) ? $day : '0'.$day,
'\\D' => 'D',
'D' => $lang['day_short'][($date-3)%7],
'\\F' => 'F',
'F' => $lang['month_long'][$month-1],
'g' => '',
'G' => '',
'H' => '',
'h' => '',
'i' => '',
'I' => '',
'\\j' => 'j',
'j' => $day,
'\\l' => 'l',
'l' => $lang['day_long'][($date-3)%7],
'\\L' => 'L',
'L' => $leap_year,
'\\m' => 'm',
'm' => ($month>9) ? $month : '0'.$month,
'\\M' => 'M',
'M' => $lang['month_short'][$month-1],
'\\n' => 'n',
'n' => $month,
'O' => '',
's' => '',
'S' => '',
'\\t' => 't',
't' => $months_array[$month]-$months_array[$month-1],
'w' => '',
'\\y' => 'y',
'y' => ($year>29) ? $year-30 : $year+70,
'\\Y' => 'Y',
'Y' => $year+1970,
'\\z' => 'z',
'z' => $days,
'\\W' => '',
'W' => '') );
}
Hier wird irgendwie festgelegt, dass das Datum in jedem Fall dieses bestimmte Datum zu sein hat, oder?
Wo steckt der Fehler?