LoginSignup
0
0

More than 5 years have passed since last update.

PHP備忘録ファイル操作について

Posted at
<?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→実行

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0