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

Benutzer Login (CMS)

Im eigenen CMS wird heute das Login der Benutzer ermöglicht. Dafür benutzen wir das zuvor erstelle Seitentypensystem.

Fangen wir als erstes an mit dem speichern des Seitentypes. Dazu muss der Funktion create der Klasse /system/classes/page.php die Editor Spalte gefüllt werden:

  function create($dirpraefix,$alias,$editor){
    $res = $GLOBALS['db']->Execute("INSERT INTO {'dbprefix'}pages (alias,editor) VALUES ('".$alias."','".$editor."')");
    if($res){
      $args['id']     = $GLOBALS['db']->InsertID();
      $args['editor'] = $editor;
      $args['alias']  = $alias;
      EventManager::raiseEvent("page_created","../",$args);
    }
    return $GLOBALS['db']->InsertID();
  }

Da muss natürlich auch in der Datei /admin/includes/site-new.php der Wert übergeben werden:

$id = Page::create("../",$dir.$db->EscapeString($_POST['alias']),$db->EscapeString($_POST['type']));

Nun kümmern wir uns um das Login selbst. Hierzu müssen wir in der Datenbank den Typ Login einfügen:

INSERT INTO `cms_pagetypes` ( `id` , `class` , `name` )
VALUES (
'2', 'login', 'Login'
);

Diese Änderung muss auch in der Datei /installer/installer.php durchgeführt werden:

mysql_query("INSERT INTO `".$this->params[3]['praefix']."pagetypes` VALUES (2, 'login', 'Login');");

Die neue Klasse /system/classes/login.php selbst ist relativ einfach. Sie funktioniert so wie das Admin-Login:

<?PHP
  class Login extends Editor{
  
    public function display(){
        ?>
            <h2>Login</h2>
        <?PHP
        if($_POST['name']){
            $_SESSION['user'] = new User();
            if($_SESSION['user']->login($_POST['name'],$_POST['password'])){
                echo "Hallo ".$_SESSION['user']->name;
            }
            else{
                echo "Login fehlgeschlagen!";
            }
        }
        if(!isset($_SESSION['user'])){
            ?>
            <form action="<?PHP echo $_SERVER['SCRIPT_URI']; ?>" method="POST">
                <table>
                    <tr>
                        <td>Benutzername:</td>
                        <td><input name="name" /></td>
                    </tr>
                    <tr>
                        <td>Passwort:</td>
                        <td> <input name="password" type="password" /></td>
                    </tr>
                </table>
                <input type="submit" value="Login" />
            </form>
            <?PHP
        }
    }
    
    public function displayEditable(){
        ?>
          <input name="save" type="submit" value="&Auml;ndern" onclick="form.action='<?PHP echo $_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'] ?>' ; target='_self' ; return true" />
        <?PHP
    }
    
    public function save($newPage,$oldPage){
    }    
}
?>

Damit das mit der Session auch funktionier muss in der Datei /index.php noch ein session_start:

<?PHP
  function __autoload($class_name){
      require_once "system/classes/".strtolower($class_name).".php";
  }
  session_start();
  include("system/settings.php");
  include("system/filterfilename.php");
  include("system/sys.php");
  $db = new MySQL('system/dbsettings.php');
  $db->Connect();
  $currentpage = new Page();
  $currentpage->loadProperties($GLOBALS['db']->EscapeString($_GET['include']));
  if(!$_GET['skin']){
    include(SkinController::getCurrentSkinPath()."/index.php");
  }
  else{
    include('system/skins/'.$_GET['skin']."/index.php");
  }
?>

Nun könnt ihr euch im Admin-Bereich eine Login Seite anlegen und das ganze mal testen.