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

Поэтому я создал сайт, страницы которого загружаются через загрузчик страниц в файле 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 = 6

это приводит к тому, что страница не существует.

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

0

Решение

Я не одобряю такого рода сделки с «динамической страницей», которые вы здесь заключаете, но если вы собираетесь сделать это таким образом, то вам следует запустить его в белый список.

$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

Другие решения

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

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

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>
0

По вопросам рекламы [email protected]