Hallo Forum,
Ich habe eine Extension geschrieben welche Lokal auch bereits funktioniert! Als ich sie aber online installierte funktionierte sie nicht mehr richtig!
(Die Berücksichtigung der usergroup wird ignoriert!?)
Ziel:, bzw. die zu erfüllenden Bedingungen:
1. Fall)
Falls $wert1 == ’Vorgabe’ && $wert2 == 100 && $usergroup == 4
-> dann wechsle FE User Group zu ID=5
Sonst falls $wert1 == ’Vorgabe’ && $wert2 == 100
-> dann wechsle FE User Group zu ID=3
2. Fall)
Falls $wert1 == ’Vorgabe’ && $wert2 == 200 && $usergroup == 3
-> dann wechsle FE User Group zu ID=5
Sonst falls $wert1 == ’Vorgabe’ && $wert2 == 200
-> dann wechsle FE User Group zu ID=4
3.) Falls $wert1 == ’Vorgabe’ && $wert2 == 300 dann wechsle FE User Group zu ID=5
4.) Sonst auf eine Errorseite!?
Hier zur verdeutlichung ein Auszug aus den PHP der Extension:
(Meine "Problemstellen" habe ich zur Verdeutlichung mit ***** markiert!!)
.....
$status = $_POST['status'];
$amount = $_POST['amount'];
$userid = $_POST['userid'];
*************************************************************************
$ugroup = $GLOBALS['TSFE']->fe_user->user['usergroup'];
*************************************************************************
if ($status == 'success' && $amount == 100 *****&& $ugroup == 4*****) { $GLOBALS['TYPO3_DB']->exec_UPDATEquery('fe_users','uid='.intval($userid),array('uid'=>$userid, 'usergroup'=>5 ));
header("Location: index.php?id=5");
} elseif ($status == 'success' && $amount == 100) { $GLOBALS['TYPO3_DB']->exec_UPDATEquery('fe_users','uid='.intval($userid),array('uid'=>$userid, 'usergroup'=>3 ));
header("Location: index.php?id=5");
} elseif ($status == 'success' && $amount == 200 ***** && $ugroup == 3*****) { $GLOBALS['TYPO3_DB']->exec_UPDATEquery('fe_users','uid='.intval($userid),array('uid'=>$userid, 'usergroup'=>5 ));
header("Location: index.php?id=5");
} elseif ($status == 'success' && $amount == 200) { $GLOBALS['TYPO3_DB']->exec_UPDATEquery('fe_users','uid='.intval($userid),array('uid'=>$userid, 'usergroup'=>4 ));
header("Location: index.php?id=5");
} elseif ($status == 'success' && $amount == 300) { $GLOBALS['TYPO3_DB']->exec_UPDATEquery('fe_users','uid='.intval($userid),array('uid'=>$userid, 'usergroup'=>5 ));
header("Location: index.php?id=5");
} elseif ($status == 'error') {
header("Location: index.php?id=24");
} else {
......
Da es lokal funktionierte und auch online ohne die mit *** markierten Änderungen... so denke ich, dass die Bedingungen eigentlich okay sind, und das Problem an der $ugroup liegt!? Diese werden nun online nicht mehr richtig interpretiert!!
Könnte es sich hier um ein Problem mit der Datenbank handeln?
Ich habe nämlich folgendes bemerkt:
Lokal habe ich Apache und MySQL.
Wenn ich mir hier mit phpMyAdmin die Datenbank anzeigen lasse, so enthält die Spalte usergroup Werte als Zahlen.
Also z.B. usergroup = 3
Online handelt es sich um einen ISS und wie mir ist auch MySQL als DB.
Wenn ich mir hier aber mit phpMyAdmin die Datenbank anzeigen lasse, so enthält die Spalte usergroup keine Werte als Zahlen sondern steht da:
[BLOB - 1 Bytes] bei einem Eintrag und...
[BLOB - 0 Bytes] bei keinem Eintrag!?
...ansonsten sind die beiden Einträgen aber identisch:
FELD: usergroup
TYP: tinyblob
ATTRIBUTE: BINARY
NULL: Nein
Was ist denn hier das Problem?
Kann man die Datenbank umstellen, so das richtige Werte ausgegeben werden? Oder wie müsste man die Zeile...
$ugroup = $GLOBALS['TSFE']->fe_user->user['usergroup'];
...umschreiben, damit es auch mit diesen BLOB-Einträgen funktioniert??