Oldal újratöltése, amikor egy fájlba kerül egy új sor?
2017-05-03T06:51:48+02:00
2017-05-03T09:34:40+02:00
2022-08-10T15:35:32+02:00
Tóth Ambrus
Egy egyszerű webes chat programot írok és a szerveren egy fájlban tárolom az üzeneteket (minden sorban egyet). A program kiíratja az előző üzeneteket, majd egy szövegmezőt, ahova a felhasználó írhatja az üzenetet.
Amikor elküldi, újratöltődik a lap, de egyébként nem látja azokat az üzeneteket, amiket az oldal frissítése óta írtak. Lehetséges az, hogy ha a sizeof(file('messages.txt')) (php) nagyobb, mint az oldal betöltésénél kapott érték (ezt egy változóban tárolom) akkor töltődjön újra az oldal?
Tudom, hogy szebb lenne adatbázissal, de egyszerűbbnek bizonyult fájlba íratni.


index.php:

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Online chat program</title> </head> <body> <style type="text/css"> table, tr, td{ border-style: inset; } </style> <? $username=array("user1","user2","user3"); $password=array("pass1", "bc9102efg", "h9526t52z"); if(($username[0]==$_POST["begepelt_username"] && $password[0]==$_POST["begepelt_password"]) || ($username[1]==$_POST["begepelt_username"] && $password[1]==$_POST["begepelt_password"]) || $username[2]==$_POST["begepelt_username"] && $password[2]==$_POST["begepelt_password"]){ $message=file("messages.txt"); $sender_name=file("names.txt"); $length=sizeof($message); $myname=$_POST["begepelt_username"]; echo "<table style='width: 100%'>"; for($i=0; $i<$length; $i++) { echo "<tr><td width='10%'>".$sender_name[$i].":<br><img src='".$sender_name[$i].".jpg' width=50px height=auto>"."</td><td width='90%'>".$message[$i]."</td></tr>"; } echo "<tr><td>".$myname.":</td><td> <form action='sender.php' method=POST> <input type='text' name='message' placeholder='Type a message...'> <input type='submit' value='Küldés'> <input type=hidden name='sender_name' value=".$myname."> <input type='hidden' name='begepelt_password' value=".$_POST['begepelt_password']."> </form> <form action='index.php#legalja' method=POST> <input type=hidden name='begepelt_username' value=".$myname."> <input type='hidden' name='begepelt_password' value=".$_POST['begepelt_password']."> <input type='submit' value='Frissítés'> </form> </td></tr> </table> "; }else{ echo "<meta http-equiv='refresh' content='0;bejelentkezes.php' />"; } ?> <a name="legalja"></a> <p>Készítette: Tóth Ambrus 2017 Május 2.</p> </body> </html> bejelentkezes.php: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Bejelentkezés a chat programba</title> </head> <body> <h2>Kérem jelenkezz be!</h2> <form method="POST" action="index.php#legalja"> <input type="text" name="begepelt_username" placeholder="felhasználónév"><br> <input type="password" name="begepelt_password" placeholder="jelszó"><br> <input type="submit" value="Bejelentkezés"> </form> </body> </html>
sender.php:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Küldés...</title>
</head>
<body>
Küldés folyamatban...
<?php
file_put_contents("messages.txt", file_get_contents("messages.txt")."\n".$_POST["message"]);
file_put_contents("names.txt", file_get_contents("names.txt")."\n".$_POST["sender_name"]);
?>
<form action="index.php#legalja" method="post" id="myForm">
<input type="hidden" name="begepelt_username" value=<?=$_POST["sender_name"]?> >
<input type="hidden" name="begepelt_password" value=<?=$_POST["begepelt_password"]?> >
</form>
<script type="text/javascript">
document.getElementById('myForm').submit();
</script>

</body>
</html>
Mutasd a teljes hozzászólást!

  • Ne töltsd újra, inkább csak az üzenetek blokkot frissítsd ajax segítségével...
    Nem kell változóban tárolni (lehet egy akármilyen fájlba ha nem tetszik az adatbázis), csak legyen függőlegesen gördíthető és az alaphelyzete TOP...
    Lehet időzített frissítés meghívás (üzenetek blokk frissítésére) és ez megoldja, ha a user passzív, de a társa nem...
    Mutasd a teljes hozzászólást!
abcd