<?php
$filename = './file_write.txt';
$comment = '';
print $_SERVER['REQUEST_METHOD'];
if ($_SERVER['REQUEST_METHOD'] === 'POST'){
if (isset($_POST['comment']) === TRUE) {
$comment = $_POST['comment'];
}
if (($fp = fopen($filename, 'r')) !== FALSE) {
if (fwrite($fp, $comment) === FALSE) {
print 'ファイル書き込み失敗: ' . $filename;
}
fclose($fp);
}
}
$data = array();
if (is_readable($filename) === TRUE) {
if (($fp = fopen($filename, 'r')) !== FALSE) {
while (($tmp = fgets($fp)) !== FALSE) {
$data[] = htmlspecialchars($tmp, ENT_QUOTES, 'UTF-8');
}
fclose($fp);
}
} else {
$data[] = 'ファイルがありません';
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ファイル操作</title>
</head>
<body>
<h1>ファイル操作</h1>
<form method="post">
<input type="text" name="comment">
<input type="submit" name="submit" value="送信">
</form>
<p>以下に<?php print $filename; ?>の中身を表示</p>
<?php foreach ($data as $read) { ?>
<p><?php print $read; ?></p>
<?php } ?>
</body>
</html>
fopenのモード3種類
fopenとはこれからどういう処理をするのかという指示
・aモードappendの略ファイルポインタはつねにファイルの後ろから。
・wモードwriteの略ファイルポインタは常にファイルの先頭から。ファイル内容を削除してから書き込みます。ファイルが存在しない場合は作成します。
・rモードreadの略ファイルポインタは常にファイルの先頭から。ファイルが存在しない場合は作成します。
・$fpがファイルハンドル(id)の部分になる
if (($fp = fopen($filename, 'r')) !== FALSE) {
if (fwrite($fp, $comment) === FALSE) {
print 'ファイル書き込み失敗: ' . $filename;
}
fwriteで$fpに書き込んだものをさらに書き込む
fwriteで書き込みするときはaもしくはwの書き込みをしないとダメ
パーミッションはftpで使われてるもの
r→read
w→書き込み
x→実行