希望有人可以帮助解决这个问题。
我正在寻找简单的JavaScript代码,它将更新一个href链接网址,并根据访问请求来自的IP地址将其显示在静态HTML页面上。
好处是 - IP将是静态的并且是固定的,它将是我已经拥有的相同数字。
换句话说,如果我从不同的IP地址访问同一页面,该页面将根据该页面显示不同的链接URL。
虽然我可能错了,但我的理解是这可以使用'if else'逻辑编写脚本 - 如果检测到并匹配了特定的IP地址,JS会重写链接地址。
以下是我的逻辑。对不起,我不太了解JavaScript语法,并使用下面的构造作为一个假设的例子(因为我没有使用正确的语法和诸如此类的东西,它可能是一个彻底的残骸),但这应该给出一般的想法:
**if (location.referrer.ip('123.45.67.89.00') > -1)**
**document.write.href = 'xxx.com';**
**else if (location.referrer.ip('123.98.76.54.00') > -1)**
**document.write.href = 'yyy.com';**
**else**
**document.write.href = 'zzz.com';**
据我了解,由于我将在公式中使用单个IP地址,因此可以省略以下代码:
**else if (location.referrer.ip('123.98.76.54.00') > -1)**
**document.write.href = 'yyy.com/';**
只留下这样的东西
**if (location.referrer.ip('123.45.67.89.00') > -1)**
**document.write.href = 'xxx.com';**
**else**
**document.write.href = 'zzz.com';**
同样,这可能不是完全正确的方法,需要一种更复杂的解决方案,因此我希望有一些具有编码专业知识的人可以提供一些帮助。为了清楚起见 - 脚本不应该重定向页面,而只是更新显示在其上的链接后面的URL。
我知道已经有几种技术可以提供解决方案,但我的任务是在浏览器中在客户端运行它;我不允许使用服务器端技术,如Dot.NET,ASP,JSP或除JavaScript和静态HTML之外的任何其他技术。
如果可以这样做,有人可以建议吗?基本上,我只需要知道上面描述的方法是否有效,如果是,那么'if'和'else'行的语法是什么。
非常感谢任何帮助,谢谢你!
JK
答案 0 :(得分:0)
我今天去寻找同一个问题的答案而找不到任何东西。经过一些修修补补后,我找到了一个解决方案并在这个网站上注册,只是为了分享它。
在我的特殊情况下,我正在构建我的网站以提供基于IP的不同href,但更具体地说,它是本地IP(192.168.x.x)还是外部IP。目标是规避NAT环回问题(当本地连接到同一IP时无法访问外部IP地址)
首先,我们将使用php将文件从扩展名.html重命名为.php,然后在代码中的任何位置添加它,只需将IP替换为您要搜索的任何IP
<?php
$ipaddress = getenv('REMOTE_ADDR');
if (fnmatch("192.168.*", $ipaddress)) {
echo '<a href="http://192.168.2.40:8080">This button is for local IP</a>';
$link = 'http://192.168.2.40:8080';
} else {
echo '<a href="http://www.myddns.com:8080">This button is for external IP</a>';
$link = 'http://www.myddns.com:8080';
}
?>
我注意到的一个奇怪的事情是我无法将链接变成上面php标签中的图像,所以我通过以下方式解决了这个问题:
<a href="<?php echo "$link";?>"><img src="image/pic.png" onmouseover="this.src='image/picMouseOver.png'" onmouseout="this.src='image/pic.png'" border="0" alt="Link"></a>
请注意,此代码在加载到正确的Web服务器时工作正常,但只需双击并直接在chrome中进行测试就无法正常工作。请注意这一点(即你必须把它放在你的网络服务器上或安装php for windows来测试它)
这回答了你的问题......但在相关的说明中,我想分享其他内容。
因此,我有多个链接到同一网站的域名,但希望链接指向您最初进入的同一个域。因此,我被困在使用相对链接而不是完整的URL(即如果您从www.website1.com找到该网站,按钮不会将您发送到www.website2.com \ link.html)
我想弄清楚如何建立一个到不同端口的相对链接,但是如果没有对域进行硬编码就无法完成。所以我把上面刚才做的和这里的说明结合起来: Relative URL to a different port number in a hyperlink?
并编写此方法以在页面加载后立即更改URL,因此将鼠标悬停在链接上或执行“复制链接位置”将获得带有端口号的更新URL:
<html>
<head>
<script>
function setHref1() {
document.getElementById('modify-me').href = window.location.protocol + "//" + window.location.hostname + ":32400/web/index.html";
}
</script>
<?php
$ipaddress = getenv('REMOTE_ADDR');
if (fnmatch("192.168.*", $ipaddress)) {
// echo '<a href="http://192.168.2.40:8080">This button is for local IP</a>';
$link = 'http://192.168.2.40:8080';
$id = '';
} else {
// echo '<a href="http://www.myddns.com:8080">This button is for external IP</a>';
$link = 'http://www.myddns.com:8080';
$id = 'modify-me';
}
?>
</head>
<body onload="setHref1()">
<a href="<?php echo "$link";?>" id="<?php echo "$id";?>" ><img src="image/pic.png" onmouseover="this.src='image/picMouseOver.png'" onmouseout="this.src='image/pic.png'" border="0" alt="Link"></a>
</body>
</html>
编辑: 您可能还会发现此代码显示访问者有趣的IP地址:
<html>
<head>
<title>What is my IP address?</title>
</head>
<body>
<?php
if (getenv('HTTP_X_FORWARDED_FOR')) {
$pipaddress = getenv('HTTP_X_FORWARDED_FOR');
$ipaddress = getenv('REMOTE_ADDR');
echo "Your Proxy IP address is : ".$pipaddress. "(via $ipaddress)" ;
} else {
$ipaddress = getenv('REMOTE_ADDR');
echo "Your IP address is : $ipaddress";
}
?>
</body>
</html>
来源:http://www.cyberciti.biz/faq/how-to-determine-retrieve-visitors-ip-address-use-php-code-programming/