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関数が呼び出されることを期待している場合のようです。そうではありません。ページが実行されたときに一度実行されるため、次のようになりますcheckJavaScriptreloadembedcheckJavaScript

<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 に答える