与PhP的论坛评论部分

时间:2014-02-18 15:06:10

标签: php database forms quotes forum

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

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

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

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

1 个答案:

答案 0 :(得分:1)

你正在进行一项名为&#34; sql injections&#34;这是一个你应该关心的严重问题。

请阅读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语句中使用参数的更多信息:)