Javascript 使用Ajax捕获IP地址
我有一个按钮,当按下时,允许用户查看目录。我现在没有从用户那里收集任何信息。我只是收集他们下载的目录。我想将此更改为收集他们的IP地址以插入我的数据库 我所要做的就是在我的PHP文件中创建一个变量,如下所示:Javascript 使用Ajax捕获IP地址,javascript,php,ajax,pdo,ip,Javascript,Php,Ajax,Pdo,Ip,我有一个按钮,当按下时,允许用户查看目录。我现在没有从用户那里收集任何信息。我只是收集他们下载的目录。我想将此更改为收集他们的IP地址以插入我的数据库 我所要做的就是在我的PHP文件中创建一个变量,如下所示: $ip=$\u服务器[“远程地址”] 然后将其添加到我的PDO语句中,以便插入数据库 我读到很多人建议检查$\u服务器[“HTTP\u X\u FORWARDED\u FOR”]。如何检查这两个变量并将其分配给一个变量 我这样做对吗 阿贾克斯 PHP 使用空合并运算符: $ip = $_S
$ip=$\u服务器[“远程地址”]代码>
然后将其添加到我的PDO语句中,以便插入数据库
我读到很多人建议检查$\u服务器[“HTTP\u X\u FORWARDED\u FOR”]
。如何检查这两个变量并将其分配给一个变量
我这样做对吗
阿贾克斯
PHP
使用空合并运算符:
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"] ?? $_SERVER["REMOTE_ADDR"];
如果设置了HTTP_X_FORWARDED_FOR(如果请求来自代理,则为客户端IP),否则返回到REMOTE_ADDR(请求来自的实际IP)
警告:客户端很容易伪造的HTTP_X_转发_
还要注意的是,您有:
$catalog_download_insert = "INSERT INTO catalog_download_now
(catalog_name, button_triggered, date_sent, $ip)
VALUES(?, ?, NOW(), ?)
";
从$ip
中删除该美元符号,它应该是字段名,而不是您试图存储在其中的值。完美!谢谢你的帮助,它工作得很好。顺便说一句-谢谢你看到我的打字错误。另外,X-Forwarded-for:
已经被弃用了。@Sammitch你是说我应该把Forwarded改为$\u服务器[“HTTP\u X\u Forwarded”]
?此时你可能必须同时检查这两个,而转发:
头的格式完全不同。但老实说,除非有特定的理由,否则根本不应该查看代理头。正如Alex所指出的,它们非常容易被欺骗,只有当您明确信任设置它们的代理时,才应该使用它们。你的CDN@Sammitch谢谢你的信息!
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"] ?? $_SERVER["REMOTE_ADDR"];
$catalog_download_insert = "INSERT INTO catalog_download_now
(catalog_name, button_triggered, date_sent, $ip)
VALUES(?, ?, NOW(), ?)
";