Я сделал код в PHP, где вход сохраняется в файл «новости». Теперь я хотел бы изменить его так, чтобы каждый вход сохранялся в отдельный файл в специальной папке (новости), имя которой начинается с даты.
Я написал что-то вроде этого, но это не работает (файл не создается)
<?php
include "0begin.php";
$title=$_POST["title"];
isset($title) or $title=$_GET["title"];
$msg=$_POST["msg"];
?>
<h1>News</h1>
<form method=post>
Title<br><input type=text input name="title" value=<?=$title?> ><br>
Message<br>
<textarea input name="msg" cols=40 rows=5> </textarea><br>
<input type="submit">
<br><br>
</form>
<?php
$msg = $_POST['msg'];
$dateposted = date("YmdHis");
$fp = fopen("$dateposted.txt", "w");
fwrite($fp,$title, $msg).' ';
fclose($fp);
?>
<?php
include "0end.php";
Я думаю, что ваша проблема заключается в fopen и fwrite, которые вы используете.
fopen ("$dateposted.txt","w")
создаст вам файл с именем $ dateposted.txt. Я думаю, что вы скорее хотите fopen($dateposted."txt","w")
,
Поскольку файл не создан, я бы проверил права доступа к папке назначения и изменил бы их, если пользователю, который запускает скрипт, например, apache в linux, не разрешено писать туда. Или задайте полный путь назначения, чтобы убедиться, что файл сохранен в правильном назначении.
Еще одна вещь, касающаяся fwrite. Из того, что я знаю, fwrite принимает 2 параметра. Файл и строка. Третий возможный параметр — максимальная длина добавляемых байтов. В вашем случае я бы назвал fwrite один раз для заголовка и один раз для сообщения. Кроме того, конкатенация строк в fwrite мне кажется неправильной, так как я предполагаю, что объединенная строка должна быть в файле, который вам нужно написать, например, fwrite($fp, $title.' ');
Других решений пока нет …