小编Cha*_*had的帖子

PHP中的会话超时:最佳实践

session.gc_maxlifetime和之间的实际区别是session_cache_expire()什么?

假设我希望用户会话在非活动15分钟后无效(在首次打开后不是15).哪一个会帮助我?

我也知道我可以做的session_set_cookie_params(),可以设置用户的cookie在一段时间内到期.但是,cookie到期以及服务器端的实际会话到期时间并不相同; 这也会在cookie过期时删除会话吗?

我所拥有的另一个解决方案是$_SESSION['last_time'] = time() 每个请求都很简单 ,并将会话与当前时间进行比较,基于此删除会话.我希望有一个更"内置"的机制来处理这个问题.

谢谢.

php security cookies session-timeout

35
推荐指数
3
解决办法
3万
查看次数

PHP数组引用的深层副本

所以$ array是一个数组,其中所有元素都是引用.

我想将这个数组追加到另一个名为$ results的数组(在循环中),但由于它们是引用,PHP复制引用,$ results充满了相同的元素.

到目前为止,最佳工作解决方案是:

$results[] = unserialize(serialize($array));
Run Code Online (Sandbox Code Playgroud)

我担心这会非常低效.有一个更好的方法吗?

php deep-copy

17
推荐指数
1
解决办法
8578
查看次数

为什么mDNS(Bonjour,Avahi等)使用UDP?

在我看来,DNS的许多问题,特别是安全问题,都是通过UDP实现DNS的根本原因; 例如,响应者不必是他所说的那个人.

我不知道mDNS协议的细节(我假设它比DNS更新),也许它在应用程序级别处理这些问题.任何人都可以为我阐明这一点吗?

security udp mdns bonjour

7
推荐指数
2
解决办法
4057
查看次数

迭代字段时访问 django 表单的初始值

我正在尝试做一些非常简单的事情;当我传入一些初始值时,我想将“隐藏”样式应用于 django 模板内的表单字段,如下所示:

form = form_class(initial={'field':data})
Run Code Online (Sandbox Code Playgroud)

通常情况下,它会是这样的:

<li class="{{form.somefield.name}} {% if form.somefield.initial %} hidden{% endif %}>
    ...
</li>
Run Code Online (Sandbox Code Playgroud)

但我正在迭代表单,所以我想做的是如下所示:

{% for field in form %}
    <li class="{{field.name}} {% if field.initial %} hidden{% endif %}">
    ...
    </li>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为 field.initial 仅具有定义为表单中字段的初始值,而不是创建表单时传入的数据。除了将迭代分解为单独的形式之外,是否有一个好的解决方案?

我想到的一些(糟糕的)解决方案:

  • 重写init将 self.initial 中的值填充到 self.fields 中;
  • 编写一个名为 {% hideifhasinitial %} 的模板标签
  • 在 self 和 self.initial 上使用 zip 的表单中添加一种方法(不起作用,因为 self.initial 只有一个元素,而 self 有 4 个元素,它只迭代 1 个元素,并且键(字段名称)没有) t 匹配)。

django django-forms

2
推荐指数
1
解决办法
7630
查看次数