2015-04-26 79 views
1

這是我有我的文件設置:如何使用稍後在頁面中定義的變量? PHP

的index.php:

include($sys->root_path.'sections/start.php'); // Includes everything from <html> to where we are now 

    if (isset($_GET['page'])) { 
     $page = $_GET['page'].'.php'; 
    } else { 
     $page = 'index.php'; 
    } 

    if (isset($_GET['cat'])) { 
     $cat = $_GET['cat']; 
    } else { 
     $cat = ''; 
    } 

    include($sys->root_path.'/content/'.$cat.'/'.$page); 

    include($sys->root_path.'sections/end.php'); // Includes everything from here to </html> 

要查看此頁面,我訪問:example.com/index.php?cat=red&page=car 這會告訴我的網頁與文件的內容:

/content/red/car.php 

我遇到的問題是,我想指定一個標題,meta描述等,爲每個頁面,這是輸出到頁面中start.php - 之前,這名p任何具體數據調用關節頁面。

我希望做的是這樣的:

/CONTENT/RED/CAR.PHP:

<?php $page_title = 'Title of the page'; ?> 
<p>Everything below is just the page's content...</p> 

如何使用此頁面在網站的<head>的具體數據,當在這個特定頁面的內容之前抓取所有的數據?

+0

不幸的是,你不能這樣做。您需要從兩個文件中的一箇中刪除''標籤,因爲如果您回顯兩次,瀏覽器會獲取兩次。 – Mike

+0

...或使用輸出緩衝,雖然它可以工作,但幾乎不是正確的工具。 – Mike

回答

1

你可以這樣做:

switch($_GET['page']) { 
    case 'car': 
     // Here you could have another conditional for category. 
     $page_title = 'Title of the page'; 
     break; 
    // Other cases. 
} 
include($sys->root_path.'sections/start.php'); 

而且在start.php你可以有這樣的:

<title><?php echo $page_title; ?></title> 

我必須建議對包括內容的方式。這是不安全的。有人可以瀏覽您的服務器文件或包含您不想包含的內容。一個人不應該通過這種方式包含文件(通過獲取變量),除非總是通過正則表達式或其他東西來過濾該變量。

0

我的建議是使用MVC方法,使用函數來傳遞參數或帶設置函數的OOP。

1

要做的事情的正確方法是使用數據庫和 apache url_rewrite。我的回答只是一個修復爲您的問題。


步驟1

包括start.phpif statment下面,這樣當你包括start.php你已經知道你需要哪些頁面,如下所示:

if (isset($_GET['page'])) { 
    $page = $_GET['page'].'.php'; 
} else { 
    $page = 'index.php'; 
} 

if (isset($_GET['cat'])) { 
    $cat = $_GET['cat']; 
} else { 
    $cat = ''; 
} 

include($sys->root_path.'sections/start.php'); 

步驟2

現在,在start.php裏面使用一個開關:

<?php 
switch ($cat) { 
    case "blue": 
     $title = "The car is $page"; 
     break; 
    case "green": 
     $title = "The car is $page"; 
     break; 
    case "red": 
     $title = "The car is $page"; 
     break; 
    default: 
     $title = "Welcome to ..."; 
} 
?> 

    <!DOCTYPE html> 
    <head> 
    <title><?php echo $title ?></title> 
    </head> 
etc... 
+0

感謝您的建議,但我想保留該頁面上的所有頁面特定數據。我不想更新多個頁面。而且,這個網站可能有幾百頁。爲所有這些使用switch語句或分別指定每個頁面標題是不切實際的。但是,謝謝。 – JROB

相關問題