2017-08-29 15 views
1

Webサーバー上の特定のファイルが削除された場合にのみHTMLページにダウンロードボタンを表示しようとしています。私は、私は次のようになりたい、whileループとその後、CSS display: none; PHPスクリプトを使用したいと思った:サーバーにファイルが存在するときにボタンを表示しない

while (file_exists("/aaa/file.txt")) { 
     sleep(5); 
    } 
//set display property of the invisibleLink class to block and continue 

事は、私はこの最後のステップと、私は「すべてのスレッドを行う方法がわからないです私のユースケースでは、PHPでCSSを変更することはできません。

+0

あなたのPHPがサーバーで実行され、CSSがクライアントによってレンダリングされているためです。

<button type="button" id="test_btn" style="display: none;">Download</button> <script type="text/javascript"> $(document).ready(function() { checkFile(); function checkFile() { $.ajax({ url: '/path/to/file_checker.php', type: 'GET', success: function (data) { if (data === "deleted") { // or whatever you want the response to be $('#test_btn').show(); } else { checkFile(); // you can add a setTimeout if you don't want this running too often } } }); } } </script> 

その後、あなたのファイルチェッカーPHPは、あなたが持っていたものに似たものにすることができます。 –

+0

スリープ状態にすると、その時間だけクライアントへの応答が遅れます。これは意味がありません。ファイルが決して削除されない場合、あなたのページは決して応答を得ず、タイムアウトになります。あなたがするべきことは、ファイルが要求の時点で存在する場合、ボタンを表示することです。そうでない場合は、表示しないでください。ユーザーがボタンを押すと、ファイルの状態を再度確認します。レンダリングされているボタンとユーザーから戻ってくるリクエストの間に削除されている場合は、ユースケースに適したものを使用して、エラーまたは警告を返します。 – ADyson

+2

ファイルが存在するかどうかを知らせ、応答に基づいてクラスを追加/削除するサーバーサイドスクリプトへのajax呼び出しを行うことができます – Pete

答えて

0

何が画面に表示される前に、PHPが実行され、あなたはおそらくそれを行うことができるようにするつもりはないされています。コードをでしょう単に5分間スリープしてから、残りのHTMLを生成してからユーザーに表示してください。

代わりに、display:noneと指定してボタンをマークし、ページが終了したら、ファイルが存在するかどうかを返すPHPページを呼び出すjs関数を呼び出すことができます。ファイルが消えたことをPHPのページに伝えるまで、js関数をループさせてから、js関数にボタンを表示させてループを停止させます。

if (file_exists("/aaa/file.txt")) { 
    echo "exists"; 
} 
else { 
    echo "deleted"; 
} 
+0

私が探していたもの。完璧に働いて、ありがとう! ;) –

0

ジャストボタンを構築し、このようなクラスでそれを隠す:

<style> 
.hidden{ display:none;} 
</style> 

<?php 
if(!file_exists("path")){ $class = "hidden" } 
    echo "<input type='button' class='$class' name='stuff'>woo</button>"; 
?> 
+0

なぜ 'if(file_exists(" path ")){echo" <入力タイプ= 'ボタン' class = '$ class' name = 'stuff'> woo ";}'? – Martijn

+0

あなたがそうするなら、クラスは必要ありませんが、それは別の方法です。しかし、PHPでは、1つのことを行うには50の方法があります。 – clearshot66

関連する問題