2014-05-15 117 views
0

我有一個導航菜單,並使用$ _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 = 1b的例如,p = 1a。 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>'; 

} 

Sloved問題通過使用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> 
} 
+0

你可以在年底更具體的結果你想 –

+0

我編輯我的職務更好地解釋什麼,我想在這裏achive。我希望這可以解釋爲有用的信息。 – user3616064

回答

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> 
+0

重複問題已解決。希望這是你所需要的。 –

+0

是的,但我想出了使用substr($ string,0,1)的另一種解決方案,在使用page_id agian之前將其限制爲1,並解決了我遇到的問題。 – user3616064

0

爲什麼你不只是一個第二$ _GET參數去?這將是一個更清潔的aproarch。

如例:

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

這樣,你將避免你的問題,也有一個更清潔的代碼。

此外,由於您的代碼 易受攻擊,所以您也應該將密碼輸入Cross-Site Scripting (XSS)

+0

即時通訊在這裏沒有跟隨你,你能解釋一下嗎?我意識到安全缺陷。我的意思是如何停止增加點擊一次。 – user3616064

+0

使用子頁面的第二個參數。例如: Link Current