Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][js]Chat na plikach
Glarden
post
Post #1





Grupa: Zarejestrowani
Postów: 153
Pomógł: 2
Dołączył: 28.05.2007
Skąd: Stamtąd

Ostrzeżenie: (0%)
-----


Napisałem sobie chat działający na plikach - i na moim kompie wszystko działa jak należy. Teraz tylko mam taki problem: chcę zrobić, żeby odświeżało co jakiś czas (powiedzmy, 10 sekund), żeby inni użytkownicy też mogli zobaczyć wiadomość. Skrypt wygląda tak:
  1. <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"/>
  2. <form action='chat.php' method='post'>
  3. Autor: <input type='text' name='autor' /><br>
  4. Treść: <input type='text' name='tresc' style='width: 500px;' /><br>
  5. <input type='submit' value='OK'/>
  6. </form>
  7. <hr>
  8. <iframe frameborder='0' width='700px' src='chat2.php'>
  9. <script language="JavaScript" src="refresh.js"></script>
  10. <?php
  11. if (isset ($_POST['autor']) && ($_POST['tresc'])) {
  12. $autor = $_POST['autor'];
  13. $tresc = $_POST['tresc'];
  14. $wynik = "<b>".$autor."</b>: ".$tresc."rn";
  15.  
  16. $plik1 = file('chat');
  17. $plik = fopen('chat', 'w');
  18. $zapis = fputs($plik, $wynik);
  19. for ($i = 0; $i<count($plik1); $i++) {
  20. fputs($plik, $plik1[$i]);
  21. }
  22. fclose ($plik);
  23. $tab = file('chat');
  24. for ($i=0; $i<5; $i++) {
  25. $tab[$i] = str_replace ("rn", "<br>", $tab[$i]);
  26. echo ($tab[$i]);
  27. }
  28. }
  29. else {
  30. $tab = file('chat');
  31. for ($i=0; $i<5; $i++) {
  32. $tab[$i] = str_replace ("rn", "<br>", $tab[$i]);
  33. echo ($tab[$i]);
  34. }
  35. }
  36. ?>
  37. </iframe>

A to odświeżanie:
  1. ID=window.setTimeout("refresh();",10000);
  2. function refresh() {
  3. location.reload();
  4. ID=window.setTimeout("refresh();",10000);
  5. }


Nie jestem pewien, czy działa to odświeżanie, ale wydaje mi się, że nie, bo 10 sekund po załadowaniu strony ta "ani drgnie", żadnego "błysku" odświeżania. Widzicie jakieś błędy? Zaznaczam, że sam czat działa jak należy.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
jarekh
post
Post #2





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 4.06.2007

Ostrzeżenie: (0%)
-----


Odswiezanie jest ok. To pewnie sprawa iframe.
Daj ten script do chat2.php, albo powyzej iframe.
Go to the top of the page
+Quote Post
skowron-line
post
Post #3





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Kod
ID=window.setTimeout("refresh();",10000);
function refresh() {
location.reload();
ID=window.setTimeout("refresh();",10000);
}


to sie wykona tylko raz powinno byc Interval ktory bedzie sie wykonywal w nieskonczonosc bo jak raz odswierzysz strone to fajnie a co potem??
Go to the top of the page
+Quote Post
Glarden
post
Post #4





Grupa: Zarejestrowani
Postów: 153
Pomógł: 2
Dołączył: 28.05.2007
Skąd: Stamtąd

Ostrzeżenie: (0%)
-----


No właśnie z irame miałem głupi problem. Powinno być tak, że wpisuję po prostu: "<iframe frameborder='0' width='700px' src='chat2.php'></iframe>" i to z tego pliku powinno być na stronie. Zrobiłem tak i nie działało. Więc skrypt z iframe masz między tymi znacznikami.
Go to the top of the page
+Quote Post
skowron-line
post
Post #5





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


moze zamiast bawic sie w iframe pomysl nad AJAX-em
Go to the top of the page
+Quote Post
Glarden
post
Post #6





Grupa: Zarejestrowani
Postów: 153
Pomógł: 2
Dołączył: 28.05.2007
Skąd: Stamtąd

Ostrzeżenie: (0%)
-----


AJAX byłby dobry, gdybym go umiał. A nie umiem, mam tylko mgliste pojęcie, jak to działa, więc raczej nie opłaca mi się uczyć dla jednego skryptu, który mogę zrobić łatwiej.
Go to the top of the page
+Quote Post
skowron-line
post
Post #7





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


mozesz uzyc jakiejs gotowej biblioteki np advAJAX lub mintAJAX lub innych, biblioteki sa opracowane tak ze wystarczy znac odrobine JS
Go to the top of the page
+Quote Post
Glarden
post
Post #8





Grupa: Zarejestrowani
Postów: 153
Pomógł: 2
Dołączył: 28.05.2007
Skąd: Stamtąd

Ostrzeżenie: (0%)
-----


A właśnie z JS też u mnie dość kiepsko... Chociaż z jakąś książką mógłbym obsłużyć AJAXA. Ale wydaje mi się, że dla tego jednego skryptu nie opłaca się tego robić. Chodzi mi po prostu o to, żeby odświeżał ramkę co 10 sekund.
Go to the top of the page
+Quote Post
jarekh
post
Post #9





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 4.06.2007

