fwrite перед файлом для моего чата с php и ajax

Вопрос:

У меня есть простой чат, который я построил. Я действительно хочу, чтобы он прокручивался вверх, а не вниз, то есть новые сообщения добавляются в верхнюю часть чата. Это означает, что я должен перейти к началу файла. Я проделал много проб и ошибок, а также поиграл в Google и переполнил их, но не добился успеха. Кроме того, я понимаю, что мне нужно использовать r+, а не a, но я хотел бы дать текущий функциональный код, а не код подстройки.

Две пропущенные строки – это две идеи, которые я пробовал. r+ непрерывно заменяет первую строку и оставляет текст. Если я набрал 1 символ, он оставил> r >>, если я набрал 2 символа, он оставил> r>, если я набрал 3 символа, он оставил r>, если я набрал 4, он остался>, а если я набрал 5 или больше, он ничего не оставил.

Я не могу найти для этого много важной информации. Возможно, я использую неправильные ключевые слова. Пожалуйста, помогите мне понять.

if(isset($_SESSION['name'])){
$text = $_POST['text'];

$fp = fopen("log.html", 'a');
//$fp = fopen("log.html", 'r+');
//fseek("log.html", 0)
fwrite($fp, "<center><div class='msgln'><b>".$_SESSION['name'].":</b>      ".stripslashes(htmlspecialchars($text))."<br></div><br></center>");
fclose($fp);
}

Ответ №1

A – Использовать базу данных. Это плохая реализация.

B – Если вы настаиваете на использовании этой реализации, запись начала файла сбрасывает указатель и перезаписывает файл. Вместо этого возьмите данные из текущего файла, добавьте его в новые данные и перепишите файл.

C – Будут проблемы с столкновением. На самом деле не делайте этого. Но это сработает.

Пытаться:

if(isset($_SESSION['name'], $_POST['text'])){
$text = $_POST['text'];
$current_content = file_get_contents("log.html");
$new_content = "<center><div class='msgln'><b>".$_SESSION['name'].":</b>      ".stripslashes(htmlspecialchars($text))."<br></div><br></center>".$current_content;
file_put_contents("log.html", $new_content);
}

Оцените статью
TechArks.Ru
Добавить комментарий