无法设置 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
我是 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