Zur Boardunity Forenstartseite
  #1  
Alt 31.12.2003, 10:56
Mitglied
 
Registriert seit: 12.2003
Beiträge: 43

techeles reden ...


wie sieht es denn nun aus mit der eigenen boardsoftware, die hier entstehen soll? man sollte vielleicht einfach einmal beginnen. ich hätte hier zum beispiel schon einmal eine kleine klasse für die benutzerverwaltung. sie basiert auf phps sessions und das cookie management ist noch nicht eingebaut. verbessert doch einfach mal oder kritisiert - aber handelt!

edit: upload funktioniert nicht. daher hier:

die eigentliche benutzerverwaltung (user.php)
PHP-Code:
<?php

// Die Benutzerverwaltung.
class user {

    var 
$db "";

    
// Die Referenz zur Datenbankverbindung wird übernommen.
    
function user(&$database) {

        
$this->db = &$database;

    }

    
// Neue Benutzer können sich registrieren.
    
function register($username ""$password ""$email "") {

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

        
$select "SELECT userid FROM user WHERE username = '".addslashes($username)."' LIMIT 1";
        
$result $this->db->query($select);

        if(!
$result) {
            return 
false;
        }

        
$password md5($password);

        
$insert "INSERT INTO user (username, password, email) ";
        
$values "VALUES ('".addslashes($username)."', '".addslashes($password)."', '".addslashes($email)."')";
        
$result $this->db->query($insert.$values);

        if(
$result) {
            return 
$result;
        }

        return 
false;

    }

    
// Es wird überprüft, ob ein Benutzer angemeldet ist.
    
function logged() {

        if(!
session_is_registered("userid")) {
            return 
false;
        }

        return 
true;

    }

    
// Hier können sich Benutzer anmelden.
    
function login($username ""$password "") {

        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 $this->db->query_first($select);

        if(!
$result) {
            return 
false;
        }

        
$userid $result["userid"];
        
session_register("userid");

        return 
true;

    }

    
// Angemeldete Benutzer werden abgemeldet.
    
function logout() {

        
session_unregister("userid");

    }

    
// Verschiedene Daten eines Benuters werden zurückgegeben.
    
function userinfo($userid "") {

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

        
$select "SELECT userid, username, email FROM user WHERE userid = '".addslashes($userid)."' LIMIT 1";
        
$result $this->db->query_first($select);

        if(!
$result) {
            return 
false;
        }

        
$userdata = array();
        
$userdata["userid"] = $result["userid"];
        
$userdata["username"] = $result["username"];
        
$userdata["email"] = $result["email"];

        return 
$userdata;

    }

    
// Mit dieser Funktion können Benutzer ein neues Passwort anfordern.
    
function forgotten($userid "") {

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

        
$time intval(substr(microtime(), 28));
        
mt_srand($time);

        
$chars "abcdefghijklmnopqrstuvwxyz";

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

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

        
$select "SELECT email FROM user WHERE userid = '".addslashes($userid)."' LIMIT 1";
        
$result $this->db->query_first($select);

        if(!
$result) {
            return 
false;
        }

        
$email $result["email"];

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

        
$update "UPDATE user SET password = '".addslashes($password)."' WHERE userid = '".addslashes($userid)."'";
        
$result $this->db->query($update);

        return 
true;

    }

}

?>
die datenbankklasse (mysql.php)
PHP-Code:
<?php

// Die Datenbankanbindung.
class mysql {

    var 
$conn "";

    
// Die Verbindung zur Datenbank wird hergestellt.
    
function mysql($server ""$username ""$password ""$database "") {

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

        
$this->conn = @mysql_connect($server$username$password);
        @
mysql_select_db($database$this->conn);

    }

    
// Über diese Funktion werden Datenbankabfragen bearbeitet.
    
function query($sql "") {

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

        
$queryid = @mysql_query($sql$this->conn);

        if(
eregi("^SELECT"$sql)) {
            if(@
mysql_num_rows($queryid) == 0) {
                return 
false;
            }
            else {
                return 
$queryid;
            }
        }

        if(
eregi("^INSERT"$sql)) {
            return @
mysql_insert_id();
        }

        return 
$queryid;

    }

    
// Hier werden Datensätze in ein Array geschrieben.
    
function fetch_array($queryid = -1) {

        if(
queryid == -1) {
            return 
false;
        }

        
$record = array();
        
$record = @mysql_fetch_array($queryid);

        return 
$record;

    }
    
// Benutzter Speicher wird wieder freigegeben.
    
function free_result($queryid = -1) {

        if(
$queryid == -1) {
            return 
false;
        }

        return @
mysql_free_result($queryid);

    }

    
// Mit dieser Funktion wird nur der erste Datensatz einer Abfrage zurückgegeben.
    
function query_first($sql "") {

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

        if(!(
$queryid $this->query($sql))) {
            return 
false;
        }

        
$record = array();
        
$record $this->fetch_array($queryid);


        
$this->free_result($queryid);
        return 
$record;

    }
}

?>
eine testseite (test.php)
PHP-Code:
<?php

session_start
();

include(
"mysql.php");
include(
"user.php");

$mysql = new mysql("localhost""root""passwort""cms");
$mz = new user($mysql);

//echo $mz->register("flo", "passwort", "admin@floriandoerr.de");
//$mz->forgotten(1);

//$mz->login("flo", "passwort");
//$mz->logout();

if($mz->logged()) {
    
print_r($mz->userinfo(1));
}
else {
    echo 
"draussen";
}

