簡體   English   中英

帶有$ _GET php的動態導航菜單

[英]Dynamic Nav menu with $_GET 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>
}

嘗試這個

 <?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>

為什么不只使用第二個$ _GET參數呢? 這將是一個更清潔的方案。

例如:

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

這樣,您可以避免問題,並且代碼更簡潔。

另外,由於您的代碼容易受到攻擊,因此您應該將代碼帶入跨站點腳本(XSS)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM