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)
);
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)
);