Я пытаюсь обработать форму. Если есть ошибка, пользователь будет перенаправлен на форму, где будут отображаться ошибки, и все, что пользователь пытался отправить, отражается в текстовой области tinymce формы. Таким образом, пользователю не придется переписывать все заново. Все работает хорошо, за исключением того, что переменная сеанса не отображается в редакторе tinymce после перенаправления пользователя. Переменная сеанса установлена и имеет правильное значение. Если я выведу на экран переменные сеанса за пределами tinymce, они появятся, как и ожидалось. Это просто не будет отображаться в текстовой области. Как я могу это исправить?
Кроме того, я знаю, что это подвержено xss. Я хочу разрешить пользователям форматировать свои посты, поэтому я буду запускать их через HTML Purifier позже.
addnewthread. php:
<?php
session_start();
if($_SERVER['REQUEST_METHOD']==='POST')
{
if(isset($_POST['submit'])&&$_POST['submit']==='success')
{
if (empty(trim($_POST['thread-title'])))
{
$_SESSION['forum_titErr'] = "<p class='error text-center'>Error message</p>";
}
else
{
$_SESSION['threadTitle'] = $_POST['thread-title'];
}
if (empty(trim($_POST['thread-content'])))
{
$_SESSION['forum_thrContErr'] = "<p class='error text-center'>Error message </p>";
}
else
{
$_SESSION['threadCont'] = $_POST['thread-content'];
}
if((isset($_SESSION['forum_titErr'])&&!empty($_SESSION['forum_titErr']))|| (isset($_SESSION['forum_thrContErr'])&&!empty($_SESSION['forum_thrContErr'])))
{
header("Location: newthread.php?submit=error");
}
else
{
//insert into database and redirect to readtopic.php if insert is successful; else redirect to form and show insert is not successful
}
}
else{
header("Location: newthread.php");
}
}
else
{
exit('invalid request');
}
?>
форма html:
<!DOCTYPE html>
<html>
<?php
session_start();
?>
<head>
<!-- title, meta, stylesheet, etc. -->
<script type="text/javascript" src="jquery.js"></script>
<script src="https://cdn.tiny.cloud/1/no-api-key/tinymce/5/tinymce.min.js" referrerpolicy="origin"></script>
<script>tinymce.init({selector:"#threadCont", height: 300, resize: false
});</script>
</head>
<body>
<?php
if($_GET['submit']==="error")
{
if((isset($_SESSION['forum_titErr'])&&!empty($_SESSION['forum_titErr']))||
(isset($_SESSION['forum_thrContErr'])&&!empty($_SESSION['forum_thrContErr'])))
{
echo $_SESSION['forum_titErr'];
echo $_SESSION['forum_thrContErr'];
session_unset($_SESSION['forum_titErr']);
session_unset($_SESSION['forum_thrContErr']);
}
}
?>
<form action='addnewthread.php' method='post'>
<input type='text' name='thread-title' id='thread-title' placeholder='Type title here' class='user-input'
<?php
if(isset($_SESSION['threadTitle'])&!empty($_SESSION['threadTitle'])
{
echo "value='{$_SESSION['threadTitle']}'";
}
?>
>
<textarea id='threadCont' name='threadCont'>
<?php
if(isset($_SESSION['threadCont'])&!empty($_SESSION['threadCont'])
{
echo $_SESSION['threadCont'];
}
?>
</textarea>
<button id='submit' type='submit' name='submit'value='success'>Submit</button>
</form>
</body>
</html>