我只是一个新手程序员,我正在建立一个提高我技能的论坛,但我现在正在解决问题。 这是代码的问题:
问题是:我们不能使用单引号,我们想要使用它们和发音引号。
这是它进入数据库的地方:
// 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)
答案 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语句中使用参数的更多信息:)