【问题标题】:Forum Comment Section with PhP论坛评论部分与 PhP
【发布时间】:2014-03-18 10:26:53
【问题描述】:

我只是一个新手程序员,我正在创建一个论坛来提高我的技能,但我现在正面临一个问题。 这是代码的问题:

问题是:我们不能使用单引号,我们想使用它们和双引号。

这是它进入数据库的地方:

// get data that sent from form 
$topic=$_POST['topic'];
$detail=$_POST['detail'];
$name=$_SESSION['display'];
$email=$_POST['email'];

这是表格的一部分:

<tr>
    <td width="14%"><strong>Topic</strong></td>
    <td width="2%">:</td>
    <td width="84%"><input name="topic" type="text" id="topic" size="50" /></td>
</tr>
<tr>
    <td valign="top"><strong>Detail</strong></td>
    <td valign="top">:</td>
    <td><textarea name="detail" cols="50" rows="3" id="detail"></textarea></td>
</tr>

我必须添加什么才能使用单引号和双引号?我需要做什么?因为如果有人使用单引号,则消息会崩溃..

这是我给出的错误信息

if($result){
echo "Successful<BR>";
echo "<a href=index.php>View your topic</a>";
header("Location: localhost/forum/");
}
else {
echo "ERROR";
}

这就是它的所在:

$sql="INSERT INTO $qtbl_name(topic, detail, name, email, datetime)VALUES('$topic', '$detail', '$name', '$email', '$datetime')";
$result=mysql_query($sql)

;

【问题讨论】:

  • 我猜你正在使用 mysql_ 函数,所以escape your variables,更好的解决方案是注意该页面上的大红框,并按照它的建议进行操作。

标签: php database forms quotes forum


【解决方案1】:

你正在运行一个叫做“sql injections”的东西,这是一个你应该关心的严重问题。

请阅读http://php.net/mysql_real_escape_string 并使用此功能转义输入数据的特殊字符。

您似乎有这样的查询:

$query = "INSERT INTO tbl (`topic`) VALUES ('$topic');"

所以你生成的查询字符串可能是这样的

$topic = "foobar";
$query = "INSERT INTO tbl (`topic`) VALUES ('$topic');"
echo $query;

将导致:

INSERT INTO tbl (`topic`) VALUES ('foobar');

这很好。但是:

$topic = "f'); delete from tbl;";
$query = "INSERT INTO tbl (`topic`) VALUES ('$topic');"
echo $query;

将返回:

INSERT INTO tbl (`topic`) VALUES('f'); delete from tbl;

这不是你希望发生的事情。

要使您的 PHP 编程技能更上一层楼,您应该阅读 PDO 文档 (http://php.net/pdo) 并了解有关在 sql 语句中使用参数的更多信息:)

【讨论】:

  • 所以我必须为导入的东西创建一个变量?我还更改了上面的代码,所以你可以看到它是如何进入的
  • 我没有什么要补充的;请按照我的链接。您的代码符合预期。使用 mysql_real_escape_string 或 - 更好地 - 阅读有关 PDO 的信息。如果您满意,请接受我的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-07
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多