2015-01-11 3 views
1

Я пытаюсь, чтобы пользователь написал что-то в текстовом поле. Затем текст записывается в ON NEW LINE в файле под названием «list.txt». Затем я хочу, чтобы весь файл был прочитан на веб-сайте. Таким образом, это будет как чат или что-то еще. Проблема в том, что прямо сейчас она говорит мне «Невозможно открыть файл». Я проверил и права доступа к файлу, и каждый пользователь имеет полный доступ. List.txt также находится в том же каталоге, что и файл php. Кроме того, когда он смог открыть файл, он не записывал бы его в новую строку. Я знаю, что это можно сделать с помощью «\ n» или PHP.EOL, но ни один из них, похоже, не работал, и иногда они останавливали работу сайта самостоятельно. Пожалуйста, помогите мне разобраться, что происходит, спасибо.fopen fread and fwrite trouble

<html> 

<p> 
<form name="form1" method="post" action="test.php"> 
<input name="text" type="text"> 
<input type="submit" value="send" method="post"> 
</p> 

<p> 
<?php 


$file = fopen("list.txt") or die ("Unable to open file!"); 
$text = $_POST['text'];//where the hell do you put the new line indicator: "\n"// 

fwrite($file, $text) or die ("Cannot write!"); 


$print = fread($file,filesize("list.txt", "a+")); 
fclose($file); 
echo $print; 


?> 


</p> 


<?php //figure out how to make this a button that clears the file 
/* 
$fp = fopen("list.txt", "r+"); 
// clear content to 0 bits 
ftruncate($fp, 0); 
//close file 
fclose($fp);*/ 
?> 


</html> 
+0

Почему вы не используете file_put_contents –

+0

Похоже, вы используете модификатор доступа в функции 'filesize()'. Вам нужен только один аргумент, имя файла. – Crackertastic

ответ

1

Использование file_put_contents ...

$file = 'list.txt'; 
    $content = $_POST['text']."\n"; 
    // Write the contents to the file, 
    // using the FILE_APPEND flag to append the content to the end of the file 
    file_put_contents($file, $content, FILE_APPEND); 

Согласно документации

Эта функция идентична вызову FOPEN(), FWRITE() и fclose() последовательно записать данные в файл.

Если имя файла не существует, файл создается. В противном случае существующий файл перезаписывается, если не установлен флаг FILE_APPEND.

+0

Это было очень полезно. Благодарю. У меня все еще есть проблема, так как я использую $ _POST в качестве содержимого, как я могу убедиться, что он пишет новую строку? – user2985562

+0

Попробуйте мой обновленный ответ –

+0

Вот что я пытался. Кажется, что он все еще записывает его в одну строку. как в файле, так и на сайте, когда он читается – user2985562

0

У вас возникла проблема в том, что ваш файл будет заблокирован на время, когда php напишет содержимое.

Если вы хотите писать одновременно, у вас есть короткий доступ к вашему файлу. Это большая проблема файловых решений. Для этого созданы движки базы данных.

Смежные вопросы