Ich habe eine Seite von einem früheren (nicht mehr für Hilfe verfügbaren) Entwickler geerbt und ich bin nicht viel von einem PHP-Programmierer, um damit zu beginnen, ertragen Sie mit mir.Funktion definiert keine Variable in PHP
Ich erhalte eine Fehlermeldung, dass einige Variablen sind nicht definiert und das CMS Admin Toolbar hält am oberen Rand der Seite zeigt nach oben, auch wenn ich nicht angemeldet bin.
Wichtiger Hinweis Dies geschieht nur in meinem lokale Entwicklungsumgebung.
Der Fehler:
Notice: Undefined variable: buttons in /Users/shortname/Sites/sitename.com/public_html/admin/editable.class.php on line 275
bearbeiten ist die komplette Datei:
Pastebin of editable.class.php
In meiner Seite habe ich ein
<?php
include_once 'admin/editable.class.php';
$page = new page(6, 2, 0);
echo $page->get();
?>
Es ist Aufgabe umfassen bekam ist es, alle Seitenelemente zu greifen aus der DB und wirf es auf die Seite.
Die Include erscheint später in der Seite als auch (in der Fußzeile)
<?
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>
';
}
?>
Was ich davon ausgehen, ist das, was die CMS Infoleiste zeigt und Schaltflächen, wenn Sie ein authentifizierter Benutzer sind. Das Problem ist, ich kann mich nicht authentifizieren und ich kann die Warnungen nicht weggehen. Hier ist die Authentifizierungsfunktionen in 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");
}
Ich versuchte <?php setcookie("username", "", time() - 1, "/", ".sitename.com"); ?>
Hinzufügen zu sehen, ob ich die Cookie-Daten löschen konnte und entfernen Sie die Admin-Tools aber, dass auch nicht funktioniert. Was fehlt mir in meiner lokalen Entwicklungsumgebung, die diese Fehler verursachen würde?
Hier ist die Paste bin ... http://pastebin.com/ir3uAXK2 – Ofeargall
Ich entschuldige mich für das Verlassen der mod relevanten Teil. – Ofeargall
Awesome, aktualisierte meine Antwort (es ist eine ziemlich einfache Lösung). –