2

我使用以下 PHP 代码检查 IP 和端口状态。有用!然后我做了一个刷新按钮来重置显示的状态,这样人们就不需要按F5了。嵌入状态显示“刷新”,但 IP 检查似乎不起作用。

这是 PHP IP 检查:

function check($host,$port)
{
if(isset($host) && isset($port)){
    $fp = @fsockopen($host, $port, $errno, $errstr, 0.5);
        if(!$fp){
            $outp = '"onlinestatus/offline.swf"';
            }
        elseif($fp){
            $outp = '"onlinestatus/online.swf"';
            }
    } else {
    $outp = 'null';
    }
    return ($outp);
}
?>

这是嵌入控件:

<script type="text/javascript">
function reloadembed() {    
  var game=document.getElementById("embed1");
  var clone=game.cloneNode(true);
  clone.setAttribute('src',<? echo check($host,$port); ?>);
  game.parentNode.replaceChild(clone,game)
}
</script>

这是刷新按钮:

<a href="javascript:"
onmousedown="document.images['Refresh'].src='image/button_reresh_click.png'"
onmouseup="document.images['Refresh'].src='image/button_reresh_down.png'"
onClick="reloadembed();"
onMouseOver="document.images['Refresh'].src='image/button_reresh_down.png'"
onMouseOut="document.images['Refresh'].src='image/button_reresh_up.png'">
<img name="Refresh" src="image/button_reresh_up.png">
</a>
4

1 回答 1

0

您的check函数返回一个字符串,因此您需要将此值括在引号中:

clone.setAttribute('src','<? echo check($host,$port); ?>');

编辑:

您似乎希望每次调用该PHP函数check时都会调用该JavaScript函数reloadembed。事实并非如此。check运行一次——当页面被执行时——所以你JavaScript会看起来像这样:

<script type="text/javascript">
function reloadembed() {    
  var game=document.getElementById("embed1");
  var clone=game.cloneNode(true);
  clone.setAttribute('src','onlinestatus/online.swf');
  game.parentNode.replaceChild(clone,game)
}
</script>

src永远是onlinestatus/online.swf。你可以看看你是否查看源代码。要让它按您的意愿工作,您需要使用AJAX.

于 2013-03-27T20:00:22.173 回答