【发布时间】:2016-01-12 20:31:55
【问题描述】:
我有一个 PHP 网站,需要知道访问客户端的 IP 是什么。为此,我使用以下功能:
function get_client_ip() {
$ipaddress = '';
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ipaddress = $_SERVER['REMOTE_ADDR'];
}
return $ipaddress;
}
但是当通过 url omenorpreco.com/teste 访问站点时,页面返回服务器 IP。
访问页面url omenorpreco.com/teste.php时,页面返回客户端IP。
这个错误可能是因为当你访问没有扩展名“.php”的页面时,服务器通过.htaccess来解释页面?
如何调整我的应用程序以进行两种访问,返回客户端 IP,而不是服务器 IP?
在我的 htaccess 代码之上
php_value allow_url_fopen on php_value allow_url_include 1 重写引擎开启 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule !.(js|ico|txt|gif|bmp|jpeg|jpg|png|css|log|rss|zip|xml|sql|pdf|doc|docx|xls)$ url_amigavel.php RewriteRule 站点地图-categoria.xml$ sitemap.php?number=categoria RewriteRule 站点地图-([0-9]+).xml$ sitemap.php?number=$1 RewriteRule sitemap_index.xml$ sitemap_index.php
和url_amigavel.php代码
<?php
$geturl = explode( "/", str_replace( strrchr( $_SERVER["REQUEST_URI"], "?" ), "", $_SERVER["REQUEST_URI"] ) );
array_shift( $geturl );
$tipo = $geturl[0];
if ( is_file( "$tipo.php" ) )
{
include "$tipo.php";
}
else
{
echo "page not found";
}
?>
编辑:我可以使用客户端 IP 在 HTACCESS 中设置 GLOBAL_VAR 吗?
【问题讨论】:
-
您的应用程序如何处理 url 路由..
-
@rjdown OP 没有问怎么做?
-
将
.htaccess文件内容添加到您的帖子中。似乎(通过一个 URL 上的 1 行和另一个 URL 上的 2 行的回显)路由到不同的脚本可能是罪魁祸首 -
能把
url_amigavel.php(url_friendly.php) 的内容发一下吗?