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
Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project