如何使用页面后面定义的变量? PHP

时间:2015-04-26 00:27:02

标签: 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

我遇到的问题是我想为每个页面指定标题,元描述等,并在调用此特定页面的任何特定数据之前将其输出到start.php中的页面

我希望做的是这样的事情:

/CONTENT/RED/CAR.PHP:

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

如果在此特定页面的内容之前抓取所有数据,我如何在网站的<head>中使用此页面特定数据?

3 个答案:

答案 0 :(得分: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>

我必须反对这种包含内容的方式。这是不安全的。有人可以浏览您的服务器文件或包含您不想要包含的内容。除非总是通过正则表达式或其他东西过滤该变量,否则不应该通过这种方式包含文件(通过获取变量)。

答案 1 :(得分:1)

  

正在尝试做的事情的正确方法是使用数据库和   apache url_rewrite。我的答案只是针对您的问题的 修复

第1步

start.php下面加if 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...

答案 2 :(得分:0)

我的建议是使用MVC方法,使用函数传递参数或使用setter函数进行OOP。