Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.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
Javascript 使用Ajax捕获IP地址_Javascript_Php_Ajax_Pdo_Ip - Fatal编程技术网

Javascript 使用Ajax捕获IP地址

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地址以插入我的数据库

我所要做的就是在我的PHP文件中创建一个变量,如下所示:
$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(), ?)
        ";