2013-12-08 4 views
0

Каждый раз, когда я пытаюсь обновить свое текстовое поле и внутри текстового поля, я добавляю цитату ", после того, как я обновляю i, получаю 1 \, я обновляю снова, я получаю 3 слэша \\\, снова 5 слэшей и так далее , Пробовал добавлять в PHP ини в 3-коды, чтобы отключить волшебные кавычки, но ничего:Проблема с косой чертой в PHP

magic_quotes_gpc = Off 
magic_quotes_runtime = Off 
magic_quotes_sybase = Off 

Добавлена ​​также в корневой папке и папке, в которой находится файл. Также попробовал это http://us2.php.net/manual/en/security.magicquotes.disabling.php пример 2 и первый комментарий и еще ничего.

Это мой код:

PHP

$username=$_SESSION['username']; 
$viewtopic = $_GET['viewtopic']; 
if ($_POST['edit'] && strip_tags($_POST['topictext'])){ 
    $viewtopic = $_POST['id']; 
    $topictext=mysql_real_escape_string(strip_tags($_POST['topictext'])); 
    $title=mysql_real_escape_string(strip_tags($_POST['title'])); 
    mysql_query("UPDATE topics SET topictext=".quote_smart($topictext).", title=".quote_smart($title)." WHERE id=".quote_smart($viewtopic).""); 
    echo "You have updated your topic!"; 
} 

HTML

<textarea name="topictext" rows="2" cols="20" id="main_tbContent" class="TextBox" style="height:128px;width:99%;"><? echo str_replace("\\r\\n","\r\n",$rows['topictext']); ?></textarea><br /> 
+0

что делает quote_smart() do ?? –

+0

Quote_smart встроен в скрипт. Когда я удаляю 'quote_smart()', это заставляет цикл создания еще двух слэшей, каждое обновление останавливается, но все равно эхо-3 слэша. – Adrian

+0

не забудьте также mysql_real_escape_string $ _POST ['id'] ... хотя вы ожидаете (надеетесь), что вы получите там числовое значение, на самом деле вы также можете получить что-то еще, –

ответ

1

Хорошо, в моем коде для моих записей базы данных, это то, что я делаю. Позвольте мне начать с того, что я всегда отправляю метод POST, чтобы избежать осложнений URL-адреса браузера.

Когда я получаю данные POST, это мой код.

$ID = 1; 
    $DATA = htmlentities(addslashes($_POST['data'])); 
    $FIELD = lifename; 
    $DBQUERY = "UPDATE `lifetable` SET `$FIELD` = '$DATA' WHERE `id` = $ID"; 
    $DBRESULT = $MYSQLI->query($DBQUERY); 

Когда я прошу информацию обратно в запросе на выборку, я ничего особенного не делать, я все это нормальный FETCH_ASSOC или fetch_array без каких-либо функций на всех. Это всегда работает как для входных значений, так и для текстовых полей.

Это должно быть вашим:

mysql_query("UPDATE topics SET topictext='".htmlentities(addslashes($topictext))."', title='".htmlentities(addslashes($title))."' WHERE id='$viewtopic'"); 

И не забывайте свои одиночные кавычки при передаче текстовых данных в качестве значения в MySQL. Я добавил их.

Я в настоящее время использую это на своем локальном сайте.

Также удалите все экземпляры mysql_real_escape_string функций.

+0

addlashes не подходит для дезинфекции входов db. –

+0

Не могли бы вы помочь мне, основываясь на моем примере. Я не получаю его точно. – Adrian

+0

Ум, очевидно, что его код добавляет лишние косые черты, потому что они есть. Для этого, чтобы удалить дополнительные косые черты, addslashes() удалит дополнительные функции по большей части. –

Смежные вопросы