【发布时间】:2011-09-15 01:08:59
【问题描述】:
我会尽量保持简单...这是我用来从数据库中填充下拉菜单的代码。这会正确填充下拉菜单。
<form action="formsubmit.php?team_id=6" method="post">
<label> <br />What did they say?: <br />
<textarea name="quotetext" rows="10" cols="26"></textarea></label>
<select name='name'>
<?php
while ($temp = mysql_fetch_assoc($query)) {
echo "<option value=" . $temp['id'] . ">".htmlspecialchars($temp['lastname']) . ", " . htmlspecialchars($temp['firstname']) . "</option>";
}
?>
</select>
<input type="submit" value="Submit!" />
</form>
我正在尝试做的是将人的 ID 传递到文件 formsubmit.php 中,该文件在提交表单时被调用。当我在 formsubmit.php 中对我的数据库查询使用 $die($sql) 时,此人的 ID 为空白......其他一切都很好地通过了。这是formsubmit.php中的相关代码:
$quotetext = $_POST['quotetext'];
$id = $_POST['id'];
$team_id = $_GET['team_id'];
$sql = "INSERT INTO quotes SET
speaker_id='$id',
quotetext='$quotetext',
game_id=2";
die($sql);
编辑:已修复,感谢 Michael。
<select name='name'>
应该是:
<select name='id'>
【问题讨论】:
-
请阅读 SQL 注入漏洞。您的脚本很容易受到数据库篡改和黑客攻击。 en.wikipedia.org/wiki/Sql_injection 简而言之,您应该对您在 SQL 查询中使用的所有变量调用 mysql_real_escape_string()。
-
示例:
$quotetext = mysql_real_escape_string($_POST['quotetext']); -
对于整数值使用:
intval($_POST['id']);,对于字符串值mysql_real_escape_string()。检查是否使用get_magic_quotes_gpc()在服务器上设置了魔术引号配置值并在您的GPC 变量上使用stripslashes()也是明智之举。