我正在尝试解决Web应用程序的注销功能.当您登录时,该应用程序会为其域设置多个Cookie.这是当前的注销程序:
session_destroy()并循环遍历域的所有cookie,并将它们设置为过去(请参阅下面的代码)在此过程结束时,所有其他cookie都未设置,但PHPSESSIDcookie仍然存在,具有相同的值,并且仍设置为在会话结束时到期.
我在这里错过了什么?
这是我上面提到的注销功能:
function log_out_current_user() {
// Destroy the session
if (isset($_SESSION)) {
session_destroy();
}
// Expire all of the user's cookies for this domain:
// give them a blank value and set them to expire
// in the past
if (isset($_SERVER['HTTP_COOKIE'])) {
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach($cookies as $cookie) {
$parts = explode('=', $cookie);
$name = trim($parts[0]);
setcookie($name, '', time()-1000);
setcookie($name, '', time()-1000, '/');
}
// Explicitly unset this cookie - …Run Code Online (Sandbox Code Playgroud) 在MySQL(和其他SQL数据库)中,将注释添加到目的可能不明确的表或列中会很有帮助.(例如,搜索MySQL的"注释" 的创建表语法.)
有没有办法在ActiveRecord Migration中执行此操作?我试过没有结果.
create_table :stuff do |t|
t.integer :obscure_column, :comment => "Explanatory comment"
end
Run Code Online (Sandbox Code Playgroud)
我正在使用Rails 3.1.
好像所有东西都需要用clojure中的括号括起来.即使是一个简单的问候世界!
(println "Hello world!")
Run Code Online (Sandbox Code Playgroud)
该语法决定有什么好处?
我从事网络开发工作,但我对网络协议并不了解.我记得听到一个类比,TCP,HTTP和SSL可以被认为是围绕实际请求内容的一系列嵌套信封.
我还有一个模糊的想法TCP由数据包组成,在另一端验证.但我有点想象将HTTP请求切入数据包中......
所以基本上,我根本不理解这些东西.任何人都能对此有一个很好的概述吗?此外,是否有您推荐的适合初学者的书籍或其他资源?
基于哈希表的字典/映射结构提供O(1)查找时间.然而,我一直看到在Elixir中的含义,找到匹配的函数头比在地图中查找某些东西更快.
例如,Elixir String.Unicode 将一个unicode字符列表编译成许多函数头,因此通过找到函数head得到upcase"é" 来回答"é的最佳版本是什么".
我不知道为什么这比upcase在地图中查找"é" 的单个功能头更快或更高的内存效率.
同样,在展示如何在"Metaprogramming Elixir"中构建I18n库时,Chris McCord为每个翻译键提供了自己的功能头,并说:
"通过为每个转换映射生成函数头,我们再次让虚拟机接管以进行快速查找."
Elixir中的地图不提供O(1)查找吗?找到匹配的函数头O(1)?为什么选择将静态列表编译为多个函数头而不是仅将其存储在映射中?
我认为这应该很简单.说我有以下jQuery:
$someForm.live('submit', function(event) {
// do something
});
Run Code Online (Sandbox Code Playgroud)
如果<button type="submit">该表单中有多个提交按钮(),并且我想引用name被单击的按钮的属性,我将如何在回调函数中执行此操作?
在回调上下文中,既this和event.target指的是形式本身,并且event是一个深度嵌套对象.它可能包含我正在寻找的东西,但我还没有找到它.
另一种表达这个问题的方法是,"如果我正在观看表单上的提交事件(而不是其子元素),那么当我处理该事件时,有什么方法可以确定事件冒泡的子元素到形式?" 被点击的元素在这一点上是否可用,或者浏览器是否只将其视为表单上没有更深层原因的事件?
似乎答案是Nick Craver所说的 - 提交事件源自表单本身,因此无法追溯到具有点击事件而非提交事件的按钮.为了从点击中获取任何进一步的信息,必须有一个按钮的点击监听器.
在某些情况下(如我的),您可能需要1)捕获单击的提交按钮和2)绑定到表单上的提交事件.例如,如果您正在使用jQuery Validate,它会阻止表单提交,直到它有效.如果您通过绑定到按钮单击使表单通过ajax提交,您将绕过该验证.
正如Nick所示,您可以通过使用按钮的单击侦听器捕获按钮信息来解决此问题,然后在表单的提交回调中使用此信息.
将单击回调中的按钮信息传递给表单的提交回调的一种干净方法是用于将jQuery.data()其存储在表单上.例如:
// In the button's click event callback...
jQuery.data($someForm, 'lastSubmitButton', event.target.name);
// In the form's submit event callback...
var whichButton = jQuery.data($someForm, 'lastSubmitButton');
Run Code Online (Sandbox Code Playgroud)
这可以防止需要全局变量.
假设我想编写一个显示"hello world"的程序,我想用二进制编写它.我怎么能这样做?
我有一点想法:
任何人都可以带我走过这个吗?
我想我可能crypt()在Windows下发现了PHP的功能错误.
但是:我认识到这可能是我的错.数以百万计的PHP使用PHP并且成千上万; 我的代码被数十使用并由我工作.(这个论点最好用Coding Horror来解释.)
所以我在寻求帮助:告诉我我的错.我一直试图找几天,没有运气.
我正在使用Apache 2.2.14(Win32)和PHP 5.3.2的Windows服务器安装.我的开发盒运行Windows XP Professional; 'production'服务器(这是一个Intranet设置)运行Windows Storage Server 2003.两者都会出现问题.
我没有看到任何php.ini相关内容crypt(),但很乐意回答有关我的配置的问题.
我的PHP应用程序中的几个脚本偶尔会挂起:页面位于'等待本地主机'并且永远不会完成.这些脚本中的每一个都用于crypt在将用户密码存储在数据库中之前对其进行哈希处理,或者在登录页面的情况下,在将输入的密码与存储在数据库中的版本进行比较之前对其进行哈希处理.
由于登录页面最简单,我专注于测试.我反复登录,发现它可能会挂起10次中的4次.
作为实验,我更改了登录页面以使用纯文本密码并将数据库中的密码更改为纯文本版本.页面停止了.
我看到PHP的最新版本列出了这个错误修正:
修正了错误#51059(当给出无效盐时,地址崩溃).
所以我使用官方示例中给出的相同的盐创建了一个非常简单的测试脚本,如下所示:
$foo = crypt('rasmuslerdorf','r1');
echo $foo;
Run Code Online (Sandbox Code Playgroud)
如果我像疯了一样重装它,这个页面也会挂起.我只看到它挂在Chrome中,但无论浏览器如何,对Apache的影响都是一样的.
当这些页面挂起时,Apache的服务器状态页面(我在这里解释,关于不同的问题)增加了正在处理的请求数量并减少了空闲工作者的数量.正在处理的请求几乎都具有"发送回复"状态,但有时他们会显示"阅读请求"或"保持活跃(阅读)".
最终,Apache可能会崩溃.如果是这样,Windows崩溃报告如下所示:
szAppName: httpd.exe
szAppVer: 2.2.14.0
szModName: php5ts.dll
szModVer: 5.3.1.0 // OK, this report was before I upgraded to PHP 5.3.2,
// but that didn't …Run Code Online (Sandbox Code Playgroud) 在Linux中,如何获取程序X中当前打开的文件列表?
(具体来说,我在Fedora上,程序是Zend Studio,但我认为这是一个普遍的答案.)
另一个问题的答案说明了这一点
array.map(&:to_s)
Run Code Online (Sandbox Code Playgroud)
比...更快
array.map { |n| n.to_s }
Run Code Online (Sandbox Code Playgroud)
在第一个例子中,&变成:to_s了Proc.第二个例子使用一个块.
为什么Proc比基准中的块更快?这种技术允许解释器做一些优化吗?