Поэтому я создал сайт, страницы которого загружаются через загрузчик страниц в файле 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
это приводит к тому, что страница не существует.
Как я могу решить эту маленькую проблему, чтобы правильно отобразить содержимое данного идентификатора.
Я не одобряю такого рода сделки с «динамической страницей», которые вы здесь заключаете, но если вы собираетесь сделать это таким образом, то вам следует запустить его в белый список.
$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
массив страниц и, если файл существует в его каталоге.
$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>