Php Spambots绕过带标签和其他措施。我做错了什么?
我有一个网站,用户可以在谷歌地图上添加位置。Spambots一直绕过我的代码,所以很明显我做错了什么。这就是我所说的笨重,可能有点过火,但仍然不起作用:Php Spambots绕过带标签和其他措施。我做错了什么?,php,mysqli,Php,Mysqli,我有一个网站,用户可以在谷歌地图上添加位置。Spambots一直绕过我的代码,所以很明显我做错了什么。这就是我所说的笨重,可能有点过火,但仍然不起作用: // adding a new location to the db if (isset($_POST['name'])) { $name = $mysqli->real_escape_string($_POST['name']); $description = $mysqli->real_escape_st
// adding a new location to the db
if (isset($_POST['name']))
{
$name = $mysqli->real_escape_string($_POST['name']);
$description = $mysqli->real_escape_string($_POST['description']);
$description = strip_tags(html_entity_decode($description));
$username = $mysqli->real_escape_string($_POST['username']);
$lat = $mysqli->real_escape_string($_POST['lat']);
$long = $mysqli->real_escape_string($_POST['long']);
$address = $mysqli->real_escape_string($_POST['address']);
$phone = $mysqli->real_escape_string($_POST['phone']);
$email = $mysqli->real_escape_string($_POST['email']);
$site = $mysqli->real_escape_string($_POST['site']);
$tradition = $mysqli->real_escape_string($_POST['tradition']);
// generate id
$id = 1;
$res_query = "select max(id) from locations";
$result = $mysqli->query($res_query) or die($mysqli->error.__LINE__);
if ($result->num_rows != 0)
{
$row = $result->fetch_array(MYSQLI_ASSOC);
$id = $row['max(id)']+1;
}
// sql query to add location
if ($lat != 0 && $long != 0)
{
$stmt = $mysqli->prepare("insert into locations(id, name, latitude, longitude, address, description, phone, email, site, tradition, username) values (?,?,?,?,?,?,?,?,?,?,?)");
$stmt->bind_param('isddsssssss', $id, $name, $lat, $long, $address, $description, $phone, $email, $site, $tradition, $username);
$stmt->execute();
$stmt->close();
}
因此,我的问题是,即使我使用strip_标记,spambot仍会在description字段中发布http链接,而且它们总是离开lat,长度为0,即使我试图通过if$lat!=0&&$long!=0到目前为止,spambots总是将坐标设置为0,因此如果我能够成功拒绝这些值,这将是一个良好的开端。我做错了什么
编辑:我添加了一个代码片段,在插入数据库之前将变量附加到文本文件中,当通过站点执行此操作时,变量会附加到文件中,但在spambots发布时不会。我猜他们完全绕过了这个函数,但我没有任何其他SQL查询包含代码中的用户输入…到底是什么传递了这个代码?http链接不清楚。即使我有$description=$mysqli->real\u escape\u string$\u POST['description']$description=strip\u tagshtml\u entity\u decode$description;第二部分,spambots在post表单的description字段中发布标签。他们发布标签,那么接下来会发生什么呢?他们到底发布了什么以及这个脚本的结果是什么?我在数据库中得到了一个包含垃圾邮件链接的条目,我试图通过从描述变量中删除html标记来阻止它。最好是完全拒绝它们,b不允许将lat和long变量设置为0。这些都不适合我。它到底包含什么?你能提供真实的例子吗。从$lat和$lng开始-如果您发送0a,则它将通过检查并作为0插入