使用$ _GET php的动态导航菜单

时间:2014-05-15 08:40:57

标签: php

我有一个导航菜单,并使用$ _GET []显示导航菜单的动态子链接。如何保持数量不超过一个a,b或c?当它被点击一次时。

<li><a href="?p=1">Link 1<a/>
echo $output;
</li>
<li><a href="?p=2">Link 2<a/>
echo $output;
</li>

<li><a href="?p=3">Link 3<a/>
echo $output;
</li>

$page_id = $_Get['p'];

if (($page_id ==1) OR($page_id==2) OR ($page_id==3)){
$output='<li><a href="?p='.$page_id.'a">sublink 1</a></li>
<li><a href="?p='.$page_id.'b">sublink 2</a></li>
<li><a href="?p='.$page_id.'c">sublink 3</a></li>';

}

我想要实现的是什么?p = 1,2或3将保持在顶部?= 1a,当点击第二个子链接时,它将从?p = 1a转移到?p = 1b。 atm它的工作方式如下?p = 1第一个链接将是?p = 1a,当按下第二个子链接时,它将转到?p = 1ab。如何防止这种情况?

目前我使用

  if ($page_id ==1){
$output='<li><a href="?p=1a">sublink 1</a></li>
<li><a href="?p=1b">sublink 2</a></li>
<li><a href="?p=1c">sublink 3</a></li>';

}
if ($page_id==2){
$output='<li><a href="?p=2a">sublink 1</a></li>
<li><a href="?p=2b">sublink 2</a></li>
<li><a href="?p=2c">sublink 3</a></li>';

}
if ($page_id==3){
$output='<li><a href="?p=3a">sublink 1</a></li>
<li><a href="?p=3b">sublink 2</a></li>
<li><a href="?p=3c">sublink 3</a></li>';

}

使用 substr

解决问题
if ($page_id==1) OR ($page_id==2) OR ($page_id==3)){
$subpage = $_GET['p'];
$subpage = substr($subpage,0,1);
$output = <li><a href="'.$subpage.'a">Link 1</a></li>
}

2 个答案:

答案 0 :(得分:1)

试试这个

 <?php
$output = array();
$page_id = isset($_GET['p'])? intval($_GET['p']) : '1';
if (($page_id ==1) OR($page_id==2) OR ($page_id==3)){

   $output[$page_id]= '<li><a href="?p='.$page_id.'a">sublink 1</a></li>
            <li><a href="?p='.$page_id.'b">sublink 2</a></li>
            <li><a href="?p='.$page_id.'c">sublink 3</a></li>';

}?>

<ul>
<li><a href="?p=1">Link 1<a/>
<?php echo isset($output[1]) ? $output[1] : '';?>
</li>
<li><a href="?p=2">Link 2<a/>
<?php echo isset($output[2]) ? $output[2] : ''; ?>
</li>

<li><a href="?p=3">Link 3<a/>
<?php echo isset($output[3]) ? $output[3] : '';?>
</li>
</ul>

答案 1 :(得分:0)

为什么不直接使用第二个$ _GET参数?这将是一个更清洁的aproarch。

例如:

$page=intval($_GET['p']);
if(isset($_GET['subpage'])){
    $subpage=htmlspecialchars($_GET['subpage']);
}

通过这种方式,您可以避免出现问题并获得更清晰的代码。

此外,您应该将代码加入Cross-Site Scripting (XSS),因为您的代码 很脆弱。