Да, однако вам нужно установить флаги Binding для поиска частных полей (если вы ищете члена вне экземпляра класса).
Необходимый флаг привязки: System. Reflection.BindingFlags.NonPublic
Хорошо, вот моя версия CMS. Здесь вы можете найти все мои файлы в zip-архиве: http://chechi.be/midas/simple-cms.zip.
Это страница администрирования:
<?php session_start();?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>CMS</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<div id="main">
<h1>CMS</h1>
<?php
if (empty($_POST) && isset($_GET['action'])) {
$action = $_GET['action'];
switch ($action) {
case 'logout':
session_unset();
session_destroy();
break;
}
}
if (!isset($_SESSION['user'])) {
$user = '';
$pass = '';
if (isset($_POST['login'])) {
$user = strtolower(trim($_POST['user']));
$pass = $_POST['pass'];
$errors = array();
if ($user == '' || $user != 'admin') {
$errors['user'] = '';
}
if ($pass == '' || $pass != '123456') {
$errors['pass'] = '';
}
if (empty($errors)) {
$_SESSION['user'] = $user;
} else {
echo '<p class="error">Please fill in your correct ';
if (isset($errors['user']))
echo 'username';
if (count($errors) == 2)
echo ' and ';
if (isset($errors['pass']))
echo 'password';
echo '.</p>', "\n";
}
}
}
if (isset($_SESSION['user'])) {
$user = $_SESSION['user'];
?>
<div id="headertext">
<p class="l">You are logged in as <strong><?php echo $user?></strong>.</p>
<p class="r"><a href="?action=logout">Logout</a></p>
</div>
<?php
if (isset($_POST['edit'])) {
if (file_put_contents('homecontent.txt', $_POST['homecontent']) !== FALSE)
echo '<p class="succes">Your changes are saved.</p>', "\n";
}
$homecontent = file_get_contents('homecontent.txt');
?>
<form method="post" action="">
<p>Here you can edit your homepage text:</p>
<textarea name="homecontent" id="homecontent" rows="20" cols="55"><?php echo $homecontent?></textarea>
<p><button type="submit" name="edit">Save changes</button></p>
</form>
<?php } else {?>
<form method="post" action="" id="login">
<p>
<label for="user">Username:</label><input type="text" name="user" id="user" value="<?php echo $user?>" />
</p>
<p>
<label for="pass">Password:</label><input type="password" name="pass" id="pass" value="<?php echo $pass?>" />
</p>
<p>
<button type="submit" name="login">Login</button>
</p>
</form>
<?php }?>
</div>
</body>
</html>
Не должно быть большой работы, чтобы кодировать это с нуля. Все, что вам нужно - это admin.php с какой-то аутентификацией и одной формой. Я установил время и сделал это за 7 минут:
if(isset($_GET['login'])) {
// Check user credentials from db or hardcoded variables
if($_POST['username'] == 'user123' && $_POST['password'] == 'pass123') {
$_SESSION['logged'] = true;
} else {
$loginerror = 'Invalid credentials';
}
}
if(isset($_GET['logout'])) {
$_SESSION = array();
session_destroy();
}
if(!isset($_SESSION['logged']) || $_SESSION['logged'] !== true): ?>
<form method="post" action="admin.php?login">
<?php if(isset($loginerror)) echo '<p>'.$loginerror.'</p>'; ?>
<input type="username" name="username" value="<?php isset($_POST['username']) echo $_POST['username']; ?>" />
<input type="password" name="password" />
<input type="submit" value="Login" />
</form>
<?php endif;
if(isset($_SESSION['logged']) && $_SESSION['logged'] === true):
// Save contents
if(isset($_GET['save'])) {
file_put_contents('contents.txt', $_POST['contents']);
}
// Get contents from db or file
$contents = file_get_contents('contents.txt');
?>
<a href="admin.php?logout">Logout</a>
<form method="post" action="admin.php?save">
<textarea name="contents"><?php echo $contents; ?></textarea>
<input type="submit" value="Save" />
</form>
<?php endif;
Просто объедините эти сегменты, чтобы получить полный код. Этот фрагмент кода имеет аутентификацию, функциональность выхода из системы и сохраняет содержимое тексттереи в файл. Или же вы можете изменить это так, чтобы пользователи и содержимое находились в базе данных.
Лично мне потребовалось бы больше времени, чтобы найти подходящую легковесную CMS и настроить ее на работу.
Посмотрите на TiddlyWiki . Я не уверен, есть ли в нем средства для входа в систему и т.д., но в нем есть все основные особенности маленькой CMS.
.Используйте Wordpress и создайте простую тему. Wordpress тоже имеет историю статей, поэтому легко вернуться назад в случае ошибки и т.д.
.Мне нравится Wordpress. Это технологически "блогерское" программное обеспечение, но его очень легко расширить до симпатичной маленькой CMS.
.Это просто. Вы можете кодировать одну за 10 минут (или спросить меня).
Просто страница с админ-файлом для редактирования text.txt.
.Мне очень нравится Zimplit для проектов, состоящих из "очень нескольких страниц". У них есть блестящая концепция действительно минималистичного WYSIWG-редактора, который редактирует всю страницу (не только содержимое). И никаких баз данных и прочей ерунды.
Я обнаружил, что многие клиенты могут сразу же понять эту концепцию".