0

每次我尝试更新我的 textarea 并在 textarea 内添加一个引号",在我更新后我得到 1 \,我再次更新我得到 3 个斜杠\\\,再次是 5 个斜杠,依此类推。尝试在 php ini 中添加 3 个代码以禁用魔术引号,但没有:

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 />
4

1 回答 1

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另外,请删除所有函数实例。

于 2013-12-08T18:57:16.487 回答