Zu den Aufzeichnungen der tutorials.de-Live-Workshops
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
277
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    xxSunFirexx xxSunFirexx ist offline Grünschnabel
    Registriert seit
    Sep 2010
    Beiträge
    1
    Wie bereits im Titel verraten arbeite ich derzeit an einem Großprojekt und das als Neuling.

    Es geht hierbei um ein Internet-Portal das irgendwann für recht viele User herhalten soll. Genau aus diesem Grund will ich, dass ich dies von Anfang an(wenn auch dann langsam,weil Neuling) auf sicheren Füßen steht. Da ich euch nicht weiter mit überflüssigem nerven will gehts direkt ans eingemachte:
    Achso,damit keine Unklarheiten auftreten,es geht hierbei um ein Rollen-online-Spiel(YES, its WoW )
    1. Wie sollte eine Userdatenbank aussehen? Ich erkläre diese Frage: Sollte in einer tabelle "user" alle Informationen enthalten die selbigen Betreffen? Bisher steht in meiner Datenbank folgendes:
    ID(Autoincrement+Primary)
    Benutzername(mit dem sich eingeloggt wird)
    Anzeigename(der dann für den Rest der Welt angezeigt wird)
    Passwort(in md5 natürlich )
    Email
    Avatar(hier soll der grafikpfad rein,also eher ein "Forumavatar")
    Charaktername
    Charakterklasse
    Skillungsrichtung1(spezialisierung innerhalb des spieles)
    SKillungsrichtung2(siehe 1)
    Permissions(die späteren zugriffsrechte im Forum)
    InGilde(es wird ein seperates Menü für gildenmitglieder geben,das nur solche sehn sollen)
    Rang(Administrator,Moderator,Community,Gildenmitglieder usw)

    Ist diese Art "dienlich"? also die Frage ist eher : Macht es etwas aus(Performance technisch) ob die datenbank selber 5 Informationen enthält oder 20?
    Auf der Seite an sich wird diese Datenbank vom Loginscript angesprochen und das wars eigentlich,da ich zb permissions in die session speichere,und die sich für gewöhnlich nicht verändern.

    2. Ich erhalte über ein Registrierungsscript mehrere Daten die dann als variable in ein query sollen,ich habe bereits von XSS gehört und weiss nicht ob meine derzeitigen sicherheitsmaßnahmen reichen:

    function clean($value)
    {
    htmlspecialchars($value);
    trim($value);
    strip_tags($value);
    }
    mysql_real_escape_string($registername);
    clean($registername);
    $registersql = "SELECT `username` FROM `user` WHERE `username` LIKE \"$registername\"";

    Natürlich wurde im Vorfeld $_POST['username'] in die variable $username gepackt...

    3. Soweit ich weiss,erlaubt mein server keinen PHP-Upload.... angeblich soll ich das per phpinfo(); herrausfinden.... welche zeile,bzw wo müsste ich da genau schauen?

    4. Bei der Profileditierung stoße ich derzeit auf meine Programmiergrenzen.... Ich würde gerne einen UPDATE befehl konstruieren der nur das updated was auch wirklich verändert worden ist.... Heisst im Klartext: Ein Formular das den Namen und das passwort und sagen wir das Alter des Users angibt. Er(aus welchen gründen auch immer,gehn wir einfach mal von einer Fehleingabe aus) würde sich gerne ein Jahr älter machen. Es soll nun möglich sein dass er sein Alter anpassen kann, und sein Passwort+Username frei bleibt-> also kein (ich schreibs jetzt in kurzform)
    Update user SET username,passwort,alter values xxsunfirexx,xxxxxx,17
    sondern ein
    update user set (wenn username vorhanden,dann username),(wenn passwort vorhanden,dann passwort),(wenn alter vorhanden,dann alter) values ......usw
    ich denke es ist verständlich ausgedrückt

    5. Ist es möglich als Neuling ein...sagen wir primitives Forum zu entwicklen? Also wirklich nur Grundfunktionen..... kein editieren kein gar nichts...einfach nur "Posten" und darauf dann wieder antworten können******
    Theoretisch ist es ja nichts anderes als meine bisher(funktionierende) shoutbox auch.... dort wird einfach der username,der inhalt,die uhrzeit,das datum und halt eine id gespeichert und,nach meinen wünschen angezeigt?
    Ich habe vor das dann später nach und nach zu erweitern,was aber auch gerne noch einige monate in anspruch nehmen darf,da ich es damit nicht all zu eilig habe
    5.1 Sollte ich dann für jede "unterkategorie" eine eigene tabelle erstellen? heisst:
    tabelle1: offtopic
    tabelle2: gildeninternes
    tabelle3: was anderes
    oder lieber eine tabelle "topics" und dort alle deponieren mit ner eigenen spalte die sich zb "zugehörigkeit" nennt und dort dann per SELECT xy FROM topics where zugehörigkeit = gilde machen?

    Ich glaub das wars dann vorerst... vielen dank schonmal im vorraus !
    Geändert von xxSunFirexx (04.09.10 um 12:12 Uhr)
     

  2. #2
    Registriert seit
    Apr 2004
    Ort
    Berlin
    Beiträge
    193
    Cheers

    Es ist wunderbar, dass du so viel Tatendrang hast aber 2 Dinge vorweg:
    a. Bitte wähle einen sinnvollen Thread-Namen, damit jeder sofort weiß, was du brauchst.
    b. Benutze die PHP-Tags, damit dein geposteter Code besser zu lesen ist.

    Nun zu deinen Fragen:

    1. Datenbankstruktur:
    Als erstes würde ich eine Tabelle anlegen, in der nur die Userdaten stehen, wie z.b. Account Id, Account Name, Email, Reg.Datum. Vielleicht noch ein paar Flags ob der Account bereits aktiviert wurde oder ob er gesperrt ist. Dann könntest du aus sicherheits gründen die letzten 3 IP's des User speichern.
    Nun würde ich mich an die Tabellen machen, die wichtig sind für einen Charakter. Als ersten eine Tabelle in der die Basisdaten des Charakter drin stehen und in der auch die Account Id steht, damit du Charaktere einem Account zuordnen kannst oder damit ein user auch mehrere Accounts haben kann.
    Für so kniffelinge Dinge wie ein Inventar könntest du z.b. einen Items-Table machen, in dem steht dann die Item Id, die Anzahl des Items und die Charakter Id. Dann haste du zwar eine ewig lange Tabelle mit allen items von allen Usern, aber du brauchst ja nur ein kurzes Skript was die alle Selected bei denen die Charakter ID = der ID des Spieler ist

    2. Sicherheit
    Es gibt dieverse PHP-Methoden, mit denen du Strings scannen kannst. Damit kannst du leicht herausfinden ob die angaben des User korrekt sind. Z.B. ob die E-Mail adresse ein @ Zeichen enthält und so weiter. Dann würde ich immer eine Aktivierungs-E-Mail und ein automtisch generiertes Passwort verschicken. Ich benutze zum generieren von Passwörtern immer folgende Variante:
    PHP-Code:
    $password md5time() * mt_rand199999 ) ); 
    Das ist sicherlich keine perfekte Methode, erzeugt aber zufällige Passwörter, die sich eigentlich nie doppeln sollten. Dann könntest du auch, wenn ein User seinen Account aktiviert ihn Zwingen ein mindestens 12 stelliges Passwort zu erstellen. Wichtig ist, dass du die Passwörter nicht im klartext speicherst sondern md5-kodiert (oder anders). Denn sonst kannst du Probleme mit den deutschen Datenschutz-Recht bekommen

    3. PHP-Upload
    (dauert 4sec bei Google )

    Die wichtigen PHP.ini Befehle:
    file_uploads
    upload_max_filesize
    max_input_time
    memory_limit
    max_execution_time
    post_max_size

    Weiterführende Informationen:
    http://www.radinks.com/upload/config.php

    4. Profil-Update
    Erstelle doch einfacah eine Funktion, die alle Formularfelder durchgeht und auf der Basis dann einen Query generiert:
    PHP-Code:
    // Pseudo-Code

    // Erstelle Query
    $query "UPDATE `$table` SET ";
    // Gehe alle Formular-Felder durch
    foreach($form as $field)
    {
        
    // Wenn ein Feld NICHT leer war dann mach was
        
    if(!empty($field)
        {
            
    // Erweiter den Query
            
    $query .= "field=$field";
            
    // wenn es nicht das letze field war
            
    $query .= ","// Damit die auch mit Komma getrennt sind ;)
        
    }
    }
    // Füge die Bedingung zum Query hinzu
    $query .= "WHERE username='blub'"); 
    Das ist auch wieder keine 100%ige-Variante, die du übernehmen solltest, lediglich ein Anstatz, wie du da rangehen könntest.

    5. Forum
    Benutze doch einfach ein bereits fertiges Forum, wie was Woltlab Burning Board oder phpBB. Denn wenn du wirklich ein Neuling bist, solltest du dir nicht zu viel zu muten. Stemme erstmal dein Browsergame-Projekt, daran wirst du schon noch genug zu tun haben

    Ich hoffe ich konnte die etwas weiter helfen

    philishake
     
    ...holiday from happiness...

    ...be water...

    visit: www.silent-wars.de

Ähnliche Themen

  1. PHP-Neuling sucht Hilfe
    Von WallOfDeath im Forum PHP
    Antworten: 3
    Letzter Beitrag: 27.01.10, 14:22
  2. Antworten: 3
    Letzter Beitrag: 27.02.06, 17:34
  3. Php neuling sucht php-programm
    Von 08/15 im Forum PHP
    Antworten: 10
    Letzter Beitrag: 21.10.04, 16:12
  4. Antworten: 1
    Letzter Beitrag: 05.08.04, 20:59
  5. Neuling sucht hilfe
    Von ziganow im Forum 3D Studio Max
    Antworten: 5
    Letzter Beitrag: 31.07.04, 12:43