?>
das datenbankdesign für die benutzerverwaltung
Code:
CREATE TABLE `user` (
  `userid` int(10) unsigned NOT NULL auto_increment,
  `username` varchar(50) NOT NULL default '',
  `password` varchar(50) NOT NULL default '',
  `email` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`userid`)
)
viel vergnügen ;)
  #2  
Alt 31.12.2003, 11:17
Benutzerbild von DaddyCool
Platzanweiser
 
Registriert seit: 10.2003
Ort: Niedersachsen
Beiträge: 306
Zitat:
Zitat von solanum
[...Viel Text...]
Bevor mit dem coden angefangen wird, muss erstmal eine Planungsphase kommen, d.h. es muss festgelegt werden, was geschrieben werden soll, welche Funktionen das ganze haben soll, an welche Standards sich gehalten werden soll (so dass jeder den Code gleich versteht etc.), was für techniken zum Einsatz kommen, wer für was zuständig ist.

Dann würde ich auch erstmal abwarten bis ein erstes Schema der Datenbank steht, sonst schreibt jeder was und nichts passt dann zusammen. Jeder hat bei den tabellen auch eigene Standards, die einen geben jedem Feld innerhalb einer tabelle einen Prefix, die anderen nur der Tabelle selbst.

Bevor ihr anfangt mit Code um euch zu werfen, klärt erstmal diese Punkte. Sonst endet alles nur im Chaos.

__________________
Fabian Martin
Fabian Martin

Blog | Twitter | XING
  #3  
Alt 31.12.2003, 12:04
Mitglied
 
Registriert seit: 12.2003
Beiträge: 43
meine intension war es eher, die sache ein wenig anzutreiben und die leute, die sich für dieses projekt "beworben" haben, ein wenig in fahrt zu bringen. in meinen augen geht es nämlich schon seit tagen/wochen nicht weiter mit der diskussion. weiter finde ich auch, dass man über features dann reden kann, wenn ein grundgerüst steht. beispiel? wir bauen ein board, daher ist eine pn funktion für den anfang unsinnig. darüber kann nachgedacht werden, wenn es ersteinmal etwas gibt, in das man solche features einbauen kann.

  #4  
Alt 31.12.2003, 13:52
Benutzerbild von DaddyCool
Platzanweiser
 
Registriert seit: 10.2003
Ort: Niedersachsen
Beiträge: 306
Das es nicht weitergeht hat einen Grund:
http://www.boardunity.de/showpost.ph...0&postcount=32

Starte doch am besten die Planungsphase.
Starte Themen zu den Features, der Technik, den Standards etc.

Alles andere kommt dann von allein.

__________________
Fabian Martin
Fabian Martin

Blog | Twitter | XING
  #5  
Alt 01.01.2004, 17:33
Benutzerbild von Akira
Mitglied
 
Registriert seit: 07.2002
Ort: Österreich
Beiträge: 237
ich habe ein forum erstellt:
http://akira.star-trek-galaxy.net/pr...orum/index.php

das forum wurde noch nie getestet, ich denke das ist die perfekte möglichkeit

bitte registriert euch und bewerbt euch unter UserCP -> Benutzergruppen für die Gruppe "Project Team". schreibt in die bewerbung einfach den benutzernamen den ihr hier in diesem forum habt hinein. THX

Nachdem ihr freigeschalten wurdet bekommt ihr zugang zu den internen foren wo wir alles weitere besprechen können.
einen ftp zugang und eine datenbank werde ich innerhalb der nächsten tage organisieren.

  #6  
Alt 01.01.2004, 19:56
Mitglied
 
Registriert seit: 12.2003
Beiträge: 43
mal von dem miesen layout abgesehen, ist das ja eine recht geile software. von dir? habe mich beworben und hoffe, die anderen werden folgen, dass das ganze ins rollen kommt.

  #7  
Alt 01.01.2004, 21:53
Benutzerbild von Akira
Mitglied
 
Registriert seit: 07.2002
Ort: Österreich
Beiträge: 237
Zitat:
Zitat von solanum
mal von dem miesen layout abgesehen, ist das ja eine recht geile software. von dir? habe mich beworben und hoffe, die anderen werden folgen, dass das ganze ins rollen kommt.

mieses layout????? willst du mich ärgern? mir gefällts ganz gut so.
naja, das ist eindeutig geschmacksache.
ja die software ist von mir. sie hat noch ein paar wenige mir bekannte bugs, ich denke aber das es ganz gut laufen wird so.


ich werde die anderen anschreiben

  #8  
Alt 02.01.2004, 12:01
Benutzerbild von Creator
Mitglied
 
Registriert seit: 11.2002
Ort: NRW / Düren
Beiträge: 110
nuja ein paar fehler sind noch drin, ansonsten aber schon ziemlich gut.

Beispiel: 'Signature' <- englisches wort wird genutzt 'Signatur' muss es heißen

  #9  
Alt 02.01.2004, 12:29
Benutzerbild von Akira
Mitglied
 
Registriert seit: 07.2002
Ort: Österreich
Beiträge: 237
Zitat:
Zitat von Creator
nuja ein paar fehler sind noch drin, ansonsten aber schon ziemlich gut.

Beispiel: 'Signature' <- englisches wort wird genutzt 'Signatur' muss es heißen
jo, stimmt.

dank sprachpaketen ist das nicht so schwer auszubessern. andererseits ist das mehr ein schönheitsfehler

Antwort


Stichworte
-

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
Gehe zu






1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24