我有一个带有JavaScript的按钮,可以调用'一个php文件。 该网站可从内部网络和万维网访问。
如果我点击www中的按钮,php无效,因为JavaScript中的地址是内部192.168.x.x地址。
function doSomething(id)
{
var url ="http://192.168.1.1/phpfile.php?id" +id;
var win = window.open(url, '_blank');
if(win){
//Browser has allowed it to be opened
win.focus();
}
else
{
//Broswer has blocked it
alert('Please allow popups for this site');
}
}
是否可以区分呼叫是来自内部还是其他网络?
在另一种情况下(php)我使用if-else来解决问题
((substr($_SERVER['REMOTE_ADDR'],0,8) == "192.168.") ||($_SERVER['REMOTE_ADDR'] == "127.0.0.1"))
? 'http://internal/address/' : 'http://my.external.de/''
答案 0 :(得分:0)
如果按钮和JavaScript代码驻留在从同一服务器发送的HTML页面中,它可以在发送此页面之前测试并设置正确的值。
$PREFIX = ((substr($_SERVER['REMOTE_ADDR'],0,8) == "192.168.") ||($_SERVER['REMOTE_ADDR'] == "127.0.0.1")) ? 'http://internal/address/' : 'http://my.external.de/''
function doSomething(id) {
var url ="<?=PREFIX?>phpfile.php?id" +id;
....
答案 1 :(得分:0)
据我所知,您希望您的网站在本地使用localhost / 192.168.x.x / 127.0.0.1或在远程Web服务器上工作,并区分您拥有的配置,以便您的javascript正确地从一个切换到另一个。
首先,您无法直接从javascript获取IP地址,您需要使用中继网站:请参阅this thread以获取答案。
但是,在你的情况下,我相信有更简单的方法可以继续进行,没有任何'如果'。 Javascript(或浏览器)非常智能,可以为您路由呼叫。将您的代码更改为:
function doSomething(id)
{
var url ="/phpfile.php?id" +id;
var win = window.open(url, '_blank');
if(win){
//Browser has allowed it to be opened
win.focus();
}
else
{
//Broswer has blocked it
alert('Please allow popups for this site');
}
}
如果从localhost加载了运行脚本的页面,则客户端浏览器会自动将调用路由到localhost。如果从my.external.de加载了运行脚本的页面,则路由到my.external.de。