htmlspecialchars
предназначена не для этого. Для фильтрации данных следует использовать filter_input и filter_var<?php
// Если получен GET-параметр с номером вопроса, то сохраняем этот номер для дальнейшей работы, а иначе просто записываем 0. В базе данных все номера начинаются именно с 1, поэтому для некорректного номера вопроса подойдёт значение 0.
$question_id = !empty($_get['question_id']) ? filter_input(INPUT_GET, 'question_id', FILTER_SANITIZE_NUMBER_INT) : 0;
if($question_id == 0)
{
// Номера вопроса нет. Отправляем пользователя на главную страницу.
header('Location: /'); // Заголовок для перенаправления
die; // Завершение работы скрипта
// Вместо перенаправления можно просто отобразить страницу с ошибкой о том, что такого вопроса нет.
}
// Тут уже пишем действия, если получен номер вопроса
require 'database.php'; // Скрипт с настройками подключения к БД
/* В этом месте должен быть код подключения к БД и извлечения из БД заголовка и текста вопроса.
Но в этом примере я просто сделал здесь массив с текстом вопроса и его заголовком. */
$question = [
'heading' => 'Как создаются отдельные страницы сайта (помимо основной)?',
'text' => 'Подскажите, как это всё работает?'
];
// Мы типа получили всё что нужно и готовы вывести всё это...
?>
<!-- Где-то в коде страницы... -->
<div class="question">
<!-- Заголовок вопроса --->
<h1><?=$question['heading'];?></h1>
<!-- Текст вопроса -->
<p><?=$question['text'];?></p>
</div>