出现问题的页面是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 ......)
我希望我能够提前清楚并且提前感谢你们!
答案 0 :(得分:0)
您必须将$ fgmembersite作为参数传递,或者将其声明为全局,如下所示。
$fgmembersite->car();
function CheckSol()
{
global $fgmembersite;
$fgmembersite->car2();