0

header.php と home.php があります。

home.php から header.php にタイトルと説明を渡そうとしています。問題はdomのheader.phpにあります。php変数が表示されないか、phpがhtmlのヘッドでのみ動作し、本体で正常に動作します。

助言がありますか?

ここに私のファイルがあります:

<?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>

home.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

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 に答える
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 に答える