データベースへのデータの書き込みに問題があります。ページを編集して HTML タグを含むデータを挿入すると、ページが破損します。たとえば、< h2 > タグで囲まれたテキストがあり、データベースをチェックすると余分な文字 <h2>.... が表示されます。
<h2>概要ページ</h2>
<p>これは概要ページです</p>
次に、Web ページをリロードすると、入力したテキストとタグが表示されますが、明らかに表示したくありません。なぜこれが起こっているのですか?
<?php
session_start();
include_once "admin_check.php";
?>
<?php
first thing, I did not do that
$pid = preg_replace('#[^0-9]#', '', $_POST['pid']); // filter everything but numbers for security
include_once "../scripts/connect_to_mysql.php";
$sqlCommand = "SELECT pagetitle, linklabel, pageorder, pagebody FROM pages WHERE id='$pid' LIMIT 1";
$query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error());
while ($row = mysqli_fetch_array($query)) {
$pagetitle = $row["pagetitle"];
$linklabel = $row["linklabel"];
$pageorder = $row["pageorder"];
$pagebody = $row["pagebody"];
$pagebody = str_replace("<br />", "", $pagebody);
$pagebody = nl2br(htmlspecialchars($pagebody));
}
mysqli_free_result($query);
?>
<?php
$pid = $_POST['pid'];
$pagetitle = $_POST['pagetitle'];
$linklabel = $_POST['linklabel'];
$pagebody = $_POST['pagebody'];
// Filter Function -------------------------------------------------------------------
function filterFunction ($var) {
$var = nl2br(htmlspecialchars($var));
$var = str_replace("'", "'", $var);
$var = str_replace("`", "'", $var);
return $var;
}
$pagetitle = filterFunction($pagetitle);
$linklabel = filterFunction($linklabel);
$pagebody = filterFunction($pagebody);
// End Filter Function --------------------------------------------------------------
include_once "../scripts/connect_to_mysql.php";
// Add the updated info into the database table
$query = mysqli_query($myConnection, "UPDATE pages SET pagetitle='$pagetitle', linklabel='$linklabel', pagebody='$pagebody', lastmodified='now()' WHERE id='$pid'") or die (mysqli_error($myConnection));
echo 'Operation Completed Successfully! <br /><br /><a href="index.php">Click Here</a>';
exit();
?>