【发布时间】:2016-03-10 06:41:35
【问题描述】:
好的,所以我得到了一个非常标准的 cookie 设置。我在某个事件上设置了 cookie,并在其中保存了一些垃圾。在特定的 $_GET 调用中,我想完全删除它,我尝试结合使用 unset() 和 setcookie() 来实现。我为此用途编写了一个名为 delCookie() 的特定函数。
现在奇怪的是:如果我用 if 子句捕获的 $_GET 变量调用 delCookie() 变量,cookie 会按预期消失。 (在此处删除 cookie 之前,我不会访问它。)
但是
如果我在将 cookie 内容写入 sqlite3 数据库之后调用 delCookie(),(我访问 cookie)它不会被删除。
任何想法为什么?以及任何不需要我将删除信号保持在不访问 cookie 的情况下重新加载页面的解决方案想法? (或者这甚至是一个错误?)
#相关代码(不分先后):
119 /**
120 * @brief 'Deletes' the cookie 'bought'. It basically sets its expiration date to 1 hour in the past, so the browser w ill collect it.
121 */
122 function delCookie() {
123 global $cookieDel;
124 echo "eating ...<br />";
125 unset($_COOKIE['bought']);
126 if(!setcookie('bought', FALSE, time()-3600)) {
127 echo "Error 2";
128 } else {
129 $cookieDel = TRUE;
130 }
131 }
132 /**
133 * @brief Writes a purchase to the database 'bought.db' in the following order:TIME:DATE | ITEMS(separated by a ',') | NAME(of the buyer) | TOTAL(amount of money spent). [consider writing the store brand aswell?]
134 */
135 function toDatabase($items, $amount) {
136 $database = new SQLite3('bought.db');
137 $fixString = preg_replace('/<br \/>/', ', ', $items);
138
139 $SQLret = $database->query('INSERT INTO bought(date, items, name, total) VALUES("'.date('y/m/d_H:m').'", "'.$fixString.'", "test", '.$amount.');');
140 }
【问题讨论】:
-
delCookie() 函数是什么样的?另外,您可以发布其余的相关代码吗?
-
在写入 db 和调用 delCookie() 之间是否有任何输出到浏览器?这可能是原因。
-
是的,但我没有访问 cookie。 (并且删除该输出并不能解决它)
-
是的,但是移除回显并不能解决问题,页面重新加载后 cookie 仍然存在。
-
您是否也删除了
delCookie()中的echo?
标签: php cookies setcookie unset