[Erledigt] Modifizierung der Benutzeranmeldung

Begonnen von Alex__, 12 Juni 2008, 14:35:15

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Alex__

Hallo liebe Pragma-Gemeinde,

ich habe die Benutzeranmeldung komplett umstrukturiert; solange ich die vorhandenen Tabellenspalten von {prefix}_users einfach umbenannt habe, hat das auch wunderbar geklappt. Nun wollte ich aber auch noch zusätzliche Spalten in die Tabelle einfügen, doch dann klappt (ohne Weiteres) das Editieren als Benutzer (und Admin) nicht mehr.

Mir würde es reichen, wenn mir jemand einen Tipp für das Editieren als eingeloggter Bentuzer (im Kontrollzentrum unter 'Ihre Informationen') geben würde. Klickt man diesen Button im Kontrollzentrum als eingeloggter Benutzer an, so wird die php-Datei edituser.php aufgerufen.
In dieser Datei wiederum wird eine Varibale Namens  $userinfo angelegt und durch einen Aufruf der Funktion mxGetUserData('fromdb') befüllt.

Die Funktion mxGetUserData('fromdb')  ist definiert in der Datei mxapi.php und liegt im Ordner includes. Doch aus dieser Datei werde ich nicht schlau.

Wie funktioniert die DB-Anfrage (siehe auch der u.s. Code)?


/**
* Abfragen der User-Daten des aktuellen Users.
*
* @staticvar mixed $myuserinfo Variable zum Speichern der Ergebnisse
* @param bool $forceDB Mit dem optionalen Parameter kann die Datenbankabfrage erzwungen werden
* @return mixed Liefert ein Array mit den Userdaten des aktuellen Users zurueck
*/

function mxGetUserData($forceDB = 0)
{
    global $user_prefix;
    static $myuserinfo;
                       
    if (isset($myuserinfo) && !$forceDB) {
        return $myuserinfo;
    }
       
        //Anlegen des Ergebnis-Arrays
       
    $userinfo = array();
    if (MX_IS_USER) {
        $user2 = base64_decode(mxSessionGetVar("user"));
        $user3 = explode(":", $user2);
        $GLOBALS['mxSkipSqlDetect'] = true;
                //SQL-Abfrage
        $result = sql_query("select *, (YEAR(CURRENT_DATE) - YEAR(user_bday)) - ( RIGHT(CURRENT_DATE,5) < RIGHT(user_bday,5)) AS user_age from ${user_prefix}_users where uname='" . mxAddSlashesForSQL(substr($user3[1], 0, 25)) . "' and pass='" . mxAddSlashesForSQL(substr($user3[2], 0, 32)) . "' and user_stat=1");
                echo "SQL: $result";
        if (is_resource($result)) {
            $userinfo = sql_fetch_assoc($result);
            sql_free_result($result);
            if (!empty($userinfo['uid'])) {
                $past = time() - MX_SETINACTIVE_MINS ;
                $userinfo['user_age'] = (empty($userinfo['user_bday']) || $userinfo['user_bday'] == '0000-00-00') ? 0 : (int)$userinfo['user_age'];
                $userinfo['user_online'] = true;
                $userinfo["user_ingroup"] = (empty($userinfo["user_ingroup"])) ? 1 : $userinfo["user_ingroup"];
            }
        }
    }
    $myuserinfo = $userinfo; // static !!
    return $userinfo;
}


LG
Alex

Alex__

Hallo,

für alle die sich dafür interessieren:

Die Abfrage
$result = sql_query("select *, (YEAR(CURRENT_DATE) - YEAR(user_bday)) - ( RIGHT(CURRENT_DATE,5) < RIGHT(user_bday,5)) AS user_age from ${user_prefix}_users where uname='" . mxAddSlashesForSQL(substr($user3[1], 0, 25)) . "' and pass='" . mxAddSlashesForSQL(substr($user3[2], 0, 32)) . "' and user_stat=1");

liefert eine Referenz auf sämtliche User-Daten, die eingegeben wurden oder auch nicht. Welche Daten man dann modifizieren will oder nicht wird dann z.B. in der Datei edituser.php festgelegt mit Hilfe eines assoziativen Arrays.

LG
Alex