Forenscript

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Forenscript

    Hallo,

    man kann ja bekanntlich immer dazulernen indem man ein eigenes Script schreibt. Ich denke das ich relativ viel kann auch wenn ich natürlich immernoch gewillt bin mehr zu lernen. Darum würd ich gerne mal eine eigene Forensoftware schreiben. Ich habe auch einpaar Gedanken dazu und hätte gern vielleicht hier und da einpaar tipps.

    Struktur

    Die indexdatei includiert die wichtigsten Dateien wie z.b. die Datei mit den MySQL daten, php endung für Leute die auf ihrem Server php4 oder dergleich schreiben müssen, die Sessions und vielleicht noch eine Sprachdatei. Im Bodytag werden die Tabellen includiert die man im AdminPanel auch erweitern kann also neue hinzufügen (wie das genau gehen soll weiß ich auch noch nicht...). Auch die Links zu den Verschiedenen Foren müssen in dieser Datei gegeben sein, per Get sodass diese auch verlinkt werden können:

    http://myforum.de/index.php?boardid=1

    In den boards ist es dasselbe der Link zu den Threads heisst dann natürlich dann anders:

    http://myforum.de/board.php?threadid=1

    Die verschiedenen Profile sind ebenfalls über get zu erreichen:

    http://myforum.de/profil.php?id=1

    Für die verschiedenen Boards und Threads sollte ein Template reichen damit es auch später mit wenigen HTML kenntnissen oder WYSIWYG editoren nachbearbeitet werden kann. Selbiges gilt für die Profile.

    Die MySQL struktur könnte folgendermaßen aussehen:

    user - beinhaltet die Nutzer mit deren Angaben, Einstellungen und Nutzergruppen
    posts - beinhaltet den Post, den Autor, die BoardID und das Datum
    threads - beinhaltet Threadtitel, Nachricht, Autor, Datum und die Boardid
    Boards - beinhaltet BoardID, Name des Boards und ggf. beschreibung
    Admintables - beinhalten verschiedene Konfigurationen die der Admin vorgenommen hat in seinem CP und natürlich auch die des ModCPs welche die Moderatoren vorgenommen haben...
    Anhangtables sollten vielleicht gesondert sein um die Anhänge zu verwalten die dann dementsprechend im ACP abgerufen werden können

    Ansonsten unter Umständen noch Tables für BBCodes, Avatare, Smilies, events, Kalendar, Aktionlogs der Admins und Mods, für PNs, Umfragen, Ranks und Styles.

    AdminCP

    Das AdminCP soll nur verfügar sein wenn der User auch wirklich admin ist also circa:

    PHP-Code:
    if(logged_in AND $usergroup == "Admin"){
    echo 
    '<a href=admincp.php?session='$PHPSESSID .'>AdminCP</a>';

    Im AdminCP könnte man die SessionID dann noch prüfen denn es könnte ja auch jemand kommen und einfach admincp.php im Browser eingeben.

    Nun nehmen wir an der User ist eingeloggt und Admin und alles hat geklappt.

    Dann wäre er im admincp und würde ein kleines Overview sehen. Z.B. wann das Board erstellt wurde, wieviele Member es hat, wieviele Posts, Threads und wer alles Online ist.

    Links dann die Navigationsleiste. Es wird bei jeder Seite überprüft ob der Administrator auch die Rechte dazu hat denn es soll ja vielleicht auch Admins mit beschränkten rechten geben. Also:

    PHP-Code:
    if($usergroup == "Admin" && $adminrechte == $full){
    tuwas
    }elseif($usergroup == "Admin" && $adminrechte == $half){
    tuwas anderes
    }
    ... 
    Die einstellungen werden wie schon gesagt in der DB gespeichert. Nehmen wir an der Admin will eine Signaturlänge festlegen. Also wird ein Formular mit einer Zahl abgeschickt, diese Zahl wird in der DB gespeichert und später im Profil wird das alles überprüft anhand der Daten in der DB. Kein Problem, denke ich.

    Wenn der Admin einen User Sperren will wird die Nutzergruppe geändert, auch kein Problem.

    Thread.php

    Sobald ein Thread abgeschickt wird, also sobald das Formular gesendet wurde wird der Nutzer weitergeleitet:

    PHP-Code:
    if(!empty($beitrag) && !empty($threadtitel)){
    echo 
    "Dein Beitrag wurde erfolgreich eingetragen, du wirst nun weitergeleitet.";
    }
    elseif(!empty(
    $beitrag) && empty($threadtitel)){
    echo 
    "Bitte geben einen Threadtitel an.";
    }
    elseif(empty(
    $beitrag) && !empty($threadtitel)){
    echo 
    "Du hast keinen Beitrag eingegeben.";

    Nach erfolgreichem Eintrag in die DB wird der nutzer auf seinen Post weitergeleitet. Dort werden die Informationen angegeben wie beitragersteller etc. in der Post.php passiert dasselbe allerdings wird das ganze gespeichert in der post table und die ThreadID wird mit übergeben. Die ThreadID ist Unique, genau wie die BoardID.

    index

    In der Indexdatei und das wäre ein Problem für mich werden die verschiedenen Foren und die Kategorien gelistet.

    <!-- Kategorie -->
    <!-- BoardID1 -->

    Aber wie kann der Admin über ACP Board hinzufügen...?

    Beispiel: ich wähle alle BoardIDs aus der SQL und dann:

    PHP-Code:
    <?
    //Kategorie
    echo $row->Kategorie; //where BoardID == 1
    echo $row->Boards; //where ID == 1
    ?>
    Das wäre meine lösung und wenn die ID nicht gefunden wird, wird nichts angezeigt. Problem: wenn ich 4 IDs vordefiniere kann der Admin nicht mehr als 4 Board und Kategorien haben. Das würde ich lösen indem ich die Datei überschreibe sobald der Admin ein neues Board hinzufügt. Das heisst allerdings auch das die Datei immer größer wird. Also muss es auch eine andere Möglichkeit geben, die ich noch suche.

    Im Grunde war es das schon alles andere ist Schnick Schnack und kann auch später hinzugefügt werden.

    Rechtschreib- und Grammatikfehler sind gewollt und Copyrighted :P
    Zuletzt geändert von Everdream; 10.05.2007, 22:11.

  • #2
    Was meinst du mit:

    Problem: wenn ich 4 IDs vordefiniere kann der Admin nicht mehr als 4 Board und Kategorien haben.
    ?

    mfg nOe
    "I am what I am and I do what I can..."
    Meine HP -- Mein GPG-Key
    Meine Projekte: WebStorage 2.0 -- easyAJAX-Chat 2.2.0 (beta)

    Kommentar


    • #3
      Nehmen wir an ich schreib das jetzt alles. Hab jetzt nich grad nen guten Faden dahin aber wenn ich die Boards ausgeben lasse dann...

      Also verbindung zur DB steht die Table wurde ausgewählt und alles ist bereit ausgelesen zu werden. Muss ich dann nur:

      echo $row->Boards;

      Machen? Also damit alle schön untereinander aufgelistet werden? Ich muss ja auch jedes Board in eine andere Kategorie bringen können und da ist das Problem:

      echo $row->Kategorie;
      echo $row->Board;

      würde ausgeben:
      cat1
      cat2

      board1
      board2

      ich will ja aber:

      cat1
      board1

      cat2
      board2

      Was ich damit meinte ist ich könnte in die index datei schreiben:

      echo $row->cat1;
      echo $row->board1;


      echo $row->cat2;
      echo $row->board2;

      Aber das wäre ja irgendwann mal zuende ich kanns ja nich bis 200 oder weiß der teufel vorgeben.

      Kommentar


      • #4
        Original geschrieben von Everdream
        Aber das wäre ja irgendwann mal zuende ich kanns ja nich bis 200 oder weiß der teufel vorgeben.
        Der Teufel würde, wenn er denn PHP programmieren würde, wohl zumindest schon mal was von Schleifen gehört haben.

        Wenn das bei dir nicht der Fall ist, dann überleg' dir das mit dem Forum lieber noch mal, und fang mit was kleinerem an - denn ich fürchte, du wirst dich ziemlich übernehmen.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Schleifen und Rekursion.

          Tabelle board_categories:
          - catID
          - description
          - [COLOR=red]parentID[/COLOR]

          und in die ParentID schreibst du die Oberkategorie rein, sprich wenn Kategorie #2 untergeordnet von Kategorie #1 ist:

          FÜGE EIN IN board_categories (catID, description, parentID) WERTE
          (1, 'Kategorie #1', 0),
          (2, 'Kategorie #2', 1;

          OffTopic:
          Das war jetzt eigentlich schon zu viel Hilfe

          Kommentar


          • #6
            Ah verdammt die Lösung ist immer so einfach...

            OffTopic:
            Wenn man nich denken kann sollte man das Denken anderen überlassen :P


            Edit: Achja wie siehts mit Forensicherheit aus?

            1. Captchas bei Registrierung:

            Captchas coden ist kein Problem... was ist sicherer Zahlen und Buchstaben im Reintext oder Bilder? Oder gibt es da keinen unterschied?

            2. Passwortverschlüsselung:

            Das Passwort wird natürlich mit md5() verschlüsselt... wenn ein neues angefordert werden soll kann man ja mit rand einpaar zahlen und buchstaben in die usertable schreiben Where $row->email == $email. Also man gibt seine email ein, die wird geprüft (Wert in der DB ist ja Unique) und das Passwort wird überschrieben und ein automatisch generiertes wird verschickt. Unter Umständen sollte man einen Bestätigungslink versenden damit der nutzer dann erst auf den Link klicken muss in der email um ein neues Passwort zu erhalten.

            3. Captchas bei Gastpostings

            Sonst noch was?
            Zuletzt geändert von Everdream; 13.05.2007, 06:17.

            Kommentar


            • #7
              Original geschrieben von Everdream
              2. Passwortverschlüsselung:
              [...]
              Also man gibt seine email ein, die wird geprüft (Wert in der DB ist ja Unique) und das Passwort wird überschrieben und ein automatisch generiertes wird verschickt.
              [...]
              Dann solltest du aber auch noch überprüfen, ob der Nutzer der Owner dieser eMail Adresse ist, denn sonst kann jeder User die Passwörter eines anderen ändern.. Besser wäre es dann auch - wie du selbst schon sagtest - einen Bestätigungslink in diese eMail zu packen

              mfg nOe
              "I am what I am and I do what I can..."
              Meine HP -- Mein GPG-Key
              Meine Projekte: WebStorage 2.0 -- easyAJAX-Chat 2.2.0 (beta)

              Kommentar


              • #8
                Fang doch erstmal mit der Grundstruktur an, ohne dich jetzt in Kleinigkeiten wie der Registrierung und den Captchas zu verzetteln.

                Das kann man immer noch machen, falls der Rest was geworden ist
                ich glaube

                Kommentar

                Lädt...
                X