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