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(管理员可以在此处设置活动幻灯片)
打开此页面在单独的窗口上(例如,在两个浏览器中)并观看,当您在管理端更改幻灯片时,用户的幻灯片如何更改。
该示例由 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 回答