Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Spambots绕过带标签和其他措施。我做错了什么?_Php_Mysqli - Fatal编程技术网

Php 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

我有一个网站,用户可以在谷歌地图上添加位置。Spambots一直绕过我的代码,所以很明显我做错了什么。这就是我所说的笨重,可能有点过火,但仍然不起作用:

    // 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插入