Я унаследовал сайт от предыдущего (больше не доступного для помощи) разработчика, и я не очень разбираюсь в PHP-кодере, так что терпите меня.
Я получаю сообщение об ошибке, что некоторые переменные не определены, и панель инструментов CMS Admin продолжает отображаться вверху страницы, даже если я не вошел в систему.
Важное примечание Это происходит только в моей локальной среде разработки.
Ошибка:
Notice: Undefined variable: buttons in /Users/shortname/Sites/sitename.com/public_html/admin/editable.class.php on line 275
Редактировать Вот полный файл:
Pastebin из editable.class.php
На моей странице есть включение
<?php
include_once 'admin/editable.class.php';
$page = new page(6, 2, 0);
echo $page->get();
?>
Его задача - извлечь все элементы страницы из БД и выбросить их на страницу.
Включение появляется позже на странице (в нижнем колонтитуле)
<?
include_once "admin/editable.class.php";
$login = new dynamic;
if($login->isAdmin())
{
echo '
<div id="adminBar">
<div>
<h3>Admin Menu</h3> <span class="editable">Editable Pages: <a href="/company/media.php">In The Media</a> | <a href="/company/faq_about.php">FAQ</a> | <a href="/company/tradeshows.php">Tradeshows</a></span> <a class="logout" href="/admin">Logout</a>
</div>
</div>
';
}
?>
Что я предполагаю, это то, что показывает информационную панель CMS и кнопки, если вы авторизованный пользователь Проблема в том, что я не могу подтвердить подлинность, и я не могу получить предупреждения, чтобы уйти. Вот функции аутентификации в editable.class.php
:
function isAdmin()
{
if (isset($_COOKIE["admin"]) && $_COOKIE["admin"] === sha1("username".$this->salt.$this->users["username"]))
{
$this->admin = true;
return true;
}
else
{
$this->admin = false;
return false;
}
}
function login()
{
if($this->isAdmin())
{
return true;
}
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($this->users[$_SERVER['PHP_AUTH_USER']]) || $this->users[$_SERVER['PHP_AUTH_USER']] !== $_SERVER['PHP_AUTH_PW'])
{
header('WWW-Authenticate: Basic realm="Administration"');
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required';
exit;
}
else
{
setcookie("admin", sha1("username".$this->salt.$this->users["username"]), 0, "/", ".sitename.com");
$this->admin = true;
return true;
}
}
function logout()
{
header('HTTP/1.0 401 Unauthorized');
setcookie("username", "", time() - 1, "/", ".sitename.com");
}
Я попытался добавить <?php setcookie("username", "", time() - 1, "/", ".sitename.com"); ?>
, чтобы посмотреть, смогу ли я удалить данные cookie и удалить инструменты администратора, но это тоже не сработало. Чего мне не хватает в локальной среде разработки, которая могла бы вызвать эти ошибки?