2011-11-03 6 views
5

連絡先ページ以外のすべてのページで、inc-header.phpインクルードに次の情報を表示します。ページcontact.phpこのページのURLを表示するこれを表示する

<p><a href="contact.php">Contact</a></p> 

、私はそれを表示する:

<p><a href="index.php">Home</a></p> 

これは正しいことが可能でなければなりませんか?

+0

なぜ共通のメニューを含めないと、各ファイルへのすべてのリンクが含まれていますか?ちょうど "家"のリンクを持つことは、過去の世紀の練習の時代遅れの方法です。 –

答えて

16
<?php 
if (stripos($_SERVER['REQUEST_URI'], 'contact.php')){ 
    echo '<p><a href="index.php">Home</a></p>'; 
} 
else{ 
    echo '<p><a href="contact.php">Contact</a></p>'; 
} 
+0

+1ですが、OPにはページが 'contact.php'というファイルであるかどうかは言及されていません。たぶんURLに基​​づいて良いですか? –

+0

すべてのフィードバックをいただきありがとうございます、上記の仕事をしました。 ありがとう! :) – Jezthomp

5
if ($_SERVER["SCRIPT_NAME"] == '/contact.php') { 
    echo '<p><a href="index.php">Home</a></p>'; 
} else { 
    echo '<p><a href="contact.php">Contact</a></p>'; 
} 
+1

私のサーバ上では、これは '/contact.php'と比較される必要があります。これは先行するスラッシュを含みます。これがサーバー固有かどうかは不明です。 – nickb

1

迅速かつ汚いソリューションです:inc_header.phpで

<?php 
$current_page = 'contact'; 
include('inc_header.php'); 
.... 
?> 

<?php 
if($current_page == 'contact') { 
    // show home link 
} else { 
    // show contact link 
} 
?> 
+0

'$ current_page'の値はどこで設定しますか? contact.phpの – Nico

+0

! (contact.phpはコンタクトページがロードされ、inc_header.phpインクルードステートメントが置かれているファイルであると仮定します) – giorgio

3

あなたのページの名前が含まれてい$_SERVER['PHP_SELF']という名前のグローバル変数があります現在要求されています。 basename()と組み合わせることで、この作業をする必要があります:

if(basename($_SERVER['PHP_SELF'], '.php') == 'contact') { 
    // Contact page 
} else { 
    // Some other page 
} 
0

をあなたがあれば、簡単な文でそれを行うことができますが、これが唯一の連絡先ページのために動作します。また、そのように動作しますあなたのINC-ヘッダファイルで単純な関数を使用することができます。

function LinkToPageOrHome($script, $title){ 
    if (strtolower($_SERVER[ 'SCRIPT_NAME' ]) == strtolower($script)){ 
     $script = 'home.php'; 
     $title = 'Home'; 
    } 
    echo '<p><a href="' . $script. '">' . htmlentities($title) . '</a></p>'; 
} 

それは、設計の観点から鈍的アプローチの一種ですが、あなたは複数のテンプレートでLinkToPageOrHome('page.php', 'My Page');を使用し、決してを心配でした自身へのページリンク。

関連する問題