带有基于动态哈希URL的strpos的PHP变量

时间:2012-06-22 00:41:47

标签: php variables strpos

我正在动态地向网址添加一个哈希 - 采用该strpos并尝试根据该变量显示某个页脚,我知道我可以翻译整个页面,但我需要为客户端执行此操作,为什么不是'我认为这是个问题吗?

网址看起来像http://www.example.com/#/sp/

这是我的标题:

<?php 
    $page = $_SERVER['REQUEST_URI'];
    $isSpanish = strpos($page, '/sp/'); 
    $isSpanishDynamic = strpos('#/sp/', $page);

这是我的页脚:

   <?php if($isSpanishDynamic !== FALSE || $isSpanish !== FALSE) { ?>
                    <li><a href="/">PÁGINA DE INICIO</a></li>
                    <li><a href="/sp/our-story">HISTORIA</a></li>
                    <li><a href="/sp/menu">MENÚ</a></li>
                    <li><a href="/sp/contact">CONTACTO US</a></li>
                    <li><a href="/sp/order-online">ORDENE POR INTERNET</a></li>
    <?php } else { ?>
                    <li><a href="/">Home</a></li>
                    <li><a href="/en/our-story">Our Story</a></li>
                    <li><a href="/en/our-menu">Our Menu</a></li>
                    <li><a href="/en/contact">Contact Us</a></li>
                    <li><a href="/en/order">Order Online</a></li>
    <?php } ?>  

2 个答案:

答案 0 :(得分:2)

在像http://example.com/#/sp/这样的网址中,哈希#/sp/将永远不会被发送到服务器,因此除非您以某种方式与服务器进行交互,否则您无法在PHP中执行任何操作。

请参阅Wikipedia

  

片段标识符的功能与URI的其余部分不同:即,它的处理完全是客户端,没有服务器的参与。当代理(例如Web浏览器)从Web服务器请求资源时,代理会将URI发送到服务器,但不会发送该片段。相反,代理等待服务器发送资源,然后代理根据片段值处理资源。在最常见的情况下,代理将Web页面向下滚动到锚元素,该锚元素具有等于片段值的属性字符串。其他客户行为也是可能的

答案 1 :(得分:1)

正如artlung指出的那样,散列永远不会发送到服务器。还有其他几种方法可以实现,查询字符串可能是您实现的最简单的方法。您可以添加/#/sp/(完整网址:http://example.com/?lang=sp)的查询参数,而不是/?lang=sp

然后在PHP脚本中,您可以使用以下代码进行检查:

if ( isset($_GET['lang']) && $_GET['lang'] == 'sp' )