【问题标题】:Quote and slash issue in PHPPHP中的引号和斜线问题
【发布时间】:2013-12-25 18:54:28
【问题描述】:

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

【问题讨论】:

  • quote_smart() 是做什么的??
  • Quote_smart 集成在脚本中。当我删除 quote_smart() 时,每次更新都会停止创建 2 个斜线的循环,但它仍然会回显 3 个斜线。
  • 不要忘记 mysql_real_escape_string $_POST['id'] 以及......虽然你期待(希望)你会在那里得到一个数值,实际上你也可以得到任何东西else 那里,使 sql 注入成为可能
  • 我不敢相信这个问题没有作为重复问题一目了然。 Stack Overflow 是一个非常奇怪的地方。

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


【解决方案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 函数的所有实例。

【讨论】:

  • addslashes 不足以清理数据库输入
  • 能否请您根据我的示例帮助我,我没有完全理解。
  • 嗯,显然他的代码添加了额外的斜杠,因为它们在那里。因此,为了删除多余的斜线,addslashes() 将删除大部分多余的。
  • 如果不知道您的 quote_smart 函数的作用,就很难知道。在这里我会更新我的答案,给我一分钟:)
  • 似乎.quote_smart 是 mysql/php 中的某种预定义函数。我尝试使用 Dreamweaver 搜索该函数,但没有关于正常 php 函数的结果。
猜你喜欢
  • 2012-10-28
  • 1970-01-01
  • 2015-09-26
  • 1970-01-01
  • 2016-05-16
  • 2021-04-19
  • 2011-07-11
  • 2021-09-08
  • 2012-07-14
相关资源
最近更新 更多