session_id固定ネタを見て感動したので。
memo.php
<?php
session_id("memo-".md5($_SERVER["QUERY_STRING"]));
session_start();
if (!empty($_POST["memo"])) {
$_SESSION["memo"] = $_POST["memo"];
}
?><meta charset="utf-8">
<form method="post">
<textarea name="memo" style="height:80%; width:90%;"><?php echo $_SESSION["memo"]; ?></textarea>
<input type="submit" value="save" style="width:80%; margin: 1em;" />
</form>
データは以下に保存
- /var/lib/php/session/ (
php -i | grep session
)- sess_memo-
- sess_memo-0c09c125348bcbb25da8438711c68234
- OS再起動しても残る。
メモを増やしたい場合
QUERY_STRINGを変更すれば良い。
- memo.php
- memo.php?page=1
- memo.php?page=2
- memo.php?page=3
- memo.php?page=4
- memo.php?page=5
セッションについてもっと詳しくなるには
gz圧縮保存
- セッションのサイズは数KBしかないので圧縮するとよいかな。
memo.php
<?php
session_id("memo-".md5($_SERVER["QUERY_STRING"]));
session_start();
$memo = null;
if (!empty($_POST["memo"])) {
$_SESSION["memo"] = gzcompress($_POST["memo"]);
}
if (!empty($_SESSION["memo"])) {
$memo = gzuncompress($_SESSION["memo"]);
}
?><meta charset="utf-8">
<form method="post">
<textarea name="memo" style="height:80%; width:90%;"><?php echo $memo; ?></textarea>
<input type="submit" value="save" style="width:80%; margin: 1em;" />
</form>
ファイルに保存する場合
memo.php
<?php
$file_name = "memo-".md5($_SERVER["QUERY_STRING"]);
if (!empty($_POST["memo"])) {
file_put_contents($file_name, gzcompress($_POST["memo"]));
}
$memo = gzuncompress(file_get_contents($file_name));
?><meta charset="utf-8">
<form method="post">
<textarea name="memo" style="height:80%; width:90%;"><?php echo $memo; ?></textarea>
<input type="submit" value="save" style="width:80%; margin: 1em;" />
</form>