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