Создать главную страницу с подробным описанием загрузчика страниц

0

Поэтому я создал сайт, который его страницы загружаются через загрузчик страниц в файле index.php. Теперь мне захотелось создать страницу с подробной информацией, но я не могу заставить ее работать правильно. он перенаправляет файл detail.php, но он ничего не делает с идентификатором от $ _GET ['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

этих результатов на странице не существует.

Как я могу решить эту небольшую проблему, чтобы правильно отображать содержимое данного идентификатора.

  • 0
    Вы можете перестать это делать. Так как вы открыты для LFI (Local File Inclusion) и, по сути, будете позволять кому-либо (кто обладает некоторыми знаниями) найти ваш файл /etc/passwd и различные другие файлы.
  • 0
    Ну, там не так много, чтобы найти, это просто очень маленький сайт для моего антикварного магазина пап. Я хочу показать продукты, и когда вы нажмете на них, вы увидите детали. У вас есть другой вариант для использования?
Показать ещё 1 комментарий
Теги:
master-detail

2 ответа

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 массиве страниц и если файл существует в этом каталоге.

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

intval будет квалифицировать идентификатор как числовой и будет производить нуль, если пустой или нечисловой.

mysqli_real_escape_string используется для 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

Адресная строка будет выглядеть более чистым, если вы используете пост, а не получаете

<form action="" method="post" enctype="multipart/form-data"

Использовать $_POST['page'];

<center> устарел, вместо этого используйте CSS.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню