当变量发生变化时,如何使用会话获得警报?

时间:2013-07-04 22:45:15

标签: php session

我试图使用“file_get_contents”函数构建一个获取内容的单个页面,我已经管理了这个部分。内容最终出现在名为$ content的变量中。我们的想法是在内容发生变化时获得警报(通过声音)。

我所涉及的是我将$ content的旧值与新内容进行比较的部分。不知何故,我必须保留旧值并将其与新值进行比较,并在重新加载页面时 如果内容已更改,我希望获得警告。我以为我应该使用会话进行比较。 这就是我得到的:

<?php
session_start(); 

$_SESSION['red'] = $red;
if($red != $content) {echo "ALERT" . $content = $_SESSION['red'];}
if($red == $content) {echo "Same";}

它不起作用,可能看起来像垃圾,因为我不知道我在做什么:)

以下是设置$ content变量的代码:

$page = file_get_contents('data.htm');
if ( preg_match ( '/<a tabindex="50" class="item_link".*?a>/s', $page, $matches ) )
{
    foreach ( $matches as $key => $content )
    {
        echo $key . ' => ' .  $content  . '<br /><br />';
    }
}
else
{
    echo 'No match';
}
?>

对于警报声,我找到了一个脚本;

<script>
  var audio = document.createElement('audio');
 document.body.appendChild(audio);
  audio.src = 'http://rpg.hamsterrepublic.com/wiki-images/2/21/Collision8-Bit.ogg';
  setInterval(function(){audio.play();}, 5000);
 </script>

如果$ content已更改,需要帮助激活此脚本,也只需播放一次。

2 个答案:

答案 0 :(得分:0)

首先,您必须考虑重新运行PHP代码,您的页面需要刷新。 要实现这一点,您可以使用经典的html refresh through meta tag(我想您只需完成任务,否则您需要一些教程来更好地了解您正在做的事情。)

其次,你可以将data.htm的内容存储在服务器上的一个文件中(data.htm应该改变的方式并不聪明,我想通过FTP或类似的东西,如果它应该通过浏览器改变,请注意,这是一个完全不同的故事,你必须遵循一些教程。)

完成此操作后,您只需将file_get_contents结果与存储的文件进行比较,然后检查它们是否相同。如果不是,请打印出您的javascript代码,让您的页面响起,并用新获取的内容替换文件内容(否则将继续响铃)。

没有这种方式的会议。

答案 1 :(得分:0)

我赞扬你的自我表达态度。:)

我认为,问题在于你编写if语句的方式:

if($ red!= $ content){echo“ALERT”。 $ content = $ _SESSION ['red'];} if($ red == $ content){echo“Same”;}

首先,'。'回声“ALERT”之后,我认为是';'。 其次,使用else而不是2 if语句。为什么要写出比你需要的更多的代码和(更重要的是)你的第一个如果你的第二个如果是真的!!

另外,我认为你想在开始时制作$ red = $ _SESSION ['red'],然后制作$ _SESSION ['red'] = $ content。

最后,使用strcmp()而不是==或!=(strcmp()对于比较字符串更可靠 - 记住它在字符串匹配时返回false。)

所以,你最终得到:

<?php
session_start(); 
$red=(array_key_exists('red',$_SESSION)?$_SESSION['red']:'');

... set up $content

if(strcmp("$red","$content") )
{ // what you've previously read doesn't match the new content
  echo "ALERT";
  // escape back to the html to do the sound stuff
?>
<script>
  var audio = document.createElement('audio');
 document.body.appendChild(audio);
  audio.src = 'http://rpg.hamsterrepublic.com/wiki-images/2/21/Collision8-Bit.ogg';
  setInterval(function(){audio.play();}, 5000);
 </script>
<?php
  $_SESSION['red'] = $content; 
  // so now they both match the new content 
  // - so will give "same" next time round
} else {
  echo "Same";
}
...

试试这个。