将值从一个页面传递到另一个页面以外的查询字符串并且没有javascript?

时间:2012-11-17 15:37:08

标签: php

自动构建网站导航的一种解决方案是在文件夹中扫描以下文档:

foreach(glob('pages/*.pg.php') as $_SITE_NAV_filePath):
    $_SITE_NAV_filePath = explode('.pg',pathinfo($_SITE_NAV_filePath,PATHINFO_FILENAME));
    $_SITE_NAV_fileName = $_SITE_NAV_filePath[0];

    $_SITE_NAV_qv = preg_replace('/([A-Z])/','-$1',$_SITE_NAV_fileName);  $_SITE_NAV_qv = trim($_SITE_NAV_qv,'-');
    $_SITE_NAV_name = preg_replace('/([A-Z])/',' $1',$_SITE_NAV_fileName);
    ?>
    <li><a href="?page=<?=$_SITE_NAV_qv?>" class="<?=$_SITE_NAV_qv == $_SITE_PAGE['qv']?'active':''?>"><?=$_SITE_NAV_name?></a></li>
    <?php
endforeach;

此代码将“AnAwesomePage.pg.php”转换为如下菜单项:
<li><a href="?page=An-Awesome-Page">An Awesome Page</a></li>

这可能是不好的做法(?) 无论如何;我不经常使用这种方法,因为大多数时候网站都有一个数据库,并且有更好的解决方案......

但我的问题是:
有没有办法在文件名前加一个整数,后跟和下划线(3_AnAwesomePage.pg.php),用于排序顺序,并以某种方式将其传递到查询字符串之外的目标页面,而没有任何异步javascript?

我可以在"_"再次爆炸文件名以获取排序顺序并以某种方式存储在某处?

这是处理页面查询请求的代码:

$_SITE_PAGE['qv'] = $_GET['page'];

if (empty($_SITE_PAGE['qv'])){  $_SITE_PAGE['qv'] = explode('-','Home');  }
else {  $_SITE_PAGE['qv'] = explode('-',$_GET['page']);  }

$_SITE_PAGE['file'] = 'pages/'.implode($_SITE_PAGE['qv']).'.pg.php';

此代码将“An-Awesome-Page”变回“AnAwesomePage.pg.php”,因此可以将其包含在php中。

但是使用前缀,并不是那么容易。

问题是;现在没有办法知道它之前有什么前缀号,因为它已从查询字符串中删除。所以我需要在“背景”中以某种方式发送它。

我提出的一个非常糟糕的解决方案是将导航链接转换为表单按钮,只需_POST前缀整数和表单。在拳头上它听起来像一个很好的解决方案,但后来我意识到,一旦用户刷新他们的页面,它看起来不是很好。毕竟,这不是什么形式......

那里有什么好的解决方案吗? 还是其他一些更好的处理方法?

1 个答案:

答案 0 :(得分:0)

有两种方法可以保存该号码,您可以使用cookie或php会话变量。 但在这种情况下,如果用户首先在浏览器或新浏览器中输入网址,则应将其设为默认编号。 就像你有:

1_first-page.php
2_first-page.php
3_first-page.php

如果用户输入了以下网址:domain.com/?page=first-page,则必须将他带到1_first-page.php到您想要默认的任何号码。