PHP - 在函数内调用函数

时间:2015-04-08 10:20:46

标签: php mysql

出现问题的页面是Challenge1.php此页面是许多挑战页面之一。这是它的代码:

<?PHP
require_once("./include/membersite_config.php");

if(!$fgmembersite->CheckLogin())
{
    $fgmembersite->RedirectToURL("login.php");
    exit;
}

ini_set('display_errors', 'On'); 
error_reporting(E_ALL);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head>
  <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
  <title>Challenges</title>
  <link rel="STYLESHEET" type="text/css" href="style/fg_membersite.css" />
  <script type='text/javascript' src='scripts/gen_validatorv31.js'></script>
  <link rel="STYLESHEET" type="text/css" href="style/pwdwidget.css" />
  <script src="scripts/pwdwidget.js" type="text/javascript"></script>
  <link rel="shortcut icon" type="image/ico"  href="favicon.ico" />
</head>
<body>
<?php include('nav.php'); ?>
<!-- Form Code Start -->
<div id='fg_membersite'>
<br/>
<?php 

if(!$fgmembersite->DBLogin())
{
    $fgmembersite->HandleError("Database login failed!");
    return false;
}

$query = mysqli_query($fgmembersite->connection,"SELECT Title, Points, description, Hint, HintCost, Hint2, Hint2Cost from solutions where id_solution ='1'");
$fgmembersite->connection;

include('Challenge.php'); ?>


</div>

</body>
</html>

现在,正如您所看到的,在顶部,它包含文件membersite_config.php。该文件包含:

<?PHP
require_once("./include/fg_membersite.php");

$fgmembersite = new FGMembersite();

然后是数据库连接字符串到MySQL数据库等。 现在重要的是它包含了fg_membersite.php文件。这个文件有1000行代码,是所有PHP代码保存的地方。您还会看到配置文件创建了$ fgmembersite。记住这一点,它在一秒钟内很重要。

现在,回到开头:Challenge1.php还包括底部的challenge.php。每个Challenge1-14.php页面都包含challenge.php,因为所有这些页面都需要相同的代码。

现在问题出在这里。来自challenge.php的代码片段:

$fgmembersite->car();

function CheckSol()
{
    $fgmembersite->car2();

现在,功能&#34;汽车&#34;和&#34; car2&#34;只需回声&#34;测试&#34;和&#34;再次测试&#34;分别。这些函数用fg_membersite.php编写。 现在这里是实际问题功能car()的工作原理,回声&#34;测试&#34;但car2()没有。事实上,在php调试中我得到了这个错误:

  

注意:未定义的变量:第22行/customers/9/f/7/bvhtuinen.be/httpd.www/CTF/Challenge.php中的fgmembersite

     

致命错误:在第22行的/comersomers/9/f/7/bvhtuinen.be/httpd.www/CTF/Challenge.php中调用null上的成员函数car()

第22行是car2()的行;是在。

所以最终,我的问题是:为什么我不能在一个函数中调用一个函数?(显然,在&#39; CheckSol里面,顺便说一句,在Challenge1上调用它。 php的表单动作,还有更多的代码需要$ fgmembersite ......)

我希望我能够提前清楚并且提前感谢你们!

1 个答案:

答案 0 :(得分:0)

您必须将$ fgmembersite作为参数传递,或者将其声明为全局,如下所示。

$fgmembersite->car();

function CheckSol()
{
    global $fgmembersite;
    $fgmembersite->car2();