【问题标题】:PHP - Store information with NO databasePHP - 使用无数据库存储信息
【发布时间】:2013-07-26 08:22:15
【问题描述】:

我打算用 Apache 和 PHP 改进一个网站,该网站有一个页面,其中包含一个包含文件列表的表格。我的目标是允许用户根据一些特定和主观的标准将其中一个文件设置为“重要”文件。为了做到这一点,我想以某种方式存储有关最“重要”文件的信息,但限制是我既不能使用数据库也不能使用文件(主管施加的限制)。

我的问题是:

  • 有可能吗?
  • 我该怎么做?

我已经在这个网站上搜索过,但没有找到答案。

编辑:顺便说一句,最后我使用 XML 文件解决了我的问题。非常感谢大家。

【问题讨论】:

  • 如果你的主管希望你持久保存数据而不实际将其保存在任何地方,那他就是个白痴。
  • 请确保您的主管阅读上述评论
  • 你可能想找一个不同的主管..
  • 我想这里有一个误解 - 询问主管(工作主管?还是老师?)哪种存储方式是可以接受的。它应该是用户特定的吗?还是执着?没有人可能愿意要求你做一些不可能的事情,除非这是任务的重点——让你得出结论/说这是不可能的。
  • 是的,你的主管是个傻瓜。首先,让自己的“主管”真正希望让自己变得更好,但与此同时,要么使用会话/cookies……要么使用memcache/apc (警告白痴,一旦服务器重新启动,重要列表就消失了)。

标签: php apache storing-data


【解决方案1】:

假设这些标准是客户端而不是服务器端,因为如果它们是服务器端并且它应该是所有用户的一个“重要”文件,那么就没有办法了这个没有存储空间。

解决方案的假定答案是 localStorage()...

它依赖于 Javascript,绝对不是一个完美的解决方案,但 HTML5 localStorage 允许您将首选项存储在用户的计算机上。

首先,检测对localStorage()的支持:

if (Modernizr.localstorage) { // with Modernizr
if (typeof(localStorage) != 'undefined' ) { // Without Modernizr

如果支持就设置一个参数:

localStorage.setItem("somePreference", "Some Value");

然后再检索它,只要您的用户没有清除本地存储:

var somePreference = localStorage.getItem("somePreference");

当你想清除它时,只需使用:

localStorage.removeItem("somePreference");

对于那些使用不受支持(旧)浏览器的人,您可以使用 local storage hacks 滥用 Flash LSO,但这些绝对不是理想的。

会话或 cookie 呢?

这两种都是有意的临时存储形式。即使是 Flash LSO 也比 cookie 更适合长期存储。

限制实际上是在鼓励不良做法...

所有这些选项都是浏览器端的。如果用户移动到另一台 PC,他/她的首选项将在该 PC 上重置,这与数据库驱动的身份验证系统不同,您可以在登录时保存首选项。

存储此类数据的最佳方式是在数据库中。如果您无法运行数据库服务,您可以使用SQLite 或将数据存储在 JSON 或 XML 文件中。

【讨论】:

  • 非常感谢大家的建议!由于这是一个必须传播到服务器端的客户端决策,我想我的问题的答案是,如果我不能解除约束,这是不可能的。谢谢!
【解决方案2】:

您可以尝试使用 cookie 来存储数据

设置文件名使用:

  <?php 
    setcookie("important", $importantFileName); 
  ?>

读取数据使用:

  <?php 
    $importantFileName = $_COOKIE["important"]; 
  ?>

但这仅适用于当前用户,其他用户无法查看。

【讨论】:

    【解决方案3】:

    Cookie 可能会有所帮助。我想不出任何其他安全的方式。这也不太优雅。

    http://support.mozilla.org/en-US/kb/cookies-information-websites-store-on-your-computer

    【讨论】:

    • 你知道一个cookie可以保存多少数据吗?
    • 它是 4kb。对于您将要使用的东西,它应该足够了。
    【解决方案4】:

    您可以使用会话和 Cookie临时保存数据。它们不需要文件或数据库;但是,如前所述,这是暂时的,因为当浏览器关闭或 cookie 过期时,数据就消失了。
    如果你被告知要在不使用文件或数据库的情况下永久保存数据,那么你的主管已经让你失败了。

    希望这会有所帮助。

    【讨论】:

    • 会话通常与文件或数据库一起保存。当然,可以使用内存数据库。
    • 我知道;这些文件是由系统而不是 OP 创建的;所以,在某种程度上,他仍然符合要求。
    【解决方案5】:

    我能看到的唯一选择是使用 cookie(它们不是永久性的,并且作为文件存储在客户端上)。

    另一种选择可能是使用Parse 之类的东西,它允许您将数据存储在云中。

    这取决于您的主管有多严格,因为第一个解决方案使用(客户端)文件,而后者将使用另一台服务器上的数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      • 2010-12-05
      • 2013-11-28
      • 1970-01-01
      • 2015-04-26
      • 2012-08-03
      相关资源
      最近更新 更多