Использование крошечного mce в качестве текстового редактора.Выдает ошибку при попытке добавить пример кода в качестве записи в блоге.Сайт использует php-mysql - PullRequest
1 голос
/ 12 августа 2011

Я использую tinymce для текстовой области. Код php, который добавляет контент в базу данных, приведен ниже:

mysql_select_db('rough_site');
if(($_POST['post_content'] != ''))
{
$current_date= date("Y-m-d");
//$content_of_post = stripslashes($_POST['post_content']);
$content_of_post=$_POST['post_content'];
//$post_title=$_POST['post_title'];
if(($_POST['post_title']) =='')
{
$post_title="Untitled".time();
}
$addpost = "INSERT into posts (user_name, post_title ,                 post_content,post_total,post_date)
VALUES ( '$_SESSION[user_name]' , '$post_title' , '$content_of_post', 0  ,                '$current_date') " ;
if(!$confirmpost)
{
echo "Problem adding your post . Please resubmit it . " ."<br/>" . mysql_error();
}

Теперь, если я пытаюсь добавить код php в качестве примера, это выдает ошибку, подобную этой:

Не удалось добавить свой пост.Пожалуйста, отправьте его повторно.У вас есть ошибка в вашем синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с '/ em>');распечатать пароль«Зашифрованная версия mypassword &» в строке 2.

Что здесь не так?Спасибо!

пример кода, который я хотел добавить:

<?php 
$password = crypt('mypassword'); 
print $password . “ is the encrypted version of mypassword”; 

?> 


<?php 
$password = crypt('mypassword' , 'd4'); 
print $password . " is the CRYPT_STD_DES version of mypassword<br>"; 
$password = crypt('mypassword' , 'k783d.y1g'); 
print $password . " is the CRYPT_EXT_DES version of mypassword<br>"; 
$password = crypt('mypassword' , '$1$d4juhy6d$'); 
print $password . " is the CRYPT_MD5 version of mypassword<br>"; 
$password = crypt('mypassword' , '$2a$07$kiuhgfslerd...........$'); 
print $password . " is the CRYPT_BLOWFISH version of mypassword<br>"; 
?> 

Ответы [ 2 ]

0 голосов
/ 12 августа 2011

Вы должны использовать mysql_real_escape_string на входе, который вы получаете из формы:

$content_of_post = mysql_real_escape_string($_POST['post_content']);

Кроме того, ваш $post_title не устанавливается, если вы установили $_POST['post_title']. Это также приведет к ошибке SQL. Должно быть что-то вроде:

$post_title=(!empty($_POST['post_title']))?$_POST['post_title']:"Untitled".time();

Кроме того, добавление входных данных в SQL-запрос напрямую - очень плохая практика. Попробуйте использовать mysqli и подготовленные statemnts

0 голосов
/ 12 августа 2011

Я предполагаю, что вам нужно экранировать данные перед публикацией в базе данных. Похоже, ваш запрос разбивается на первую «цитату», что имеет смысл.

Поскольку вы используете устаревшее расширение mysql, взгляните на эту страницу руководства

Таким образом, вы должны сделать что-то подобное перед тем, как назначить переменную $ addpost:

$content_of_post = mysql_real_escape_string($content_of_post);

Кстати, вы должны сделать это для всех полей, чтобы уменьшить риск атак на MySQL. Надеюсь, я прав в догадках, и это помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...