0

私の友人は、 CSS Refreshを使用して、PHP と 'fopen' を使用してリモートで div タグを表示および非表示にできるようにしました。彼は休暇中で、現時点では連絡が取れません。ボタンが押されたときに CSS ファイルを変更するという考えでした。

これの目的は、オンライン ミーティングのリモート コマンドで PDF を含む iframe を表示することです。TeamViewer Meeting などを使用していない理由は、使用しなければならないインターネット接続が面倒だからです。div タグで PDF を読み込むと、すべてがダウンロードされ、CSS ファイルを変更して表示できるようになると思いました。

前のスライド ボタンを追加しようとする前に、(次のスライド ボタンのみで) 機能していました。

<?php
if(isset($_POST['submit'], $_POST['next']))
{
$slide = $_POST['next'];
$slide = $_POST['previous'];
$slide_next = $slide + 1;
$slide_previous = $slide - 1;
$slide_current = $slide;
header("Location: next.php?slide=".$slide_next."");



} else {
if(isset($_GET['slide']))
{
$slide_next = $_GET['slide'];
}
else
{
$slide_next = "2";
}
echo ('
<form action="" method="post">
<input type="hidden" name="next" value="'.$slide_next.'" />
<input type="submit" name="submit" value="Go to Slide '.$slide_next.'" />
</form>
');
}
$myFile = "../css/changer.css.";
$fh = fopen($myFile, 'w') or die("Can't open zee file - error woo woo error");
$stringData = "#content$slide_current {\n";
fwrite($fh, $stringData);
$stringData = " visibility: visible;\n";
fwrite($fh, $stringData);
$stringData = "}\n";
fwrite($fh, $stringData);
$stringData = ".content:not(#content$slide_next) {\n";
fwrite($fh, $stringData);
$stringData = " visibility: hidden;\n";
fwrite($fh, $stringData);
$stringData = " height: 0px;\n";
fwrite($fh, $stringData);
$stringData = "}\n";
fwrite($fh, $stringData);
fclose($fh);
?>

友人がバックアップを保存している FTP で直接変更したため、動作していたときの状態に戻ることができず、現時点ではアクセスできません。

どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

0

私があなたのことを理解していれば、あなたのサイトを開いたすべてのブラウザーで、いくつかの div 要素の可視性を変更する必要がありますよね? あなたが選択した方法は非常に奇妙です。これにはjQueryのajaxとsetIntervalを使用できます。例えば:

ユーザー向けの PHP:

<?php 
$curSlide = file_get_contents("/tmp/slidenumber.txt");//Get current active slide
if (!isset($_POST['testSlideChange'])):
//If there are no POST var, saying that this is an ajax update request, output the HTML page to browser:
?>    
<div id="slide-1" class="slide <?php if($curSlide==1) echo 'visible'?>">Content of slide1</div>
<div id="slide-2" class="slide <?php if($curSlide==2) echo 'visible'?>">Content of slide2</div>
<div id="slide-3" class="slide <?php if($curSlide==3) echo 'visible'?>">Content of slide3</div>
<div id="slide-4" class="slide <?php if($curSlide==4) echo 'visible'?>">Content of slide4</div>
<?php else: //else, if we have POST-var, just return current slide as a number
echo $curSlide;
endif; ?>

CSS:

slide 
{ display:none; }

slide.visible
{  display:block; }

JS:

$(document).ready(function(){
    //test for slide change every 1 second
    setInterval(testSlideChange,1000);
});

function testSlideChange()
{
    //make post ajax request
    $.post('http://my.web.site.com/this_page.php', {'testSlideChange' : 1} , function(data) {
       //if result slide hasn't got class "visible", lets take it from the visible one, and give to a new one.
       if (!$('#slide-' + data).hasClass('visible')
       {
       $('.slide.visible').removeClass('visible');
       $('#slide-' + data).addClass('visible');
       }
    }
}

サーバー側でスライドを変更するには、ファイル /tmp/slidenumber.txt に別の番号を書き込むだけです。単純なサーバー php スクリプトまたは手動で行うことができます。


それがどのように機能するかの例を作成しました。作業例!

ユーザーページ: http://kovka54.ru/test/index.php (ユーザーはここでスライドを見ることができます)
管理者ページ: http://kovka54.ru/test/admin.php (管理者はここでアクティブなスライドを設定できます)
このページを開く別のウィンドウ (たとえば、2 つのブラウザー) で、管理者側でスライドを変更すると、ユーザーのスライドがどのように変更されるかを確認します。
この例は 3 つのファイルで構成されています: index.php 、admin.php および slidenumber.txt (単一の数字のみを含み、最初は "1" (引用符なし) です)。index.php の内容: http://pastebin.com /zge3MbAQ、admin.php の場合のコンテンツ: http://pastebin.com/J5eDEbSe

于 2013-08-26T19:22:48.397 に答える