PHP中的引用和斜杠问题

时间:2013-12-08 18:53:18

标签: php mysql-real-escape-string magic-quotes-gpc

每次我尝试更新我的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 />

1 个答案:

答案 0 :(得分: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);

当我在select查询中询问信息时,我没有做任何特殊的事情,我所做的只是普通的fetch_assoc或fetch_array,根本没有任何功能。这总是适用于输入值和textareas。

这应该是你的:

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

在将文本数据作为mysql中的值传递时,不要忘记单引号。我加了他们。

我目前在我的本地网站上使用此功能。

另外,请删除mysql_real_escape_string个函数的所有实例。