Php 调用未定义函数错误,即使函数已定义

Php 调用未定义函数错误,即使函数已定义,php,runtime-error,Php,Runtime Error,我有一个文件是会话安全的“admin.php”。这是登录后的默认页面。 这将导致以下错误: 致命错误:调用第14行C:\xampp\htdocs\cd-website\cms\admin.php中未定义的函数listPages() 这里有两种解决方案,一种是使用上面的类方法 如果使用上述方法,则应在调用该函数之前定义该函数 所以 这里有两个解决方案,一个是使用上面的类方法 如果使用上述方法,则应在调用该函数之前定义该函数 所以 您在if块中声明了一个函数,这可能很棘手。根据,在执行达到函数定义之

我有一个文件是会话安全的“admin.php”。这是登录后的默认页面。 这将导致以下错误:

致命错误:调用第14行C:\xampp\htdocs\cd-website\cms\admin.php中未定义的函数listPages()


这里有两种解决方案,一种是使用上面的类方法
如果使用上述方法,则应在调用该函数之前定义该函数

所以


这里有两个解决方案,一个是使用上面的类方法 如果使用上述方法,则应在调用该函数之前定义该函数

所以


您在
if
块中声明了一个函数,这可能很棘手。根据,在执行达到函数定义之前,它们将不可用,但如果将函数放在外部,则顺序无关紧要,函数在整个脚本中都可用

<?php
bar(); // OK
function bar()
{
  echo "I exist immediately upon program start.\n";
}

if (TRUE) {
  foo(); // Fails because `foo` isn't defined yet.
  function foo()
  {
    echo "I don't exist until program execution reaches me.\n";
  }
}

您在
if
块中声明了一个函数,这可能很棘手。根据,在执行达到函数定义之前,它们将不可用,但如果将函数放在外部,则顺序无关紧要,函数在整个脚本中都可用

<?php
bar(); // OK
function bar()
{
  echo "I exist immediately upon program start.\n";
}

if (TRUE) {
  foo(); // Fails because `foo` isn't defined yet.
  function foo()
  {
    echo "I don't exist until program execution reaches me.\n";
  }
}

我对php不是特别熟悉,但看起来您只是在大if块中定义函数。您可能遇到了php处理作用域的方式


尝试将函数定义放在if块之外,看看会发生什么?

我对php不是特别熟悉,但看起来您只是在那里的大if块中定义函数。您可能遇到了php处理作用域的方式

<?php
/*
* initialize session for admin
*/
session_start();

if(isset($_SESSION['admin_user']))
{
    require_once '../cms/config.php';

    $action = isset($_POST['action']) ? $_POST['action'] : '';

    if ($action == null)
    {
        listPages();
        exit;
    }


    /*Functions */
    function ManagePages()
    {
        listPages();
    }

    function listUsers()
    {
        // include listusers.php here. required rows is in listusers.php file
    }

    function listOrders()
    {
        // include listorders.php here
    }

    function  listBanners()
    {
        // include listbanners.php here
    }

    function  NewsletterUsers()
    {
        // include listNUsers.php here
    }

    function listquestions()
    {
        // include listquestions.php here.
    }

    function listTesti()
    {
        // include listTesti.php here.
    }

    function Newsletter()
    {
        //  include newsletter.php
    }

    function listPages()
    {
        //  include listPages.php here
    }


    /*
     * using switch for choosing function
     */
    switch($action)
    {
        case 'ManagePages':
            ManagePages();
            break;
        case 'listUsers':
            listUsers();
            break;
        case 'orderList':
            listOrders();
            break;
        case 'listBanner':
            listBanners();
            break;
        case 'NewsletterUser':
            NewsletterUsers();
            break;
        case 'Newsletter':
            Newsletter();
            break;
        case 'listQuestion':
            listquestions();
            break;
        case 'testinomial':
            listTesti();
            break;
        default:
            listPages();
    }

    /*
     * different function for different tasks
     */

}
else
{
    header("Location:index.php");
}

尝试将函数定义放在if块之外,看看会发生什么?

在调用之前检查函数是否已设置。在PHP中,调用函数之前必须声明函数

<?php
/*
* initialize session for admin
*/
session_start();

