【问题标题】:$_GET does not work in some areas of the page$_GET 在页面的某些区域不起作用
【发布时间】:2012-06-28 23:21:28
【问题描述】:

所以我的页面在页面的不同部分有很多包含调用。其中大多数包括具有某种获取任何 $_GET 变量的函数。所有这些都可以正常工作,除了我的导航文件在我尝试获取任何 GET 变量时不返回任何内容。

导航.php

<? require_once("config.php"); require_once("functions.php"); ?>

<div id="nav">

    <ul>

        <? initializeMainNav( $_GET['page'] ); ?>

    </ul>

</div>

function.php 内部

function initializeMainNav( $curPage )
{

    // array ( slug, name ) of navigation items

    $nav = array(
        array( "", "Home" ),
        array( "case_studies", "Investment Case Studies" ),
        array( "current_inv", "Current Investments" ),
        array( "about", "About MDIG" ),
        array( "management", "Management" ),
        array( "news", "News" ),
        array( "services", "Services" ) );

    // Print out each nav item, and highlight the current page nav item

    for( $i = 0; $i < count( $nav ); $i++ ) {

        echo "  <li><a ";

        if( $nav[$i][0] == $curPage )
            echo "class=\"active\" ";

        echo "  href=\"?page=" . $nav[$i][0] . "\">" . $nav[$i][1] . "</a></li> ";

    }

}

$_GET['page'] 总是返回空,即使它适用于页面的所有其他部分。你们看到我做错了什么吗?

编辑:

index.php 其中HEADER 是一个定义路径的常量变量,位于config.php

<? require_once("config.php"); require_once("functions.php"); ?>


<? include(HEADER); ?>

<body>

    <div id="wrapper">

        <div id="logo"> 
            <a href="<? echo DOMAIN; ?>"><img src="<? echo IMAGES; ?>/logo.png" alt="<? echo COMPANY; ?>"></a>
        </div>

        <div class="clear"></div>


        <? include(NAV); ?>


        <div id="content_wrapper">

            <!-- Find and display appropriate page -->
            <? displayPage( $_GET['page'] ); ?>

        </div>

        <div class="clear"></div>


        <? include(FOOTER); ?>

    </div>

</body>
</html>

【问题讨论】:

  • 如果你的$_GET['page'] 为空,我认为当你将这个变量传递给脚本时会有问题。
  • @MarcioSimao 是对的。当我将“page”作为 GET 参数传递时,您的代码对我有用。
  • 我意识到你可以传入一个变量,但我的问题是 $_GET['page'] 没有返回任何东西。它适用于同一页面上包含的不同 php 文件,所以我只是不明白为什么它不适用于此文件
  • 为什么要计算一个你已经知道大小的数组..?
  • 那么您是说您的导航正确回显,除了“主页”始终处于活动状态?

标签: php variables get constants


【解决方案1】:

我知道这并不一定会给你答案为什么它不工作,但是像下面这样的东西怎么样:

functions.php

function echoMainNav($curPage)
{
   echo '<div id="nav"><ul>';
   echo initializeMainNav( $curPage );
   echo '</ul></div>';
}

somepage.php

<? require_once("config.php"); require_once("functions.php"); ?>


<? include(HEADER); ?>

<body>

    <div id="wrapper">

        <div id="logo"> 
            <a href="<? echo DOMAIN; ?>"><img src="<? echo IMAGES; ?>/logo.png" alt="<? echo COMPANY; ?>"></a>
        </div>

        <div class="clear"></div>


        <? echoMainNav( $_GET['page'] ); ?>


        <div id="content_wrapper">

            <!-- Find and display appropriate page -->
            <? displayPage( $_GET['page'] ); ?>

        </div>

        <div class="clear"></div>


        <? include(FOOTER); ?>

    </div>

</body>
</html>

或者更好:

模板.php

define('TEMPLATES_MAIN_NAV', '<div id="nav"><ul>%s</ul></div>');

functions.php

function getMainNav($curPage)
{
   return sprintf(TEMPLATES_MAIN_NAV, initializeMainNav( $curPage ) );
}

somepage.php

<?= getMainNav($_GET['page']); ?>

【讨论】:

  • 感谢伊恩的所有帮助。我实际上解决了这个问题,因为我用include("nav.php"); 替换了include(NAV);,它现在可以工作了。所以基本上将常量更改为实际字符串,现在它允许我在nav.php 中使用GET 变量但我一直想知道大多数人是如何设置他们的模板的。我找不到关于干净模板结构的好文章
猜你喜欢
  • 2015-12-08
  • 2017-07-20
  • 1970-01-01
  • 2015-11-12
  • 2019-06-14
  • 2015-06-04
  • 1970-01-01
  • 2012-04-13
  • 1970-01-01
相关资源
最近更新 更多