記事のクリップをcookieで操作
ものすごく泥臭いですが、素のPHPだけでつくったもの。
jsとかjQuery がうまいこと動かなかったのでやっつけで処理しました。
なんか色々無駄なことをしている自覚はあるけど、どこをどうしたらスマートになるのかわかりません…。
ほんとは2~3行で終わる処理のような気がしますorz
とりあえず動くことを優先させたので、headerの戻り先さえ変えればcookie使える環境ならどこでも動く…はず。
仕様
- 上限は10
- 上限を超えると古いものから消えていく
- 有効期限は最後の操作から30日後
- 解除すると空いた部分は繰り上がる
- GETで登録/解除の切り替え
clip.php
$ST = filter_input(INPUT_GET, "st"); //登録or解除
$pid = filter_input(INPUT_GET, "pid"); //記事ID
if ($ST == 1) {
# cookieに書き込み
if (!is_array($_COOKIE['clip'])) {
setcookie("clip[0]", $pid, time()+60*60*24*30);
} else {
$cnt = count($_COOKIE['clip']);
if (!in_array($pid, $_COOKIE['clip'])) {
if ($cnt >= 10) {//上限はここで調整
$arr = $_COOKIE['clip'];
unset($_COOKIE['clip']);
array_shift($arr);
$arr[] = $pid;
foreach ($arr as $key => $value) {
setcookie("clip[$key]", $value, time()+60*60*24*30);
}
} else {
setcookie("clip[$cnt]", $pid, time()+60*60*24*30);
}
}
}
header("Location: ./detail.php?pid=".$pid);
} elseif ($ST == 9) {
# 指定のcookieを削除
$clip = array();
$arr = $_COOKIE['clip'];
unset($_COOKIE['clip']);
foreach ($arr as $key => $value) {
setcookie("clip[$key]", '');
if ($value == $pid) {
unset($value);
} else {
$clip[] = $value;
}
}
foreach ($clip as $key => $value) {
setcookie("clip[$key]", $value, time()+60*60*24*30);
}
header("Location: ./detail.php?pid=".$pid);
} else {
foreach ($_COOKIE['clip'] as $key => $value) {
setcookie("clip[$key]", '');
}
header("Location: ./top.php");
}
Author And Source
この問題について(記事のクリップをcookieで操作), 我々は、より多くの情報をここで見つけました https://qiita.com/ao_love/items/f63015bb27574e094c56著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .