Я делаю веб-сайт, где я храню все свои HTML-страницы в mysqli database
, и я пришел к этой проблеме, где я не мог выполнить свой код PHP с помощью echo
, Так что я нашел это решение, где мне пришлось использовать eval();
чтобы мой PHP-код работал, я слышал, что это может быть очень опасно, если вы не подтвердите его правильно.
$firstname = htmlspecialchars($mysqli->real_escape_string($row['firstname']));
Пока это то, как я проверял это, будет ли это достаточно безопасно?
Замечания: эта строка кода используется, когда я запрашиваю информацию из базы данных для отображения на странице.
Извините, если я не объяснил себя достаточно хорошо, я все еще новичок в этом. 🙂
Вот как я получаю свои страницы из базы данных.
<?php
if (isset($_GET["page"]) && $_GET["page"] != null) {
$query = "SELECT * FROM pages WHERE pagename = '$_GET[page]'";
$result = $mysqli->query($query);
while ($row = $result->fetch_array(MYSQLI_ASSOC)){
$pagetitle = $row["pagetitle"];
$pagename = $row["pagename"];
$pagecontent = $row["pagecontent"];
}
} else {
$query = "SELECT * FROM pages WHERE pagename = 'index.php'";
$result = $mysqli->query($query);
while ($row = $result->fetch_array(MYSQLI_ASSOC)){
$pagetitle = $row["pagetitle"];
$pagename = $row["pagename"];
$pagecontent = $row["pagecontent"];
}
}
?>
Я просто хотел бы сказать, что вы делаете здесь две вещи, которые обычно считаются плохой практикой.
И то, и другое — плохие идеи, и в какой-то момент они почти наверняка укусят вас в задницу.
Что вы пытаетесь сделать?
real_escape_string просто удаляет любые символы, которые могут быть использованы для внедрения SQL. Если вы выполняете ввод данных пользователем в виде PHP-кода, вы предоставляете своим пользователям те же возможности, что и в ваших PHP-скриптах. В том числе запуск системных команд для удаления всех файлов с вашего сервера, например.
Вы не хотите этим заниматься. Этот конкретный случай, о котором вы говорите, вы можете уточнить? Вероятно, есть лучшее решение вашей проблемы.