0

我有一个 header.php 和一个 home.php。

我正在尝试将标题和描述从我的 home.php 传递到 header.php。问题出在我的 header.php 中,在 dom 中:没有看到我的 php 变量,或者 php 仅在我的 html 头部无法工作,而它在正文中工作正常。

有什么建议么?

这是我的文件:Header.php:

<?php session_start(); 
    header('Content-type: text/html; charset=utf-8');

    function sendPageInfo($title, $desc){
    if($title)
        $pageTitle= $title;
    if($desc)
        $description = $desc; 

    echo $pageTitle;
    }
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <title><?php echo $pageTitle; ?></title> //the $pageTitle won't show up!!!
    <meta charset="UTF-8">
    <meta name ="description" content=" <?php echo $description; ?> "> //$description won't show
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

    <link rel="stylesheet" href="css/menu.css"/>
    <link rel="stylesheet" type="text/css" href="css/pages.css" />
    <link rel="shortcut icon" href="images/favicon.ico" />
    <link href="css/lightbox.css" rel="stylesheet" />

</head>
<body>
<section class="bodyWrap"> 
<?php echo $pageTitle; ?> //// PAGE TITLE DOES SHOW UP!!!!!!!!!!!
    <section class="headerNav">
        <div class="logo">

        </div>
        <nav class="tpMenu shdw">
            <ul>
                <li><a href="home.php">Home</a></li>
                <li><a class="events" href="events.php">Events</a></li>
                <li><a class="press" href="pressNotes.php">Press</a></li>
                <li><a class="media" href="eventsalbum.php">Media</a></li>
                <li><a class="about" href="about.php">Our Vision</a></li>
                <li><a class="contact" href="contact.php">Contact Us</a></li>
<!--This is where you add memeber.php if the user is signed in-->
                 <?php
                  if(!isset($_SESSION['username']))
                  {
                  echo "<li><a href=\"MemberLogin.php\"> Login</a></li>";
                  }
                  ?>
                 <?php
                  if(isset($_SESSION['username']))
                  {
                    echo "Welcome! &nbsp;";
                    echo $_SESSION['username'];
                    echo "&nbsp;&nbsp;&nbsp;&nbsp;";
                    echo "<li><a href=\"logout.php\">Log out</a></li>";
                  }
                  ?>
                  </li>
          </ul>
        </nav>
    </section>

主页.php:

<?php include_once("includes/header.php");
    sendPageInfo('Troy Telugu Association Home', 'A Nonprofit organization fouced on South Indian culture in Troy, Michigan'); 
?>

<?php include_once("addHomeContentAlbum.php");?>

<?php include_once("includes/footer.php");?>
4

5 回答 5

3

该函数sendPageInfo永远不会被调用,也不会修改任何全局变量。它只创建新的函数局部变量。

于 2013-11-12T20:37:13.813 回答
2

你不打电话sendPageInfo(),直到之后include_once("includes/header.php")。因此,$pageTitle在包含标头时未定义。

$pageTitle确实出现的是您在其中回响那个sendPageInfo()

于 2013-11-12T20:37:12.287 回答
0

PHP 变量的工作方式与您使用它们的方式不同。

当您包含标题时,您的 html 将立即创建并根据您是否使用缓冲区来回显或缓冲。

此时,您的 pageTitle 是未定义的,因此不会有任何回显。

您的函数将永远无法更改页面标题,因为它在被调用时已经被回显(PHP 变量在这里无法按照您的意愿工作,尽管一些模板引擎可以执行您尝试对引用执行的操作) .

尝试在包含标题之前直接设置页面标题,而不是使用您的函数。

于 2013-11-12T20:43:04.827 回答
0

其他人回答了为什么它不起作用(这些变量在函数之外不存在)。不用到处乱搞全局变量,只需在 home.php 中执行此操作:

<?php
$pageTitle   = 'Troy Telugu Association Home';
$description = 'A Nonprofit organization fouced on South Indian culture in Troy, Michigan';
include_once("includes/header.php");
于 2013-11-12T20:43:36.990 回答
0

看看 incl.php:

<?php
function write_head($title, $descr){
   echo "<head>\n";
   echo "   <title>$title</title>\n";
   echo "   <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\n";
   echo "   <meta name =\"description\" content=\"$descr\">\n";
   echo "</head>\n";
}//write_head
?>

和 index.php:

<html>
<?php
   include_once("incl.php");
   write_head('Troy Telugu Association Home', 'A Nonprofit organization fouced on South Indian culture in Troy, Michigan');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<body>
<h1>Stackoverflow is cool</h1>
</body>
</html>

这是您尝试的简化版本,并且可以正常工作。
您对“//// PAGE TITLE DOES SHOW UP!!!!!!!!!!!!”行的结果感到困惑。
但我认为你错了。
显示的标题来自行:
“ echo $pageTitle;”

"function sendPageInfo($title, $desc){"

内正如其他海报所提到的,$pageTitle 仅在 "sendPageInfo" 内有效。您在其范围之外使用它。它不是全局可见的。

于 2013-11-12T21:00:10.483 回答