Я создаю пользовательский редактор WYSIWYG с функцией сохранения, а через функцию сохранения я запустил некоторый код, чтобы получить все в пределах определенного div, сохранить его в таблице данных или перезапишите его. Но сейчас я пытаюсь загрузить страницу назад.Попытка печати на html-страницу через PHP
Процесс выглядит следующим образом: вы нажимаете кнопку сохранения и запускаете скрипт PHP под названием save.php, как показано ниже.
Моя проблема в том, что я хочу, чтобы она загружала или повторяла содержимое в пределах определенного div на исходной странице html. Как мне это сделать? Мне нужно, чтобы он работал, как функция innerHTML в Javascript, в основном.
Ниже приведены файлы, которые я использую, по крайней мере, соответствующие части.
test.html:
<form method="post" name="blog-post" id="blog-post">
<input type="hidden" name="postID" value="1"><!--Get the post's id-->
<div class="blog-editor-bar">
<a href="#" data-command='save'
onclick="submitForm('save.php');">
<i class='fa fa-save'></i>
</a>
</div>
<div id="blog-textarea" contenteditable>
</div>
<textarea style="display:none;" id="blog-post-cont" name="post-content"></textarea>
</form>
test.js:
function submitForm(action){
var theForm = document.getElementById("blog-post");
theForm.elements("post-content").value = document.getElementById("blog-textarea").innerHTML;
theForm.action = action;
theForm.submit();
}
save.php:
$conn = mysqli_connect('localhost', 'root', '', '');
if (mysqli_connect_errno()){
echo "<p>Connection Failed:".mysqli_connect_error()."</p>\n";
}
//store stuff in database
//Get Variables
$postid = $_POST['postID'] ? $_POST['postID'] : null;
$post = $_POST['post-content'] ? $_POST['post-content'] : null;
//if exists, overwrite
if($postid != null || $postid != ""){
$sqlSave = "SELECT * FROM wysiwyg.post WHERE idpost = $postid";
$rSave = mysqli_query($conn, $sqlSave) or die(mysqli_error($conn));
if(mysqli_num_rows($rSave)){
$sqlOverwrite = "INSERT INTO wysiwyg.post(post) VALUES(?) WHERE idpost = ?";
$stmt = mysqli_prepare($conn, $sqlOverwrite);
mysqli_stmt_bind_param($stmt, "sd", $post, $postid);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
mysqli_close($conn);
} else {
newSave();
}
loadSave();
}
function newSave(){
$sqlNewSave = "INSERT INTO wysiwyg.post(post) VALUES(?)";
$stmt = mysqli_prepare($conn, $sqlNewSave);
mysqli_stmt_bind_param($stmt, "s", $post);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
mysqli_close($conn);
}
function loadSave(){
$sqlLoad = "SELECT * FROM wysiwyg.post WHERE idpost = $postid";
$rLoad = mysqli_query($conn, $sqlLoad) or die(mysqli_error($conn));
//This is the part I'm stuck on
}
Спасибо всего заранее за помощь мне! Я застрял на нем хотя бы на несколько часов!
EDIT: Прежде чем люди комментируют SQL-инъекции, я принял это во внимание. Это я получаю код, работающий на моем локальном хосте, прежде чем я запускаю его через тонну анти-sql-меток инъекций, которые я уже делал в прошлом. Код, который я предоставляю, имеет значение только для функциональности на этом этапе.
EDIT # 2: Код для инъекций уже существует. Кажется, я забыл предоставить эту информацию. Повторяю, код, который я здесь привел, это только код, относящийся к функциональности. Я избежал строк, обрезал и т. Д. И т. Д., Но этот код не нужен, чтобы люди могли понять, что я пытаюсь сделать.
Вам нужно использовать AJAX для сохранения текста. Также ваши запросы '$ sqlSave' и' $ sqlLoad' уязвимы для SQL-инъекций. Вы должны использовать связанные параметры для ** всех ** данных, предоставленных пользователем. – Mike
Есть много учебников, которые входят в AJAX, https://learn.jquery.com/ajax/. Вы частично предотвращаете SQL-инъекции. Вы должны делать это повсюду, делая это позже, это плохая идея. – chris85
Спасибо за быстрый ответ Майк. Проверьте мои изменения. Я знаю SQL, но в настоящее время я сосредоточен на функциональности в первую очередь, поэтому он работает. Как я могу сделать Ajax из файла PHP, как в моей функции загрузки php, как бы я вызвал вызов Ajax для хранения значений в json-файле? – verdeletg