Written by 正冰 on 2011, October 22, 8:56 PM
问题产生的前因:A网站采用iframe框架形式嵌套了B网站的一个页面C,直接打开页面C会在本地保留一个cookie文件,而当采用A网站iframe框架形式嵌套后就无法成功生成cookie文件,该问题仅在IE浏览器环境下出现,firefox、chrome、Safari浏览器下没有问题。
造成该问题的原因:一个所谓的隐私首选项(简称为P3P)的W3C标准。只有在每一页上设置一个cookie发送头,才能允许Internet Explorer接受第三方Cookie。
换言之,只有在页面C上设置一个cookie发送头,那么A网站iframe框架形式嵌套后就可以在IE下成功获得页面C的cookie。
- PHP:header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
- ASP.NET:HttpContext.Current.Response.AddHeader("p3p","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");
- Django:response = render_to_response('mytemplate.html')
response["P3P"] = 'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'
- JSP:response.addHeader("P3P","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"")
本文解决方案参考了http://adamyoung.net/IE-Blocking-iFrame-cookies
Filed under: 技术归总
0 Comments
0 Trackbacks
568 Views
Written by 正冰 on 2011, October 16, 3:36 PM
近几天正冰在测试有关跨域名cookies存储问题,在某个php测试页面里的header函数一直遭遇:Warning: Cannot modify header information - headers already sent by错误提示。为了解决该问题,翻山越岭地用google查询了相关资料,造成该问题的原因是:函数 header(),setcookie() 和 session 函数需要在输出流中增加头信息。但是头信息只能在其它任何输出内容之前发送。在使用这些函数前不能有任何(如 HTML)的输出。函数 headers_sent() 能够检查您的脚本是否已经发送了头信息。
来继续了解下原理:PHP脚本开始执行时,它可以同时发送header(标题)信息和主体信息。 Header信息(来自 header() 或 SetCookie() 函数)并不会立即发送,相反,它被保存到一个列表中。 这样就可以允许你修改标题信息,包括缺省的标题(例如 Content-Type 标题)。但是,一旦脚本发送了任何非标题的输出(例如,使用 HTML 或 print() 调用),那么PHP就必须先发送完所有的Header,然后终止 HTTP header。而后继续发送主体数据。从这时开始,任何添加或修改Header信息的试图都是不允许的,并会发送上述的错误消息之一。
解决方案如下(须保证出错函数之前没有任何输出):
1、如果说这条仅仅只是错误提示,并不影响你程序正常运作,那么只需要“屏蔽”它即可。在页面顶部的php标签中加入ob_start();,在返回的信息下面加入ob_end_flush();,这样就可以屏蔽错误信息。
<?php ob_start(); ?>
... HTML codes ...
<?php
... PHP codes ...
header ("Location: ....");
ob_end_flush();
?>
2、反之要彻底解决,正冰是通过Notepad++先建立一个空白页面,然后将编码设置为Encode in UTF-8 without BOM,然后将出问题页面代码复制进去保存为一个新页面即可。
因为正冰所测试的页面还有一个setcookie函数,这个也会导致这样的问题出现,简单摘录如下:cookie本身在使用上有一些限制,例如:
- 呼叫setcookie的叙述必须放在<html>标签之前
- 呼叫setcookie之前,不可使用echo
- 直到网页被重新载入后,cookie才会在程式中出现
- setcookie函数必须在任何资料输出至浏览器前,就先送出
解决方法就是在程序开始用ob_start();这个函数。
Filed under: 技术归总
0 Comments
0 Trackbacks
611 Views
Written by 正冰 on 2011, October 14, 3:27 PM
手头管理着多个wordpress搭建的网站,因为经常忘记密码而头疼不已。这不又忘了密码,还好有phpmyadmin,一条SQL语句马上改回来了。
进入phpmyadmin,选择数据库,然后修改wp_users表中对应的管理员的user_pass字段为5d41402abc4b2a76b9719d911017c592,就可以以hello作为密码登录了。
嫌麻烦的同学可以直接执行以下SQL语句,wp为数据库名,ID为第一个用户(即默认管理员)
UPDATE `wp`.`wp_users` SET `user_pass` = '5d41402abc4b2a76b9719d911017c592' WHERE `wp_users`.`ID` =1;
另外,phpmyadmin最新下载地址:http://www.phpmyadmin.net/home_page/downloads.php,选择合适版本下载上传到空间上,用管理面板解压缩,然后就可以用了。
Filed under: 技术归总
0 Comments
0 Trackbacks
571 Views
Written by 正冰 on 2011, October 10, 3:16 PM
ERD Commander是一个程序组,它是该迷你版Windows XP上的主要应用程序(因此该光盘又叫做ERD Commander Boot CD),它提供的三类工具可以修复与挽救硬盘上已损坏的Windows系统(支持Windows 2000/XP/2003),无需重新安装,因此,该光盘也是一个系统维护盘,可以直接访问硬盘上的所有文件,还可以修改Windows的管理员密码。
正冰本次推荐的ERD commander 2005是易通汉化加强版,该版本登陆密码是Yitong ,首字母大写。另外有一款据说是汉化精简版的登陆密码是yitong2005。
软件使用比较简单,直接下载刻盘,然后从光盘启动。利用ERD Commander,无需原来的密码就可以轻松地修改包括管理员帐户在内的任何Windows帐户的密码。系统进入后点击“开始”菜单,选择“系统工具→Locksmith”,在弹出的向导对话框上选择需要修改密码的系统账号,然后输入两次新密码就可修改原来的密码,重启电脑以新密码登录即可。
迅雷下载:ERD commander 2005 易通汉化加强版
Filed under: 技术归总
0 Comments
0 Trackbacks
665 Views
Written by 正冰 on 2011, September 29, 9:27 AM
前因:虽然目前工作电脑Windows XP使用1G内存绰绰有余,但是安装了vmware workstation之后就不是那么回事的。用CPU-Z看了下硬件:Intel(R) Pentium(R) 4 CPU 2.80GHz,Intel i845PE芯片,技嘉GA-8PE667主板,有3根内存插槽,已使用2根。查询资料了解到该主板支持最大2G内存。拆开电脑,再添一根512M内存,但是不管怎么换着插,都只能识别1G,在确认内存和插槽都是好的并且再次开机使用CPU-Z检查能够正常看到3根内存插槽都有内存。
现象:任意插两根内存均能识别,插上第三根,只能识别靠近CPU那两根的容量。
结论:845的主板最多支持2根内存,单条1G的两根就支持!主板最多支持两根,预留一根!
Tags: 內存
Filed under: 技术归总
0 Comments
0 Trackbacks
573 Views
Written by 正冰 on 2011, August 23, 11:53 AM
最近买了Burst.net美国佛罗里达迈阿密机房的2台VPS做测试(首月免费),一台windows 2003,一台无桌面环境的纯净centos Linux 6.0 64bit,为了测试,在CentOS系统上安装了vnc服务。以下为安装全过程(适用于256M以上VPS):
1、安装桌面环境KDE与gnome
yum install kdepim
yum groupinstall gnome-desktop
yum install gnome-session
2、安装VNC、firefox浏览器以及Xorg(Xorg 是由 X.Org 基金会发行的开放源代码 X Window 系统实现中的 X 服务)
yum -y install vnc vnc-server firefox x11-xorg
yum groupinstall "X Window System" "GNOME Desktop Environment" "KDE (K Desktop Environment)"
3、配置VNC
vncserver
首次运行会要求你设定好VNC连接密码,程序会建立一个.vnc的目录,默认情况是/root/.vnc
4、杀掉所有VNC的进程、删除临时sockets、重新启动VNC服务
pkill -9 vnc
rm -rf /tmp/.X1*
然后编辑/root/.vnc/xstartup,将最后一行twm替换为gnome-session或者startkde
懒人可以直接用以下语句直接替换(执行任意一条即可,建议选择第一条稳定,但是占用内存较多,首次连接占用681M,同条件第二条占用343M)
sed -i 's/twm/gnome-session/g' /root/.vnc/xstartup
sed -i 's/twm/startkde/g' /root/.vnc/xstartup
替换完成后重启vncserver
vncserver
5、在windows或者linux桌面环境下使用VNC客户端去连接模板主机,默认情况下连接地址是:
xxx.xxx.xxx.xxx:1
可能遇到的问题:
1、连接上去后发现只显示桌面,木有任务栏,木有桌面图标
解决方法:到/root/.vnc/目录下找到log日志文件,打开查看以后会发现提示你如下错误信息
gnome-session[****]: WARNING: Unable to find provider 'gnome-panel' of required component 'panel'
gnome-session[****]: WARNING: Unable to find provider 'nautilus' of required component 'filemanager'
第一条是任务栏木有的错误,第二条是图标木有的错误,执行如下命令后再次连接即可
yum -y install gnome-panel
yum -y install nautilus
pkill -9 vnc
rm -rf /tmp/.X1*
rm -rf /root/.vnc/*.log && rm -rf /root/.vnc/*.pid
vncserver
另外,针对128M这样小内存的Linux VPS,采用《http://icodex.org/2010/03/centos最小化安装gnome和vnc/》的方法,简单摘录如下:
1.安装x-window桌面和Gnome环境先.
yum groupinstall "X Window System" "GNOME Desktop Environment"
2.添加中文支持和浏览器
yum -y install fonts-chinese firefox
3.安装tightvnc.
(CentOS 5 64Bit)
wget http://packages.sw.be/tightvnc/tightvnc-server-1.3.9-3.el5.rf.x86_64.rpm
rpm -ivh tightvnc-server-1.3.9-3.el5.rf.x86_64.rpm --force --nodeps
(CentOS 5 32Bit)
wget http://packages.sw.be/tightvnc/tightvnc-server-1.3.9-3.el5.rf.i386.rpm
rpm -ivh tightvnc-server-1.3.9-3.el5.rf.i386.rpm --force --nodeps
其他版本到http://packages.sw.be/tightvnc找对应的rpm包。
补充:必须做以下操作,否则会因找不到字体路径而无法启动!
mkdir -p /usr/X11R6/lib/X11
ln -s /usr/share/X11/fonts /usr/X11R6/lib/X11/fonts
使用方法(以会话ID:1为例)
启动vnc.执行命令:
vncserver :1 -httpport 9001 -name icodex_desktop -depth 24 -geometry 1024x768
关闭vnc,执行命令:
vncserver -kill :1
参数说明:
usage: vncserver [:<number>] [-nohttpd] [-name <desktop-name>] [-depth <depth>]
[-geometry <width>x<height>]
[-pixelformat rgbNNN|bgrNNN]
<Xvnc-options>...
vncserver -kill <X-display>
:1 > 会话ID.你可以建立多几个会话ID
-httpport|-nohttpd > 打开的TCP访问端口或者关闭TCP访问
-name > 命名.这个随意了...
-depth > 色彩深度 设置16位或24位,32位是不启动的.
-geometry > 屏幕纵横比
-pixelformat > 像素格式,默认即可
vncserver -kill <X-display> 杀死会话ID.<X-display>为会话ID.如:vncserver -kill :1
经过实际测试安装,用vnc client连接后仅占用104M内存。
Filed under: 技术归总
0 Comments
0 Trackbacks
1685 Views
Written by 正冰 on 2011, August 18, 11:21 AM
1 格子广告
完美处理格子广告 需要修改两个文件 template/default/common/common.css 和source\class\adv\adv_text.php
先看第一个文件common.css
打开文件搜索 “格子广告” 大概在494行 结果如下:
/* 格子广告 */ .a_t { margin-bottom: 10px; }
.a_t table { width: 100%; }
.a_t td { padding: 4px 15px; border: 1px solid {COMMONBORDER}; }
这段代码中数值4 代表的是广告图片上下距离边框的距离 数值15 代表的是广告图片左右距离边框的距离
修改这个文件可以解决边距大小问题 达到你满意的效果
注意:这里面的4 15是指一侧的距离 同时左侧和右侧是相同的 也就是说 如果你的左右边距的值是15 那么你的图片左右两边距离边框的距离都是15PX 对代码了解一点的都知道这个
我在这里修改为:2 2,后台添加图片宽度设置为954看下第二个文件adv_text.php
打开文件搜索 if($advcount > 5) 大概在98行 结果如下:
$advcount = count($adids);
if($advcount > 5) {
$minfillpercent = 0;
for($cols = 5; $cols >= 3; $cols–) {
if(($remainder = $advcount % $cols) == 0) {
$advcols = $cols;
break;
这段代码中的5 的意思是每行显示的个数 当这个数值为5时 那么一行最多显示5个广告 超过5个就会自动换行 第二行超过5个 还会自动换行。
代码中3 的意思是 当广告个数大于一样 却又不足两行的时候 每行显示的个数 举例:按照默认的数值来说 每行最多显示5个广告 如果你的广告有六个 那么他就会变长两行 每行三个 如果你把3改成4 那么就是第一行显示四个 第二行显示剩余的2个
修改这个文件是更改每行显示的个数问题
这样修改后 不仅美观 能够显示你想要的个数 重要的是让然可以使用定时功能
2 后台广告去链接
在后台添加图片广告是先加上#链接,在广告添加成功后编辑广告:点击代码模式,去掉代码中的链接即可
3 DIY中标题居中方法
1,DIY,选到数据–模块模版
2,在<dt><a href>的dt后面加代码,如下:
<dt style=”text-align:center”>
即可。
Filed under: 技术归总
0 Comments
0 Trackbacks
1242 Views
Written by 正冰 on 2011, June 28, 2:25 PM
WinXP SP2 安装IIS时提示:安装程序无法复制文件staxmem.dl_
安装程序无法复制文件staxmem.dl_
运行:esentutl /p %windir%/security/database/secedit.sdb
esentutl语法参数
Windows有大量相互关联的系统数据库,众所周知的注册表就是其中最庞大的一名。其他还有如apph_sp.sdb、apphelp.sdb、drvmain.sdb、msimain.sdb、sysmain.sdb和secedit..sdb等等,这些数据库对系统来说都是非常重要的,他们用来跟踪安全或其他不在注册表中的系统设置。他们一旦出错,同样会导致系统无法正常启动。不过,并非所有sdb文件都是系统数据库。
管理这些数据库,微软提供了一个管理工具:esentutl,该工具位于windows\system32目录下,因其管理的数据库都是系统重要数据库,如无必要,请勿测试,轻则抹去安全信息,重则会导致系统崩溃。使用前,务请备份原数据库。
参数:
运行模式:
碎片整理:esentutl/d 数据库文件名
恢复:esentutl/r
完整性检查:esentutl/g 数据库文件名
修复:esentutl/p 数据库文件名
文件转储:esentutl/m 文件名
选项:
/8 数据库分页大小8kb
/o 禁用微软微标
/s 流文件名 为流数据输出设置文件名
/t 数据库文件名 设置临时数据库文件名
举例:域控制器出现“安全帐户管理器初始化失败,目录服务无法启动”提示,并要求你重启到目录恢复模式下进行恢复时,采用其他办法没有解决时,可以试运行esentutl /p c:\winnt\ntds\ntds.dit /!10240 /8 /v /x /o 命令对域控制器进行灾难修复。当然这是没有办法的办法,只是比重新安装系统省点时间而已。最好还是平常多做备份,尤其是要勤备份AD,尽量不要在DC上安装用不着的软件。
Filed under: 技术归总
1 Comments
0 Trackbacks
1941 Views