0

我正在尝试在 php 中编写一个页面来保存 php 文件的代码,在该文件中我必须通过链接加载不同的页面

这是我的页面选择功能:

$page_to_see=$_GET['PageToSee'];
if (!isset($page_to_see))  
{
    $page_to_see="include 'pages/home.html';";
}
else
{
    $page_to_see="include 'pages/".$page_to_see.".html';";
} 

$_GET 从链接中获取值 (www.mysite.com/myfile.php?PageToSee=home)

在写入文件时,代码是:

$content="<table align='center'>";
$content.="<tr align='center'>";
$content.="<td align='center'>";
$content.="<?PHP include 'pages/header.php'; ?>";
$content.="</td></tr>";
$content.="<tr><td align='center'>";
$content.="<?PHP echo $page_to_see; ?>";
$content.="</td>";
$content.="</tr>";
$content.="</table>";

我在预览中得到的只是标题,没有别的

任何人都可以帮助我我不知道该怎么做,我尝试了一些没有帮助的事情:-(

4

3 回答 3

0

首先,在您的 PHP 文件中,您必须定义一个字符串数组来指定您实际可以包含的页面,以避免包含注入。

然后,您必须测试您的$_GET变量以了解它是否对应于数组中的任何条目。

我的文件.php:

$pages = array('home', 'page2', 'page3');
if(in_array($_GET['PageToSee'], $pages)) {
    include($_GET['PageToSee'].'php'); // Add correct extension of your file
}

此外,对于您的 html,您必须输出正确的锚点:

echo '<a href="./myFile.php?PageToSee=home">Some Label</a>';
于 2013-10-11T08:17:29.907 回答
0

这条线很奇怪:

$content.="<?PHP echo $page_to_see; ?>";

也许它应该是一个简单的:

$content.= $page_to_see;

你不需要引号:

$page_to_see="include 'pages/".$page_to_see.".html';";

尝试将其更改为:

$page_to_see= include 'pages/".$page_to_see.".html';

请参阅 php 文档中的示例 #5。

于 2013-10-11T08:22:36.467 回答
0

你可以试试这个,但要确保你的 $page_to_see 是绝对网址

<?php
      $content="<table align='center'>";
      $content.="<tr align='center'>";
      $content.="<td align='center'>";
      $content.= file_get_contents('http://www.mysite.com/pages/header.php');
      $content.="</td></tr>";
      $content.="<tr><td align='center'>";
      $content.= file_get_contents($page_to_see);
      $content.="</td>";
      $content.="</tr>";
      $content.="</table>";
     echo $content;
 ?>
于 2013-10-11T09:22:02.797 回答