if(isset($_SESSION['admin_user']))
{
    require_once '../cms/config.php';

    $action = isset($_POST['action']) ? $_POST['action'] : '';

    if ($action == null)
    {
        listPages();
        exit;
    }


    /*Functions */
    function ManagePages()
    {
        listPages();
    }

    function listUsers()
    {
        // include listusers.php here. required rows is in listusers.php file
    }

    function listOrders()
    {
        // include listorders.php here
    }

    function  listBanners()
    {
        // include listbanners.php here
    }

    function  NewsletterUsers()
    {
        // include listNUsers.php here
    }

    function listquestions()
    {
        // include listquestions.php here.
    }

    function listTesti()
    {
        // include listTesti.php here.
    }

    function Newsletter()
    {
        //  include newsletter.php
    }

    function listPages()
    {
        //  include listPages.php here
    }


    /*
     * using switch for choosing function
     */
    switch($action)
    {
        case 'ManagePages':
            ManagePages();
            break;
        case 'listUsers':
            listUsers();
            break;
        case 'orderList':
            listOrders();
            break;
        case 'listBanner':
            listBanners();
            break;
        case 'NewsletterUser':
            NewsletterUsers();
            break;
        case 'Newsletter':
            Newsletter();
            break;
        case 'listQuestion':
            listquestions();
            break;
        case 'testinomial':
            listTesti();
            break;
        default:
            listPages();
    }

    /*
     * different function for different tasks
     */

}
else
{
    header("Location:index.php");
}
您的错误清楚地表明,当您调用
listPages()
时,此函数还不存在

我敢肯定,如果您在

if(isset($_SESSION['admin_user']))
{
此功能的声明

function listPages()
{
    //Do something here
}
你的错误会消除的


我所看到的是,您正试图在结构代码中使用函数,就像在某些类(面向对象代码)中一样,不幸的是,PHP并不是这样工作的。

在调用之前检查您的函数是否已设置。在PHP中,调用函数之前必须声明函数

您的错误清楚地表明,当您调用
listPages()
时,此函数还不存在

我敢肯定,如果您在

if(isset($_SESSION['admin_user']))
{
此功能的声明

function listPages()
{
    //Do something here
}
你的错误会消除的



我所看到的是,您试图在结构代码中使用函数,就像在某些类(面向对象代码)中使用函数一样,不幸的是,PHP不是这样工作的。

;虽然它的编码方式非常复杂,但似乎没有任何错误;如果代码中没有错误,请参阅@diEcho,我将在这里发布的原因。我没有疯,其他人也没有回应。在写任何东西之前先想一想。我并不是说你发错了。我说我已经试过了,看起来很完美。你可以看到我给出的链接。冷静点,唐杜。@diEcho哈哈哈。。。真是个好词!没有;虽然它的编码方式非常复杂,但似乎没有任何错误;如果代码中没有错误,请参阅@diEcho,我将在这里发布的原因。我没有疯,其他人也没有回应。在写任何东西之前先想一想。我并不是说你发错了。我说我已经试过了,看起来很完美。你可以看到我给出的链接。冷静点,唐杜。@diEcho哈哈哈。。。真是个好词!嗯…它可以工作,但我有一个相同类型的代码,工作良好。为什么会这样。顺便说一下,谢谢纳文!嗯…它可以工作,但我有一个相同类型的代码,工作良好。为什么会这样。顺便说一下,谢谢纳文!谢谢你提供有用的信息。我也有同样的想法。不,这不对。PHP解析完整文件的方式不像JSF那样是分块的,而是如果条件是关于会话变量的话。如果没有退出可用的会话,那么整个代码块将不会执行。假设我们在第一个
块中,如果
块中,那么你怎么能说
listpages()
将不会运行,可能还有其他错误。在这里你可以看到工作演示:谢谢你的有用信息。我也有同样的想法。不,这不对。PHP解析完整文件的方式不像JSF那样是分块的,而是如果条件是关于会话变量的话。如果没有退出可用的会话,那么整个代码块将不会执行。假设我们在第一个
块中,如果
块中,那么你怎么能说
listpages()
将不会运行,可能还有其他错误。在这里您可以看到工作演示:为了将来的参考,如果您回答了一个问题,请在提供的代码中包括您所做更改的解释。否则,我们如何知道您已更正和更改了哪些内容?如果您回答了问题,请在提供的代码中解释您已更改的内容,以供将来参考。否则,我们如何知道您更正和更改了什么?不,在PHP中,在调用函数之前不必声明函数。这是错误的信息。PHP不是Python!!不,在PHP中,调用函数之前不必声明函数。这是错误的信息。PHP不是Python!!