【发布时间】:2012-03-08 05:42:51
【问题描述】:
我创建了一个表单,用户可以在其中搜索数据库,结果取决于用户填写表单的方式。
例如,假设我有 name、address、city、state 和 zip 字段,并且用户填写 name 和 city 字段,结果反映了输入。当表单提交时,所有记录都会显示出来。
为此,我写了这个:
if(isset($_POST['submit'])) {
$sql = mysql_query("SELECT * FROM table WHERE name LIKE '%" . $_POST['name'] . "%'
OR address LIKE '%" . $_POST['address'] . "%'
OR city LIKE '%" . $_POST['city'] . "%'
OR state LIKE '%" . $_POST['state'] . "%'
OR zip LIKE '%" . $_POST['zip'] . "%'");
}
<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
<tr>
<td>Name:</td>
<td><input type="text" name="name" /></td>
</tr>
<tr>
<td>Address:</td>
<td><input type="text" name="address" /></td>
</tr>
<tr>
<td>City:</td>
<td><input type="text" name="city" /></td>
</tr>
<tr>
<td>State:</td>
<td><input type="text" name="state" /></td>
</tr>
<tr>
<td>Zip:</td>
<td><input type="text" name="zip" /></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" value="Search" /></td>
</tr>
</form>
</table>
<?php
if(isset($_POST['submit'])) {
while($row = mysql_fetch_array($sql)) {
echo $row['name'] . "<br />";
}
}
?>
但在这种情况下,用户可以将字段留空。
【问题讨论】:
-
这里的编码对恶意用户不安全。请阅读stackoverflow.com/questions/60174/…。
标签: php