我有一个标题.php和一个家.php。
我正在尝试将标题和描述从我的家传递到标题.php标题.php。问题出在我的标题.php,在 dom 中:看不到我的 php 变量,或者 php 只有在正文中工作正常时才能在我的 html 头部工作。
有什么建议吗?
这是我的文件:标题.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! ";
echo $_SESSION['username'];
echo " ";
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");?>
函数 sendPageInfo
永远不会被调用,也不会修改任何全局变量。它只创建新的函数局部变量。
直到include_once("includes/header.php")
之后才调用sendPageInfo()
。因此,在包含标头时,$pageTitle
是未定义的。
确实出现的$pageTitle
是您在sendPageInfo()
中回响
PHP 变量不能按照你使用它们的方式工作。
当您包含标头时,您的 html 将立即创建并回显或缓冲,具体取决于您使用的是缓冲区。
此时,您的页面标题未定义,因此不会回显任何内容。
您的函数将永远无法更改页面标题,因为它在调用时已经回显(PHP 变量在这里无法按照您想要的方式工作,尽管一些模板 enginges 可以完成您尝试使用引用做的事情)。
尝试在包含标题之前直接设置页面标题,而不是使用函数。
其他人回答了为什么它不起作用(这些变量在函数之外不存在)。 与其与全局变量一起玩弄,不如在家里这样做.php:
<?php
$pageTitle = 'Troy Telugu Association Home';
$description = 'A Nonprofit organization fouced on South Indian culture in Troy, Michigan';
include_once("includes/header.php");
查看包括.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
?>
和索引.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>
它是您正在尝试的简化版本,并且可以工作.
您对"////页面标题确实显示 UP!!!!!!!!!!"行的结果感到困惑。但我认为你错了.
显示的标题来自行:
"回声$pageTitle;"内 "function sendPageInfo($title, $desc){"
正如其他海报所提到的,$pageTitle仅在"sendPageInfo"中有效。您正在其范围之外使用它。它不是全局可见的。