无法设置 CGI 参数 (PHP)

Can't set CGI Parameter (PHP)

我是 PHP 的新手,遇到了问题。我在主页的一侧有一个导航栏,显示 4 links。我应该在子 class 中编写一个方法 setWhichPage ,它将从父 class 访问名为 'whichpage' 的 CGI 参数,并使用它来确定 4 linked 页面将显示在主页的主要部分,使用另一个称为 getMainFunction 的方法。导航栏是使用方法 getLeftNavBar 和 createNavbarArray 创建的,它们存在于子 class(称为 TravelAgent)中,但从父 class(称为 Company)获取它们的变量。 setWhichPage 方法也应该在这个子 class 中。我应该使用值 $_GET 或 $_REQUEST 数组来设置 属性 $whichpage 中的值。 $whichpage 属性 的可接受值应与 getLeftNavBar 方法匹配。 getLeftNavBar 和 setWhichPage 方法协同工作,因此当用户单击导航栏中的 link 时,URL 他们应该创建这些 links:

http://amazingadventures.000webhostapp.com/?whichpage=home 
http://amazingadventures.000webhostapp.com/?whichpage=sales 
http://amazingadventures.000webhostapp.com/?whichpage=support 
http://amazingadventures.000webhostapp.com/?whichpage=contact 

我遇到麻烦的地方是当我尝试让 setWhichPage 将变量 $whichpage 设置为 link 中的四个值之一时,我收到此错误消息:

Notice: Undefined index: whichpage in /storage/ssd1/873/8888873/public_html/index.php

你能告诉我我做错了什么吗?在此先感谢您的帮助。这是相关代码:

<?php

class Company {             //start of parent class Company

protected $company_name;

protected $company_address;

protected $company_url;

protected $company_email;

protected $whichpage;



public function __construct(){

$this->company_name = "Amazing Adventures Travel";

$this->company_address = "13999 Turtle Way, Los Angeles, California, 90001";

$this->company_url = "http://amazingadventures.000webhostapp.com/";

$this->company_email  = "email.edu";

$this->whichpage = "home";

}

//other methods...

}     //end of parent class Company



class TravelAgent extends Company {   //start of child class TravelAgent

var $navbar_array;

function  create_navbar_array()  {

$mainurl = $this->company_url;   
$this->navbar_array = array("Home Page"=>"$mainurl?whichpage=home", "Sales"=>"$mainurl?whichpage=sales",
"Support" => "$mainurl?whichpage=support", "Contacts" => "$mainurl?whichpage=contact");     
}


function getLeftNavBar() {     

echo "<table border=1, td width=100, height = 40><tr>";
foreach($this->navbar_array as $x => $x_value) {
    echo '<tr><td><a href="' . $x_value . '">'. $x ."</a></td></tr>";
    echo "<br>";
}
echo "</tr></table>";
}


function setWhichPage(){

$whichpage = $_GET['whichpage'];

}


function getMainSection() {

echo "The ".$whichpage." page";

}

}

//end of child class TravelAgent 


$travelobject = new TravelAgent();          //object creation

$travelobject->getHeader();                 //function calls
$travelobject->create_navbar_array(); 
$travelobject->getLeftNavBar();
$travelobject->setWhichPage();
$travelobject->getFooter();

?>

<table style='width:100%' border='1'>                   //HTML               
<tr>                                                         
<td style='width:15%'>Left Navigation Bar</td>
<td> getMainSection()</td>                              //function call
</tr>
</table>

您必须使用 $this->whichpage 来引用它并检查 $_GET['whichpage'] 是否已设置。大致是这样的:

function setWhichPage(){

if(isset($_GET['whichpage'])) {
    $this->whichpage = $_GET['whichpage'];
}

}


function getMainSection() {

echo "The ".$this->whichpage." page";

}

Notice: Undefined index: whichpage in /storage/ssd1/873/8888873/public_html/index.php

此错误表示 $_GET 数组没有键 whichpage

在您的情况下,如果您打开 http://amazingadventures.000webhostapp.com/$_GET 数组将为空。

最好的做法是在访问之前检查密钥是否存在。 setWhichPage 的示例:

$this->whichpage = isset($_GET['whichpage']) ? $_GET['whichpage'] : $this->whichpage; // "home" by default