2

仅在 localhost 上使用 SQLite3、PDO 和 PHP5。

我正在使用网页表来显示列、样本集(表中的 1 条记录)、用于选择列的复选框以及用于为后续查询选择修改器的下拉列表。在单击“获取查询”按钮时,简单查询..

SELECT day FROM tbl;

..变成..

SELECT datetime([day],'unixepoch','+978307200 seconds','localtime') as day FROM tbl;

(这是通过字符串替换功能完成的)

然后通过 cookie 将其传递到结果页面(使用 cookie,因为我还传递了许多其他数据)

此查询现在将所有这些秒添加到转换后的 unix 纪元时间,并放弃本地时间的结果......(与 UTC 相比)

如果我将查询直接硬编码到“results.php”页面中,它可以正常工作。如果该页面使用存储在前一页设置的 cookie 中的查询,我将得不到任何结果。检查结果页面元素,我可以看到 cookie 已设置完整的查询。

我已将其缩小到"+978307200"修改器...因为没有它,它工作正常(除了 978307200 秒不平衡!)

我认为“+”号发生了一些事情,但完全不知道如何修复它。

有什么想法/建议吗?谢谢。

4

1 回答 1

0

在 URL 和 cookie 中,加上 sing 是空格的占位符,$_COOKIES数组包含已解析的 cookie 标头,因此每个加号都更改为空格。

如果您确实必须在页面之间传递此类数据,请使用 session 。

如果由于某种原因会话不是一个选项,您将不得不将您的值编码为仅包含“安全”字符,然后再将它们存储到 cookie 中,然后在使用之前对其进行解码。最流行的是base64_函数

于 2012-11-03T08:56:10.657 回答