Liny_@NotePad

沉迷ACG中

PHP 销毁Session

之前用session_destroy()的方式销毁session,发现丢到服务器上无用,百度之得解:

● 如何删除session?

1、unset ($_SESSION['xxx']) 删除单个session,unset($_SESSION['xxx']) 用来unregister一个已注册的session变量。其作用和session_unregister()相同。 session_unregister()在PHP5中不再使用,可将之打入冷宫。

unset($_SESSION) 此函数千万不可使用,它会将全局变量$_SESSION销毁,而且还没有可行的办法将其恢复。用户也不再可以注册$_SESSION变量。

2、$_SESSION=array() 删除多个session

3、session_destroy()结束当前的会话,并清空会话中的所有资源。。该 函数不会unset(释放)和当前session相关的全局变量(globalvariables),也不会删除客户端的session cookie.PHP默认的session是基于cookie的,如果要删除cookie的话,必须借助setcookie()函数。

返回值:布尔值。

功能说明:这个函数结束当前的session,此函数没有参数,且返回值均为true

session_unset() 如果使用了$_SESSION,则该函数不再起作用。由于PHP5必定要使用$_SESSION,所以此函数可以打入冷宫了。

PHP文件锁

由于没有application,只能用数据库、文件或共享内存来模拟,
但是数据库的话恐怕会并发,又找不到怎样加锁,共享内存在WINDOWS下仿佛不好用,
同事提到说可以用线程锁,查了下资料,需要服务器的管理权限,只得作罢,最后决定用文件锁来实现生成年月日-自动编号的主键。

img标签没有实时加载、、

做上传照片时是将照片保存到某文件夹的ID.jpg这样的名字里,但是发现传上去后img标签没有实时加载图像,还是显示以前的图片。
百度之原来img也有缓存。。src一样的话短时间内就不读,于是只好在url后面加一个随机数,例如time(),解决……

由“COUNT 字段不正确”引来的种种..

测试刚写好的信息管理系统,发现短文章插入正常,长文章插入不正常,提示“COUNT 字段不正确”。
迷茫中以为仍旧是PHP调Access备注字段的问题,查了一些资料未果。

重新认真调试,按这个提示应该是字段不符合,我的文章中的确出现了单引号('),但是已经被自动转义了啊,PHP5增加了get_magic_quotes_gpc开关,默认为开,会自动为GET、POST等参数addlashes,即在前面加了斜杠。

于是echo SQL出来自己执行,发现的确是不行的o(╯□╰)o 于是百度了下,通过内置的htmlentites函数将字符串转换为HTML字符,在读取的时候通过html_entity_decode函数反向解析。

这下似乎解决了,数据也可以正常插入,但在显示的时候发现反斜杠仍在,继续百度,找到stripslashes函数,干掉了反斜杠,仿佛没什么问题了……

再来测试,发现中文字符也会被转码,这下字段长度大大不足,再次百度,原来有htmlspecialchars这个函数。。替换掉所有的htmlentites函数,终于搞定!

PHP时间差8小时的解决办法

最近写PHP的时候发现date('Y-m-d H:i:s')得到的小时数总是早8个小时,很迷茫,百度一下得解:位置对象

前几天发现一个问题 date("Y-m-d G:i T",time()) 取出来的时间和本地时间老差8个小时,可我的系统明明是中国标准时(GMT+8),最后终于找到了问题所在:
原来从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的
也就是显示的时间(无论用什么php命令)都是格林威治标准时间
和我们的时间(北京时间)差了正好8个小时,有以下3中方法可以恢复正常的时间。

1,最简单的方法就是不要用php5.1以上的版本
2,如果一定要用,而且不能修改php.ini,则需要在关于时间的初始化的语句的
上面加上 date_default_timezone_set (XXX);
3,一劳永逸,仅限能修改php.ini。打开php.ini查找date.timezone 去掉前面的分号
= 后面加XXX,重启http服务(如apache2或iis等)即可

关于XXX,大陆内地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为重庆,上海,乌鲁木齐)
港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)
还有新加坡:Asia/Singapore
老外好像把北京漏调了
其他可用的值是:Etc/GMT-8 ,Singapore ,Hongkong ,PRC
PRC是什么?PRC是中华人民共和国啊-_-

.NET安装项目小结

其实用到的都是最傻瓜的功能……

就是如何添加文件、添加快捷方式、保留文件等。

C#单实例运行Sample

之前在C++里接触过内核同步对象,早上在前辈的代码里看到了,于是用C#实现看看。

其实很简单,通过System.Threading.Mutex就可以直接管理了……

设定默认按钮..

就WinForm来说,默认按钮可以直接设定Form的AcceptButton。

这次遇到的问题是Form中有个TabControl,里面有多个TabPage,每个TabPage的默认按钮是不同的。

实在不熟WinForm,暂时想不到其他方法,只好手工捕获事件解决。