0251 / 590 837 15
info@a-coding-project.de
;

Benutzerübersicht (CMS)

Heute fangen wir im selbst erstelltem CMS damit an, es für mehrere Benutzer auszustatten. Dadurch können später komplexere System wie zum Beispiel Foren darauf erstellt werden. Außerdem wird zum ersten mal die neue Template Engine eingesetzt.

Fangen wir an mit unserem Template. Das ist die Benutzerliste. Sie wird hier gespeichert: /system/templates/user_list.html:

<table>
  <thead>
    <tr>
      <td><strong>ID</strong></td>
      <td><strong>Name</strong></td>
      <td><strong>Rolle</strong></td>
      <td><strong>Aktionen</strong></td>
    </tr>
  </thead>
  <tbody>
    {LOOP:MENU}
    <tr>
      <td>{VAR:ID}</td>
      <td>{VAR:NAME}</td>
      <td>{VAR:ROLE}</td>
      <td>{VAR:ACTIONS}</td>
    </tr>
    {/LOOP:MENU}
  </tbody>
</table>

In der Klasse /system/classes/user.php gibt es nun die neue Funktion getAllUser():

  function getAllUser(){
    $users = $GLOBALS['db']->ReadRows("SELECT * FROM {'dbprefix'}user ORDER by name");
    foreach($users as $user){
      $res[] = $user;
    }
    return $res;
  }

Jetzt muss über den Punkt Menüs im Admin-Bereich dem {admin} der neue Eintrag als externe Url zu /admin/index.php?page=user hinzugefügt werden. Dies muss natürlich auch im /installer/installer.php vorgenommen werden:

      mysql_query("INSERT INTO `".$this->params[3]['praefix']."menu` VALUES (7, 1, 'Einstellungen', '/admin/index.php?page=settings',0);");
      mysql_query("INSERT INTO `".$this->params[3]['praefix']."menu` VALUES (8, 1, 'Benutzer', '/admin/index.php?page=user',0);");
      mysql_query("INSERT INTO `".$this->params[3]['praefix']."menu` VALUES (9, 1, 'Logout', '/admin/index.php?page=logout',0);");

Zu guter letzt kommt die neue Datei /admin/includes/user.phpan die Reihe. Sie bringt die User ins Template (später werden wir es auch ermöglichen, templates aus dem aktuellen Skin-Ordner zu laden):

<h1>Benutzer</h1>
<?PHP
  $userlist = new Template();
  $userlist->load("../system/templates/user_list.html");

  foreach(User::getAllUser() as $user){
    $index = $userlist->add_loop_item("MENU");
    $userlist->assign_loop_var("MENU", $index, "ID", $user->id);
    $userlist->assign_loop_var("MENU", $index, "NAME", $user->name);
  }

  $userlist->output();
?>

Bei den Rechten der Rollen hab ich mir schon was gutes ausgedacht: Wir steuern diese über die settings-Tabelle! Aber dazu bald mehr.

Kommentare

Daniel schrieb am 06.04.2010:

Für das rechte und Rollensystem habe ich auch einen Vorschlag. Lies Dir mal dieses durch. http://www.webmasterpro.de/coding/article/php-ein-einfaches-flexibles-rechtesystem.html

Stefan Wienströer schrieb am 06.04.2010:

Ich hätte da ehr an sowas wie settings-Tabelle überschreiben gedacht (natürlich vom Admin bestimmbar welche). Deine Variante hatte ich mir für den Updater überlegt. Aber ich werds mir heut Abend nochmal genauer ansehen.

Unheilig schrieb am 07.04.2010:

Bitte mal eine Aktuelle Datenbank db.sql an meine E - Mail. Habe noch so viele Fehler , die ich einfach nicht unter Kontrolle bekomme.Der Installer funktioniert einfach nicht bei mir. Danke

Daniel schrieb am 07.04.2010:

Ich bekomme ein Zugriff verweigert im Adminmenü nach der Installation über den Installer (xampp)

Stefan Wienströer schrieb am 07.04.2010:

Ich hab mir gedacht, dass Du alles kaputt machst wenn Du Admin-Rechte hast XD Ne Scherz, ist das sonne 50X-Meldung oder eine von PHP? Wenn ja welche.

Unheilig schrieb am 07.04.2010:

Nun auf der Index (Fatal error: Call to a member function fetch_object() on a non-object in C:xampphtdocscmssystemclassesmysql.php on line 39) zum Admin bereich (Warning: require_once(../system/classes/installer.php) [function.require-once]: failed to open stream: No such file or directory in C:xampphtdocscmsadminindex.php on line 4 Fatal error: require_once() [function.require]: Failed opening required '../system/classes/installer.php' (include_path='.;C:xamppphpPEAR') in C:xampphtdocscmsadminindex.php on line 4 ich brauche auch die Aktuelle db.sql ... kann nicht mit der instell instalieren und muss die Datenbanken per hand einspielen

Stefan Wienströer schrieb am 07.04.2010:

Lösch mal deine Cookies. Ähm aktuelle db.sql? Dafür ist doch der Installer da^^

Unheilig schrieb am 07.04.2010:

der installer geht nicht, gib mir ein Backup deiner Datenbank ... bitte

Daniel schrieb am 08.04.2010:

Ist ein Error 403. Komischerweise sehe ich wenn ich auf einen Menüpunkt zeige nur ein localhost/admin/.html. Klicke ich darauf (ich sehe das Adminmenü) kommt die Fehlerseite.

Stefan Wienströer schrieb am 08.04.2010:

ahh!!! Kannstr Du mal die Menü-Tabelle nachsehen und die {admin}-Einträge hier posten?

Daniel schrieb am 09.04.2010:

Die Adminmenüeinträge passen alle nur das der type bei allen 0 (Null)ist.

Unheilig schrieb am 09.04.2010:

So admin bereich geht , habe aber auf der Startseite : Call to a member function fetch_object() on a non-object in C:xampphtdocssystemclassesmysql.php on line 39 was kann das sein ?

Stefan Wienströer schrieb am 09.04.2010:

@Daniel setz den mal auf 1, dann sollte es klappen. Ich werd das mal im nächsten Beitrag im Installer ändern. @unheilig: kannste mal unten in der Funktion fetch_row ein 'echo $this->connection->error Ausgeben?

Daniel schrieb am 10.04.2010:

Hat funktioniert.

Stefan Wienströer schrieb am 11.04.2010:

super