[英]Function not defining variable in PHP
我已經繼承了以前的開發人員(不再提供幫助)的站點,因此我並不是一個PHP編碼器,因此請多多包涵。
我一直收到錯誤消息,指出一些變量未定義,並且即使我沒有登錄,CMS Admin工具欄也始終顯示在頁面頂部。
重要說明這僅在我的本地開發環境中發生。
錯誤:
Notice: Undefined variable: buttons in /Users/shortname/Sites/sitename.com/public_html/admin/editable.class.php on line 275
編輯這是完整的文件:
Pastablebin的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"); ?>
<?php setcookie("username", "", time() - 1, "/", ".sitename.com"); ?>
看看是否可以清除Cookie數據並刪除管理工具,但是那也不起作用。 我在本地開發環境中缺少哪些會導致這些錯誤的信息?
它給您一個提示,因為定義按鈕變量時,它超出了范圍。 因此,只需從以下位置更改代碼:
if($this->admin)
{
$buttons = $this->editButtons;
}
else
{
$butons = "";
}
對此:
$buttons = '';
if($this->admin)
$buttons = $this->editButtons;
這是簡寫代碼,您可以根據需要添加方括號。
我懷疑開發環境已打開警告級別,這就是為什么要這樣做。
轉到相關文件,並在第275行之前將變量“按鈕”定義為空白字符串。 您只需要在使用變量之前對其進行初始化。
$buttons = '';
在查看代碼倉后添加:
嘗試改變
$item["buttons"] = $buttons;
至
if (isset($buttons)) {
$item["buttons"] = $buttons;
}
else {
$item['buttons'] = '';
}
這樣,它僅在已經設置了$ buttons的情況下才調用它,您需要將$item['buttons']
設置為空白字符串,否則稍后使用時會拋出類似錯誤
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.