简单的PHP脚本会产生错误

时间:2012-11-25 12:08:27

标签: php html include server-side-includes error-log

让我简单明了:

可能是其他人,我在服务器上使用简单的包括各种东西,如顶级菜单或侧面菜单等等......

这是我的代码示例

<?php $number = 1; include("/var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php");?>

$ number = 1定义了正确选择的选项卡,具体取决于页面级别。

我所包含的代码如下:

18 <?php $page[$number] = 'selected';?>
19 <!--=================== top navigation ==================-->
20 <nav>
21 <div id="menu">
22 <a href="/Page 1/" class="tab <?php echo $page[1] ?>" title="Page 1">Page 1</a>
23 <a href="/Page 2/" class="tab <?php echo $page[2] ?>" title="Page 2">Page 2</a>
24 <a href="/Page 3/" class="tab <?php echo $page[3] ?>" title="Page 3">Page 3</a>
25 <a href="/Page 4/" class="tab <?php echo $page[4] ?>" title="Page 4">Page 4</a>
26 <a href="/Page 5/" class="tab <?php echo $page[5] ?>" title="Page 5">Page 5</a>
27 <a href="/Page 6/" class="tab <?php echo $page[6] ?>" title="Page 6">Page 6</a>
28 <a href="/Page 3/" class="tab <?php echo $page[7] ?>" title="Page 7">Page 7</a>
29 </div><!-- end .menu -->
30 </nav><!-- end .navigation -->

显然,.selected的css会改变背景的颜色,以表明你在那个特定的页面上,所以没有必要解释它。

现在出现了问题,我刚刚检查了我的错误日志,这些日志确实很大,下载并发现了以下错误:

[Sat Nov 24 17:50:50 2012] [error] [client 204.11.33.59] PHP Notice:  Undefined offset:  2 in /var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php on line 23
[Sat Nov 24 17:50:50 2012] [error] [client 204.11.33.59] PHP Notice:  Undefined offset:  3 in /var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php on line 24
[Sat Nov 24 17:50:50 2012] [error] [client 204.11.33.59] PHP Notice:  Undefined offset:  4 in /var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php on line 25
[Sat Nov 24 17:50:50 2012] [error] [client 204.11.33.59] PHP Notice:  Undefined offset:  5 in /var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php on line 26
[Sat Nov 24 17:50:50 2012] [error] [client 204.11.33.59] PHP Notice:  Undefined offset:  6 in /var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php on line 27
[Sat Nov 24 17:50:50 2012] [error] [client 204.11.33.59] PHP Notice:  Undefined offset:  7 in /var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php on line 28

我无法理解它的原因。 IMO,如果$ number已预定义,而不是为什么错误?

请帮我以正确的方式做到这一点。

3 个答案:

答案 0 :(得分:1)

您只需设置数组中的一个元素,但需要检查更多元素。通过这样做:

$a = 3;
$page[$a] = 'selected';

索引3只存在一个条目(除非你把它设置在别处,但我假设你没有)。所以这段代码:

<?php echo $page[1]; ?>

指的是不存在的数组元素,因此是警告。如果$page的唯一目的是来自您的代码,那么完全摆脱它。删除

<?php $page[$number] = 'selected';?>

并替换

<?php echo $page[7] ?>

   

如果由于任何其他原因需要此数组,请替换代码

<?php echo $page[7] ?>

<?php echo isset($page[7]) ? 'selected' : '' ?>

答案 1 :(得分:1)

未定义$page的索引。您可以像这样更改代码:

echo isset($page[1]) ? $page[1] : ""
//and so on

答案 2 :(得分:0)

在div#menu中使用这个干净的代码:

<?php 
$count = 7;
for($link = 1; $link <= $count; $link++){
    $extraClass = ($link == $number) ? "selected" : "" ;
    echo "<a href='/Page {$link}/' class='tab {$extraClass}' 
               title='Page {$link}'>Page {$link}</a>";
}
?>