Boardunity & Video Forum

Boardunity & Video Forum (https://boardunity.de/)
-   Forensoftware (https://boardunity.de/forensoftware-f5.html)
-   -   techeles reden ... (https://boardunity.de/techeles-reden-t1122.html)

solanum 31.12.2003 09:56

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", "[email protected]");
//$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 ;)

DaddyCool 31.12.2003 10:17

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.

solanum 31.12.2003 11:04

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.

DaddyCool 31.12.2003 12:52

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.

Akira 01.01.2004 16:33

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 :D

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.

solanum 01.01.2004 18:56

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.

Akira 01.01.2004 20:53

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? :D 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

Creator 02.01.2004 11:01

nuja ein paar fehler sind noch drin, ansonsten aber schon ziemlich gut.

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

Akira 02.01.2004 11:29

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 Uhr.

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