プロが教える店舗&オフィスのセキュリティ対策術

保存ボタンを押すと、チェック状態をcookieで保存する機能を実装したいと考えています。

<form name="frmOutput" method="get" action="#">

<input name="time[]" type="checkbox" value="morning" id="morning" <?php if (in_array('morning', $times)) {?>checked="checked"<?php } ?> > <label for="morning">朝</label>
<input name="time[]" type="checkbox" value="noon" id="noon" <?php if (in_array('noon', $times)) {?>checked="checked"<?php } ?> ><label for="noon">昼</label>
<input name="time[]" type="checkbox" value="evening" id="evening" <?php if (in_array('evening', $times)) {?>checked="checked"<?php } ?> ><label for="evening" >夜</label>

<input type="submit" name="submit_1" value="保存" onClick="recordTime(); return false;" />


この保存ボタンを押すと、JavaScriptで書いたrecordTimeで、チェックされているcheckboxの値を取得します。

<script src="./jquery.js" type="text/javascript"></script>
<script language="JavaScript">
<!--
function recordTime()
{
var checkList = new Array(document.getElementById('morning'),
document.getElementById('noon'),
document.getElementById('evening'));
var times = new Array();
for (i = 0; i < checkList.length; ++i) {
if (checkList[i].checked) {
times.push(checkList[i].value);
}
}
$.get("./index.php", { "time[]": times, "record": 1 });
}
-->
</script>


値がセットされていればcookieに書き込みを行い、リロードすると保存時のチェック状態が再現されます。

<?php
if (isset($_GET['record'])) {
$times = $_GET['times'];
$tmp = serialize($times);
echo $tmp;
setcookie('times', $tmp, time() + 30 * 60*60*24);
exit;
}

$tmp = $_COOKIE['times'];
$tmp = stripslashes($tmp);
$times = unserialize($tmp);
if ($times === false) {
echo "unserialize failed.";
}
?>


以上のコードなのですが、うまくcookieに保存されません。
これとは別にcookieを削除するボタンも作っており、
この削除ボタンでcookieの有効期限を過去にして削除してから、
動作がおかしくなったように感じていますが、
原因がはっきり分かりません。

知識を持っておられる方がいらっしゃれば、
教えて頂ければ助かります。
よろしくお願いしますm(__)m

A 回答 (1件)

これなんてどうでしょうか?


http://www.phppro.jp/qa/3450
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!