带有$\u GET php的动态导航菜单
我有一个导航菜单,并使用$\u GET[]显示导航菜单的动态子链接。我如何防止数字加上更多的a、b或c?当它被单击一次时带有$\u GET php的动态导航菜单,php,Php,我有一个导航菜单,并使用$\u 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<
<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>';
}
if($page\u id==1){
$output='
';
}
如果($page_id==2){
$output='
';
}
如果($page_id==3){
$output='
';
}
使用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>
}
如果($page\u id==1)或($page\u id==2)或($page\u id==3)){
$subpage=$_GET['p'];
$subpage=substr($subpage,0,1);
$output=
}
为什么不使用第二个$\u GET参数呢?这将是一个更干净的办法
例如:
$page=intval($_GET['p']);
if(isset($_GET['subpage'])){
$subpage=htmlspecialchars($_GET['subpage']);
}
这样,您就可以避免问题,而且代码也更加清晰
此外,您还应该将代码带入,因为您的代码
易受攻击。试试这个
<?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
- 链接2
- 链接3
我在这篇文章中没有跟踪你,你能解释清楚吗?我知道安全漏洞。我的意思是如何停止增加点击一次。使用子页面中的第二个参数。例如:你能更具体地说明你想要的最终结果吗?我编辑了我的文章,以便更好地解释我想要在这里取得的成就。我希望它能解释足够有用的信息。重复问题解决了。希望这是您所需要的。是的,但我提出了另一个使用substr($string,0,1)的解决方案,在再次使用page_id之前将其限制为1,这解决了我的问题。