session_unset() && session_destroy()

What is the difference between session_unset() and session_destroy() in PHP?




session_unset — Free all session variables

void session_unset ( void )The session_unset() function frees all session variables currently registered.


If $_SESSION (or $HTTP_SESSION_VARS for PHP 4.0.6 or less) is used, use unset() to unregister a session variable, i.e.unset ($_SESSION[‘varname’]);.


Do NOT unset the whole $_SESSION with unset($_SESSION) as this will disable the registering of session variables through the $_SESSION superglobal. 继续阅读“session_unset() && session_destroy()”

Comment your damn code

I’m just going to come right out and say it:

Comment your damn code.


Every now and then I run into an engineer–sometimes pretty high level–who thinks that you don’t need to comment code. I’m going to call bullshit on this. I’ve been doing this a long time. Chances are, way longer than you. We are right in the middle of coding our asses off trying to launch something awesome, yet we still comment practically everything. There’s no excuse not to. Every 3 to 7 lines of code you’ll find some amount of editorializing. Maybe every few hundred lines you’ll find a good joke too. 继续阅读“Comment your damn code”

KNDB Session For CodeIgniter

KNDB Session

Native Session makes good use of PHP’s native session handling abilities, but it does not allow the use of a database for session storage. KNDB Session (which stands for Kirilisa’s Native Database session) is a hybrid which is based upon Native Session (with some notable changes) but allows use of databases via PHP’s ability to store sessions in a DB. 继续阅读“KNDB Session For CodeIgniter”

Replacing CodeIgniter’s session by PHP’s Native Session

For last 8 months, I have been working on a web application. We are developing the application based onCodeIgniter framework. In our project there are normal web version and mobile view version. Some days ago we noticed that, some people can’t login their account via mobile version though there username & password are correct. After debugging and digging the problem we found that in iPod Touch 2G/3GS Safari browser, this problem is happening.

We are using CodeIgniter’s built in session library and that is different than normal PHP’s session. We found that for each visit of the user, the server can’t track the session and regenerating new session id each time. Very weird situation for us. As we coded all over based on CodeIginter’s session library’s function so its not optimal solution for us to remove the codes and use PHP’s native session. Because in that case there is high possibility to generate new bugs. After lots of searching in the net at last we found a wrapper class for CodeIgniter. 继续阅读“Replacing CodeIgniter’s session by PHP’s Native Session”

PHP中 empty() 与 isset()的区别

empty ——- 检查一个变量是否为空

【说明】 bool empty ( mixed $var )

如果 var 是非空非零的值,则 empty() 返回 FALSE。换句话说,“”0“0”NULLFALSEarray()var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE

isset ——— 检测变量是否设置 继续阅读“PHP中 empty() 与 isset()的区别”

IE模型和W3C DOM模型的不同之处(后续将不断补充)

前言:IE模型和W3C DOM模型有许多不同之处,在这里,我将自己在学习过程中遇到的不同之处罗列出来,以供日后参考。


在Internet Explorer 中,事件对象是window对象的属性(window.event)。在该模型中,window.event属性包含最后一个已经发生的事件:

在W3C DOM 模型中,事件作为参数传递给事件处理函数:


继续阅读“IE模型和W3C DOM模型的不同之处(后续将不断补充)”

JavaScript 和 事件(事件注册)

Internet Explorer 的事件注册模型

Internet Explorer 中有两个分别用来注册事件处理程序和取消注册事件处理程序的方法,即 attachEvent() 和 detachEvent() 方法:




W3C DOM 事件注册模型

W3C DOM 方法则使用3个参数事件名称函数名称和一个布尔值(true 或 false)。如果事件注册是在事件捕获阶段使用,则布尔值被设置为true,如果事件注册是在事件冒泡阶段使用,则布尔值被设置为false。


myElement.onclick = startNow;


若要删除事件侦听程序,可以使用以下代码: myElement.removeEventListener('click', startNow, false);


文章摘选自《Ajax 入门经典》(Beginning Ajax)Chris Ullman, Lucinda Dykes 著   徐璐 译   清华大学出版社

JavaScript 和 事件(事件模型)


事件一直是脚本编写中比较复杂的一部分,因为事件模型在不同的浏览器中会有所不同。事件模型定义了事件的处理方式和调用哪些对象。目前,主要的不同在于IE 模型和W3C DOM 事件模型间事件流的不同(在Mozilla-based 浏览器中使用的事件模型与W3C DOM模型相似)。

处理事件流的技术主要有两种。在事件冒泡(event bubbling)技术中,事件从最具体(most-specific)的目标到最不具体(least-specific)的目标触发。事件目标(event target)是事件最初发生的位置。在事件捕获(event capturing)技术中,事件从最不具体的目标到最具体的目标触发。


<div>  <p>Event order </p>  </div>

如上所示,子元素(p)嵌套在父元素(div)中,这两个元素都有相同的事件处理程序(onmouseover)。如果用户鼠标滑过该子元素,就会为这两个元素创建mouseover 事件。但是首先触发哪个事件呢?

在事件捕获技术中,父元素(div)的mouseover 事件首先触发。在事件冒泡技术中,子元素(p)的mouseover事件首先触发。

      Internet Explorer(包括IE 7)使用的是事件冒泡技术。W3C DOM模型则包括事件捕获和事件冒泡两种技术。

文章摘选自《Ajax 入门经典》(Beginning Ajax)Chris Ullman, Lucinda Dykes 著   徐璐 译   清华大学出版社

FORM 标签的 enctype 属性


enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。

默认地,表单数据会编码为 “application/x-www-form-urlencoded”。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 “+” 加号,特殊符号转换为 ASCII HEX 值)。



application/x-www-form-urlencoded 在发送前编码所有字符(默认
multipart/form-data 不对字符编码。 


text/plain 空格转换为 “+” 加号,但不对特殊字符编码。