【问题标题】:User languages settings - most efficient way to get setting and display it用户语言设置 - 获取设置和显示它的最有效方式
【发布时间】:2017-03-31 01:04:48
【问题描述】:

我正在为已登录的用户构建一个站点或多种语言。如果我有一个名为user_settings 的表和一个名为language 的列,我可以保存语言,例如en 用于英语,es 用于西班牙语。

我也可以使用 cookie 来存储它(我认为)。哪种方式最有效?

我认为数据库方式是最好的方式,但显示每个页面的消息的唯一方式是执行查询,SELECT language from user_settings,然后执行if statement

if($languageFromDatabase == 'en')

但我不认为这是有效的,因为我必须在每次页面加载时检查数据库。什么是有效的方法?

【问题讨论】:

    标签: php mysql performance localization server


    【解决方案1】:

    您需要 cookie 来跟踪用户。

    我的 cmets,大致按从好到坏的顺序排列:

    A 计划:它可以保留 user_id。这需要在每个页面的开头从数据库中获取各种用户信息。

    B 计划:将所有信息保存在 cookie 中。这可能会带来大量 cookie、cookie 被黑客入侵等风险。当您添加需要为每个用户保留的其他内容时,可能会导致转换问题。

    C 计划:传入 URL。这非常容易受到黑客攻击,并且在有人想要添加书签或共享 URL 时很笨拙。

    计划 D:如果您希望增长到需要多个 Web 服务器的地步,那么会话存储就很糟糕。 (重击者不用“会话”。)

    【讨论】:

      【解决方案2】:

      在用户第一次访问时从数据库中读取语言。将其存储到会话数据中,然后从那里读取。

      【讨论】:

        【解决方案3】:

        在 cookie 中存储语言。 然后如果有get参数$_GET['lng']才执行sql并再次存储到cookie中。

        这样,只有当用户想要更改语言时才会执行 sql。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-01-23
          • 2012-07-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-13
          相关资源
          最近更新 更多