[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запись не проходит в БД!
Страницы: 1, 2, 3, 4
Michael
Цитата (Гость_Елена)
И может ли mysqli_real_escape_string навредить коду скрипта?

нет

_____________
There never was a struggle in the soul of a good man that was not hard
Гость_Елена
Что-то я совсем запуталась!

В первом случае.
Есть JS-скрипт, который принимает значение формы от CKEditor:
var editor = encodeURIComponent(CKEDITOR.instances.editor.getData());

И отправляет его обработчику AJAX'ом.
В этом обработчике я всего-навсего пропускаю полученную переменную через htmlspecialchars(), без mysqli_real_escape_string() и UPDATE проходит успешно!

Во втором случае.
Есть ещё php-код, в котором я делаю запрос к БД и получаю код страницы, делаю htmlspecialchars_decode и ещё кое-какие изменения и перед записью пропускаю через htmlspecialchars(), но на этот раз без mysqi_real_escape_string() UPDATE не проходит!

Почему? Неужели JS'овский encodeURIComponent() помогает?
Гость_Елена
P.S. А если в первом случае добавить помимо htmlspecialchars() ещё и mysqli_real_escape_string(), то проподает форматирование!
Valick
Цитата
через htmlspecialchars(), без mysqli_real_escape_string()

зачем htmlspecialchars()?
приняли, обработали mysqli_real_escape_string() и сохранили в базе
далее если редактирует человек, то достали из базы и отдали автору писанины в CKEditor как есть
если выводим на страницу, то перед выводом обрабатываем htmlspecialchars()
__
тип поля в БД какой? text?
если никаких дополнительных телодвижений (типа поиска) с текстом не производите то можно использовать blob

_____________
Стимулятор ~yoomoney - 41001303250491
Гость_Елена
Valick, суть проблемы не в этом, а почему в первом случае не нужен mysqli_real_escape_string(). Даже нет, не не нужен просто нельзя использовать, т.к. все ковычки экранизируются и оформление проподает!

А во втором случае без mysqli_real_escape_string() просто не обойтись! И код остаётся нормальным.

Разница ведь лишь в том, что в первом случае код получен из CKEditor, а во втором из БД.
Гость_Елена
Просто я хотела для безопасности пропустить код, принятый из CKEditor через mysqli_real_escape_string() , но код портится!
Guest
Попробовала убрать encodeURIComponent() из JS и добавить mysqli_real_escape_string() в PHP обработчик - та же фигня, код портится.
Valick
покажите код обработчика

_____________
Стимулятор ~yoomoney - 41001303250491
Гость_Елена
<?php
session_start();

if (isset($_SESSION['login']) && isset($_SESSION['id'])) {
header('Content-Type: text/html;charset=utf-8');
include '../../config.php';

if (isset($_POST['page_id']) && ($_POST['editor'])) {
$login = mysqli_real_escape_string($db, $_SESSION['login']);
$editor_data = htmlspecialchars($_POST['editor']);
$page_id = $_POST['page_id'];
$query = mysqli_query($db, "SELECT `id` FROM `user_pages` WHERE `page_id`='$page_id' and `login`='$login' LIMIT 1");
if (mysqli_num_rows($query) === 1) {
if (mysqli_query($db, "UPDATE `user_pages` SET `html_code`='$editor_data' WHERE `page_id`='$page_id'")) {
echo '<div style="font:bold 14px Arial; color:#87B6E1; margin:25px 0 0 0;">Успешно сохранено!</div>';
}
}

else{
echo '<div style="font:bold 14px Arial; color:#87B6E1; margin:5px 0 0 0;">Ошибка! Страница не найдена!</div>';
}
}

else {
echo '<div style="font:bold 14px Arial; color:#87B6E1; margin:0;">Ошибка! Попробуйте ещё раз!</div>';
}
}

else {
echo '<div style="font:bold 14px Arial; color:#87B6E1; margin:0;">Ошибка! Авторизируйтесь</div>';
}
?>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.