簡體   English   中英

函數未在PHP中定義變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM