Kontakt aufnehmen

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="Ä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.

Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Cookie-Einstellungen

Helfen Sie dabei, uns noch besser zu machen. Wir nutzen Cookies und ähnliche Technologien, um die Website auf Ihre Bedürfnisse anzupassen. Zur Datenschutzerklärung

Auswahl speichern