Autor Zpráva
Neas
Profil
Ahoj.
Chtěl bych se zeptat, jak by se prosím vás dalo nascriptovat, že pokud se kód stránky změní, automaticky se aktualizuje?
Asi je to dost nekonkrétní, tak posílám celý zdrojový kód stránky. Předem jen říkám, že vím, že je to zranitelné, ale neptám se teď na bezpečnost, to ještě dodělám :-)
<html>
    <head>
<style>
.cas{
  color:red;
  }
.prispivatel{
  color:DeepSkyBlue;
  }
.prispevek{
  color:white;
  margin-left:25px;
  }
#chatarea{
  background-color:#4B4032;
  border-left:1px solid black;
  border-top:1px solid black;
  border-bottom:1px solid silver;
  border-right:1px solid silver;
  overflow:scroll;
  width:794px;
  height:500px;
  padding-left:4px;
  }
</style>
    </head>
    <body onload="document.sendmessager.prispevek.focus();">
<?php
if($_COOKIE['vstup']){  
  include("konfigurace.php");
  $den = date('d.m');
  $prispivatel = $_COOKIE['user_name'];
  $prispevek = $_POST['prispevek'];
  mysql_query("DELETE FROM private_chat WHERE den != $den");
  if($prispevek != ""){
    mysql_query("INSERT INTO private_chat (prispivatel,cas,text,den) VALUES ('$prispivatel',now(),'$prispevek','$den')");
    }
  $sql_chat = mysql_query("SELECT prispivatel,cas,text FROM private_chat ORDER BY cas ASC");
    echo "<div id='chatarea'>";
      while($vypis = mysql_fetch_array($sql_chat)){
        echo "<span class='cas'>[ ".$vypis[1]." ]</span>"." <span class='prispivatel'>".$vypis[0].":</span>"."<div class='prispevek'>".$vypis[2]."</div>";
      } 
    echo "</div>"; 
?>
<form name="sendmessager" method="post">
<textarea style="width:800px;height:50px;" name="prispevek"></textarea><br />
<input type="submit" value="Odeslat" />
</form>
<?php }else{
  echo "Přístup zamítnut!";
}?>
    </body>
</html>

Mám udělaný tenhle chat a potřeboval bych, aby se stránka aktualizovala, když někdo pošle nový příspěvek (tj, je-li kód stránky změněn).
Zároveň bych měl ještě jeden dotaz, v kódu jsem zvýraznil JS, který udělá textarea po aktualizaci stránky hned aktivní, avšak ve všech prohlížečích, kromě mozzily, se celý text po aktualizaci vymaže. Jak by se tomu prosím dalo zabránit?
Předem moc děkuju :-)
sysel
Profil
Obávám se, že tento požadavek jde mimo protokol "http". Zde je klient ten, kdo vyvolává nějakou akci. Pouze požaduje-li data, tak mu je server pošle. Jestliže se stránka změní po té, co jí server odeslal, musí si klient sám vzpomenout, že chce získat její novější podobu. Server http sám od sebe nikomu nic nepošle.

Je možné do stránky přidat informaci, aby se po uplynutí nějaké doby načetla znovu
(více zde),
některé browsery nabízejí možnost nastavit si u konkrétní stránky její automatickou aktualisaci. Ale tato aktualisace nemůže souviset se změnami, které se odehrají se samotnou sránkou.
Ratisko
Profil
no, jediné co mě napadá je příklad xChatu, který se obnovuje každých 5sec, nebo jak si uživatel nastaví.. ale radši bych to udělal alespon přes AJAX, ať nebliká celá stránka.. kdybys chtěl aby se ti tam zobrazovali nove prispevky po tom co je vloží někdo jiný tak by to asi podlě mě muselo být asi např. přes ASP.NET
Ugo
Profil *
no mozna by to slo vyresit jeste krkolome hodne malym timerem na pozadi ( setInterval() ), kterej by obnovoval skrytej iframe s hlidacim php skriptem, kterej by naopak pri zmene ( pocet radku v cookie ) dal prikaz na obnoveni jenom v pripade zmeny :D , ale zlatejch 5 vterin, ostatne moje reseni vychazejicich z 1 fce JS a 3 fc PHP ... ;)
Neas
Profil
jak to tak vypadá, nezbývá mi, než se začít učit AJAX :) stejně bych se to musel někdy naučít, tak díky, vrátím se k chatům až se trochu přiučím.
Ratisko
Profil
tak AJAX jak ho znám já je úplně easy, v podstatě nakopíruješ 3 soubory na server, přidáš odkaz do hlavičky a pak už jen voláš fci s 2 parametrama, jméno divu a jméno scriptu kretý se odesílá jakoby "na pozadí", kdybys je chtěl poslat k napiš třeba na icq 199 275 398 :)) ale já to taky našel normálně googlem
Neas
Profil
Zatim jsi první, co mi říká, že to je easy :)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0