PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Usermanagement [nicht auf Mitgliedersuche!]



solanum
24.08.2003, 19:14
Hallo,

ich habe für ein zukünftiges Projekt vor, eine Userverwaltung für eine Community zu scripten. Hierfür suche ich zwar keine Helfer, wie es in diesem Forum normalerweise üblich ist, doch evtl. können sich andere Anregungen holen oder (und darauf hoffe ich im Speziellen) mich auf Mängel aufmerksam machen. Das ganze startet im Moment recht klein, soll aber mit der Zeit noch wachsen (Rechtevergabe, Administration, etc.).

Als erstes möchte ich hier die Funktionen register() und forgotten() veröffentlichen, die sich selbst erklären sollten. Hier also der Code, der ein Teil der Klasse "user" ist.
class user {

function register($username = "", $password = "", $email = "") {
global $conn;

if(empty($username) || empty($password) || empty($email)) {
return false;
}

$select = "SELECT userid FROM user WHERE username = '".addslashes($username)."'";
$result = mysql_query($select, $conn);

if(mysql_num_rows($result)) {
return false;
}

$password = md5($password);

$insert = "INSERT INTO user (username, password, email) ";
$values = "VALUES ('".addslashes($username)."', '".addslashes($password)."', '".addslashes($email)."') ";
$result = mysql_query($insert.$values, $conn);

if($result) {
$id = mysql_insert_id();
return $id;
}

return false;
}

function forgotten($userid = "") {
global $conn;

if(empty($userid)) {
return false;
}

$time = intval(substr(microtime(), 2, 8));
mt_srand($time);

$chars = "abcdefghijklmnopqrstuvwxyz";

for($i = 0; $i < 5; $i++) {
$number[intval(mt_rand(0, 9))] = mt_rand(0, 9);
}

for($i = 0; $i < 10; $i++) {
if($number[$i]) {
$password .= $number[$i];
}
else {
$password .= $chars[mt_rand(0, strlen($chars) - 1)];
}
}

$select = "SELECT email FROM user WHERE userid = '".addslashes($userid)."'";
$result = mysql_query($select, $conn);

if(!mysql_num_rows($result)) {
return false;
}

while($row = mysql_fetch_array($result)) {
$email = $row["email"];
}

@mail($email, $password, $password);

$password = md5($password);

$update = "UPDATE user SET password = '".addslashes($password)."' WHERE userid = '".addslashes($userid)."'";
$result = mysql_query($update, $conn);

return true;
}

}Die dazugehörige Datenbankstruktur ist denkbar einfach:
CREATE TABLE user (
userid int(10) unsigned NOT NULL auto_increment,
username varchar(50) NOT NULL,
password varchar(50) NOT NULL,
email varchar(50) NOT NULL,
PRIMARY KEY (userid)
);

solanum
24.08.2003, 21:58
function userinfo($userid = "") {
global $conn;

if(empty($userid)) {
return false;
}

$select = "SELECT username, email FROM user WHERE userid = '".addslashes($userid)."' LIMIT 1";
$result = @mysql_query($select, $conn);

if(!@mysql_num_rows($result)) {
return false;
}

$userdata = array();

while($row = @mysql_fetch_array($result)) {

$userdata["id"] = addslashes($userid);
$userdata["username"] = $row["username"];
$userdata["email"] = $row["email"];
}

return $userdata;
}Diese Funktion gibt diverse Daten des gewünschten Benutzers in einem Array zurück.

solanum
25.08.2003, 08:25
Hm, ich bin gerade dabei, die Sessionverwaltung zu preogrammieren. Jedoch funktioniert das ganze im Moment noch nicht richtig - ich habe aber keine Ahnung warum. Hier der Code:
function logged() {
if(!session_is_registered(userid)) {
return false;
}

return true;
}

function login($username = "", $password = "") {
global $conn;

if(empty($username) || empty($password)) {
return false;
}

$password = md5($password);

$select = "SELECT userid FROM user WHERE username = '".addslashes($username)."' AND password = '".addslashes($password)."' LIMIT 1";
$result = @mysql_query($select);

if(!@mysql_num_rows($result)) {
return false;
}

while($row = mysql_fetch_array($result)) {
$userid = $row["userid"];
}

$_SESSION["userid"] = $userid;
return true;
}

function logout() {
session_unregister(userid);
}

solanum
28.08.2003, 11:20
So, hier ist die aktuelle Klasse mit folgenden Funktionen: register() - Neue Benutzer registrieren forgotten() - Neues Passwort wird generiert und gemailt userinfo() - Benutzerdaten werden in Array $userdata geschrieben login() - Benutzer wird eingelogged logout() - Benutzer wird ausgelogged logged() - Es wird überprüft, ob der User ein - oder ausgelogged ist