【问题标题】:PHP SQL Server Removing Single Quotes from user entered data [duplicate]PHP SQL Server从用户输入的数据中删除单引号[重复]
【发布时间】:2014-05-20 20:48:04
【问题描述】:

我有一个 PHP 表单,用户可以在其中输入数据。当他们这样做时,他们会使用单引号等特殊字符。

这可以防止他们的数据被放入 SQL 表中。我没有使用 MySQL。我正在使用 SQL Server。

我该如何解决这个问题?

我的代码是:

include'dbcon.php';
//connectiontothedatabase
$dbhandle=mssql_connect($myServer,$myUser,$myPass)
or die("Couldn't connect to SQL Server");
//selectadatabasetoworkwith
$selected=mssql_select_db($myDB,$dbhandle)
or die("Couldn't open database");
session_start();
$surnum=$_SESSION['surnum'];
$email=$_SESSION['email'];
$site=$_SESSION['site'];

$query="INSERT INTO ZSURVEYA(SURNUM_0,EMAIL_0,A_0,A_1,A_2,A_3,A_4,A_5,A_6,A_7,A_8,A_9,A_10,A_11,A_12,A_13) VALUES ('$surnum','$email',convert(varchar(max),'$_POST[Q_0]'),convert(varchar(max),'$_POST[Q_1]'),convert(varchar(max),'$_POST[Q_2]'),convert(varchar(max),'$_POST[Q_3]'),convert(varchar(max),'$_POST[Q_4]'),convert(varchar(max),'$_POST[Q_5]'),convert(varchar(max),'$_POST[Q_6]'),convert(varchar(max),'$_POST[Q_7]'),convert(varchar(max),'$_POST[Q_8]'),convert(varchar(max),'$_POST[Q_9]'),convert(varchar(max),'$_POST[Q_10]'),convert(varchar(max),'$_POST[Q_11]'),convert(varchar(max),'$_POST[Q_12]'),convert(varchar(max),'$_POST[Q_13]'))";

mssql_query($query);

【问题讨论】:

标签: php sql-server


【解决方案1】:

要回答您的问题,请使用addslashes() 函数不要使用它,原因如下:

  1. 您没有在将数据直接用于 SQL 之前对其进行清理
  2. 永远不要将变量值直接放入 SQL(查找 SQL 注入)
  3. 你应该使用准备好的语句,我确信 PDO 支持 SQL,所以我会在 php.net/pdo 查找 PDO

【讨论】:

  • “重复的原始答案”都没有帮助,也没有添加斜杠。都没有奏效。 :/ 目前没有任何证据证明可以解决问题。
猜你喜欢
  • 1970-01-01
  • 2011-01-02
  • 1970-01-01
  • 2014-07-18
  • 1970-01-01
  • 2011-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多