我有一个带有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/''
据我所知,您希望您的网站在本地使用localhost/192.168.x.x/127.0.0.1或在远程web服务器上工作,并区分您的配置,以便您的javascript能够正确地从一个配置切换到另一个配置。
首先,你不能直接从javascript中获取你的IP地址,你需要使用一个中继网站:请参阅本线程了解答案。
但是,在你的情况下,我相信有一种更简单的方法可以继续,而且没有任何"如果"。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.
如果按钮和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;
....