在页面加载器中创建主详细信息页面

时间:2015-02-03 00:04:22

标签: php master-detail

所以我创建了一个网站,通过index.php文件中的页面加载器加载其页面。现在我想创建一个主详细信息页面但我无法正常工作。它将重定向到detail.php文件,但它不会对$ _GET ['id']中的ID执行任何操作。

//detail .php
<?php
if (isset($_GET['id'])){
    $id=mysqli_real_escape_string($_GET['id']);
}
?>

<form action="" method="GET" enctype="multipart/form-data">
    <center><table>
    <?php   
       global $connect;
       echo "TEST"
    ?>
    </table></center>
</form>

//pageloader.php
<?php
if(@$_GET["page"]){
    $page = "pages/".$_GET["page"].".php";
    if(file_exists($page))
    {
      include $page;
    }
    else 
    {
      echo "deze pagina bestaat niet";
    }
}
?>

当我点击引用该ID的链接时,它会给出这个链接:

... /?页=细节?ID = 6

这个结果进入页面不存在。

如何解决这个小问题以正确显示给定ID的内容。

2 个答案:

答案 0 :(得分:1)

我不赞成你在这里进行的这种“动态页面”交易,但如果你打算这样做,那么你应该在白名单上运行它。

$allowed = array(
    '1' => 'page1.php',
    '2' => 'page2.php',
    .....etc
);

$id = trim($_GET['id']);
if(isset($allowed[$id]) && file_exist("pages/".$allowed[$id].".php")) {
    include("pages/" . $allowed[$id] . ".php";);
}

以上检查以确保$id页面中存在$allowed,并且该文件是否存在于其目录中。

答案 1 :(得分:0)

$id=intval($_GET['id']);

intval会将id限定为数字,如果为空或非数字,则会生成零。

mysqli_real_escape_string用于在将文本存储到记录

之前转义文本

更改

if(@$_GET["page"]){
  $page = '/page

$page = $_GET["page"];
if strlen($page) > 0){
    $page = "/home/user/public_html/pages/$page.php";
    if (file_exists($page)){

使用双引号时没有理由使用点串连接。

最好从本地目录中检索页面而不是HTTP

如果您使用post而不是获取

,地址栏看起来会更干净
<form action="" method="post" enctype="multipart/form-data"

使用$_POST['page'];

<center>已过时,请改用CSS。

<style>
table{margin:0 auto;}
</style>