Kezdőoldal » Számítástechnika » Programozás » PHP, javascript, HTML hogyan...

PHP, javascript, HTML hogyan lehet egy egyszerű chat féleséget csinálni egy sima text fájllal?

Figyelt kérdés
Egy nagyon egyszerű valamire gondoltam, ami egy fájlba dolgozik. Ha valaki ír a chatre, azt beleírja a fájlba, és másik gépen meg újratöltődjön a tartalma, hogy látszódjon az új üzenet. Hogyan lehet ilyet?

2017. jún. 24. 12:02
 1/6 anonim ***** válasza:
53%

Pont, hogy text fájlba nem csinálnék ilyet. Természetesen nem lehetetlen, de... ha belegondolsz

1) idővel ez a chat beszélgetés igen nagyra nyúlna, ami miatt a programod egyre lassabb lenne

2) mi van akkor, ha pontosan ugyanabban az időpontban küldenek el egy üzenetet?

3) nehezen kezelhető


A PHP programodnak két dolgot kell tudnia:

1) Meg kell tudnia mondani, hogy egy adott időpont óta jött-e újabb üzenet.

2) Le kell tudni kérdezni az üzeneteket egy adott időponttól kezdve.


Ehhez tárolnod kell PHP oldalon:

- Az üzenet feladójának nevét

- Az üzenet elküldésének időpontját

- Az üzenet szövegét


Továbbá szükséged lesz egy kliensoldali JavaScript programra, ami:

- Tudja, hogy mikor volt az utolsó frissítés

- Mondjuk 5 másodpercenként megkérdezi a PHP programtól, hogy van-e új üzenet az utolsó frissítés időpontja óta

- Ha van, letölti az új üzeneteket és megjeleníti azokat.

2017. jún. 24. 12:14
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:
50%

" mi van akkor, ha pontosan ugyanabban az időpontban küldenek el egy üzenetet?"


Mi lenne? A win szerverek alapból lockolják a file-t, a linux/unix alatt meg ott a flock.


És a szövegfile igenis megfelelő ilyesmihez.


Te sem igen írtál még e-mailen kívül semmit, banyek...

2017. jún. 24. 13:37
Hasznos számodra ez a válasz?
 3/6 anonim ***** válasza:
22%
Mi értelme ilyen gányolást csinálni?
2017. jún. 24. 13:52
Hasznos számodra ez a válasz?
 4/6 anonim ***** válasza:
0%

"A win szerverek alapból lockolják a file-t"

Szóval akkor a két üzenet közül az egyiket elveszíted.


Igazad van, én vagyok a kontár. Majd ha arrafelé jársz, dobd már ki a PTI diplomámat, légy szíves.

2017. jún. 24. 14:32
Hasznos számodra ez a válasz?
 5/6 anonim ***** válasza:

Ha valami egyszerű kell akkor lehet olyat, hogy pl. van egy szövegdoboz a chat üzeneteknek, és amikor a felhasználó rányom hogy küldés, javascript-ben AJAX-al (XMLHttpRequest) elküldöd a PHP-nak az üzenetet. (persze sima formmal is meg lehet oldani, Javascript és AJAX nélkül). A PHP megkapja az üzenetet ($_POST), és file_put_contents-el FILE_APPEND-el a szövegfájl végére fűzi ( [link] , 2. példa), szükség szerint a küldés idejével és névvel együtt.

A szövegdoboz felett van egy div, amibe a Javascript valahány másodpercenként lekéri a txt fájlt (XMLHttpRequest, setInterval). Ez is megoldható akár JS nélkül is, iframe és meta refresh használatával. Lehet long pollinggal optimizálni a dolgot, tehát a szerver addig vár a válasz visszaküldésével amíg nem történik változás. Az oda-vissza WebSocket meg még jobb lenne, de mivel egyszerű PHP/JS/HTML-ről van szó, az kiesik.

Persze ez nem egy optimális megoldás, mert pl. jobb lenne, ha csak az új üzeneteket töltenénk le, tehát ilyet biztos nem használnék nyilvános oldalon, de gyakorlásnak jó lehet. Egy adatbázisban eltárolva már megoldható, hogy csak az új üzeneteket kelljen letölteni, meg hogy ha senkit sem érdekelnek az egy éves üzenetek, akkor azok csak akkor töltődjenek le, ha valaki felgörget oda.

Arra figyelni kell, már csak XSS megakadályozása miatt is, hogy a felhasználótól kapott bemenetet mindenképp szűrjük (lásd htmlspecialchars függvény, XSS)

2017. jún. 25. 01:01
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:

Chat "féleséget" manapság websocket-el írjuk.

Vannak komplex példák is.

2017. jún. 27. 09:48
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!