Ostrzeżenie: (0%)
-----


  1. ID=window.setTimeout("refresh();",10000);
  2. function refresh() {
  3. document.getElementById('chat').src='';
  4. document.getElementById('chat').src='chat.php';
  5. ID=window.setTimeout("refresh();",10000);
  6. }
  7. <iframe id='chat' src="chat.php">
  8. </body>


moze tak?
Go to the top of the page
+Quote Post
Glarden
post
Post #10





Grupa: Zarejestrowani
Postów: 153
Pomógł: 2
Dołączył: 28.05.2007
Skąd: Stamtąd

Ostrzeżenie: (0%)
-----


Hehe, jest to krok do przodu, ale nie to o co chodziło. Ramka odświeża się po 10 sekundach, ale cała jej zawartość znika. Zaraz pokombinuję, dzięki za pomoc.

EDIT: Już działa, dostawiłem jedną cyferkę i jest! Wielkie dzięki!

Ten post edytował Glarden 17.06.2007, 19:50:44
Go to the top of the page
+Quote Post
abc667
post
Post #11





Grupa: Zarejestrowani
Postów: 229
Pomógł: 0
Dołączył: 29.05.2007

Ostrzeżenie: (0%)
-----


Cytat(skowron-line @ 17.06.2007, 20:07:14 ) *
Kod
ID=window.setTimeout("refresh();",10000);
function refresh() {
location.reload();
ID=window.setTimeout("refresh();",10000);
}


to sie wykona tylko raz powinno byc Interval ktory bedzie sie wykonywal w nieskonczonosc bo jak raz odswierzysz strone to fajnie a co potem??


dlaczego to miałoby się wykonać tylko raz?
Go to the top of the page
+Quote Post
Sylwin
post
Post #12





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 29.10.2006

Ostrzeżenie: (0%)
-----


Wstaw to na samą górę pliku jeszcze przed <? i będzie sie odświeżało co jakiś czas który możesz sobie wpisać (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

<meta http-equiv='refresh' content='czas w sekundach;url=chat.php'>

Albo to w dowolnym momencie w skrypcie np jak user doda wpis:

  1. <?php
  2. echo"<meta http-equiv='refresh' content='czas w sekundach;url=chat.php'>";
  3. ?>


A tu masz kompletny skrypcik z odświeżaniem nazwij go chat.php:
Kod
<meta http-equiv='refresh' content='10;url=chat.php'>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250"/>
<form action='chat.php' method='post'>
Autor: <input type='text' value='<? echo$autor; ?>' name='autor' /><br>
Treść: <input type='text' value='<? echo$autor; ?>' name='tresc' style='width: 500px;' /><br>
<input type='submit' value='OK'/>
</form>
<hr>
<iframe frameborder='0' width='700px' src='chat2.php'>
<?php
if (isset ($_POST['autor']) && ($_POST['tresc'])) {
    $autor = $_POST['autor'];
    $tresc = $_POST['tresc'];
    $wynik = "<b>".$autor."</b>: ".$tresc."\r\n";
    
    $plik1 = file('chat');
    $plik = fopen('chat', 'w');
    $zapis = fputs($plik, $wynik);
    for ($i = 0; $i<count($plik1); $i++) {
        fputs($plik, $plik1[$i]);
    }
    fclose ($plik);
    $tab = file('chat');
    for ($i=0; $i<5; $i++) {
        $tab[$i] = str_replace ("\r\n", "<br>", $tab[$i]);
        echo ($tab[$i]);
    }
}
else {
    $tab = file('chat');
    for ($i=0; $i<5; $i++) {
        $tab[$i] = str_replace ("\r\n", "<br>", $tab[$i]);
        echo ($tab[$i]);
    }
}
?>
</iframe>


Ten post edytował Sylwin 17.06.2007, 22:27:40
Go to the top of the page
+Quote Post
Glarden
post
Post #13





Grupa: Zarejestrowani
Postów: 153
Pomógł: 2
Dołączył: 28.05.2007
Skąd: Stamtąd

Ostrzeżenie: (0%)
-----


Dzięki, odświeżanie już działa. Mam kolejne pytanie.
Zrobiłem tak, żeby pisać mogli tylko zalogowani. Potem na samym czacie - licznik typów on-line. Teraz potrzebuję zrobić coś takiego, żeby wyświetlał loginy zalogowanych użytkowników, ale ani rusz, nie mogę tego zrobić. Macie jakieś pomysły?
Go to the top of the page
+Quote Post
Sylwin
post
Post #14





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 29.10.2006

Ostrzeżenie: (0%)
-----


Musisz zapisywać zalogowanych w pliku. Tylko problem jest taki że jak ktoś zamknie przeglądarke a nie użyje opcji wyloguj nie będziemy mogli usunąć loginu z pliku...

Ten post edytował Sylwin 18.06.2007, 21:24:14
Go to the top of the page
+Quote Post
Glarden
post
Post #15





Grupa: Zarejestrowani
Postów: 153
Pomógł: 2
Dołączył: 28.05.2007
Skąd: Stamtąd

Ostrzeżenie: (0%)
-----


Dokładnie, to samo pomyślałem. Więc mógłbym zapisywać w bazie danych imię i datę zalogowania. Jeśli się wyloguje, to usuwa, jeśli przez więcej niż np. 5 min użytkownik nic nie robi, też usuwa. Ale mi się nie chce korzystać z bazy...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 23:34