Archive
IIS 6 的 PHP 最佳配置方法
虽然 LAMP 组合很不错,但是如果想要架设一台同时支持 PHP、ASP、ASP.NET、JSP、Perl 的 Web 虚拟主机服务器,还是用 Windows 2003 的 IIS 6 最好。网上有很多介绍在 IIS 6 上配置 PHP 的文章,但是那些方法不是性能不好,就是升级麻烦。下面的方法可以让你在第一次配置好后,能够非常方便的进行升级。
这里所说的升级,是指从某个 php4 版本升级到另一个 php4 版本,或者从某个 php5 版本升级到另一个 php5 版本,而不是指从 php4 升级到 php5。
准备:
1、一台安装好的 Windows 2003 服务器,并且已经安装了 IIS 6。
2、下载 windows 版的 PHP 二进制压缩包
安装:
解压缩 PHP 二进制压缩包到 C:\php 目录下(这里假设 C: 盘是系统盘,即安装了Windows 系统的盘,如果系统盘是 D: 盘,则解压缩到 D:\php 目录下,以此类推,下同)。
然后打开“我的电脑”->“属性”->“高级”->“环境变量”->“系统变量”->“path”,编辑其值,在前面增加下面的路径地址:
C:\php;C:\php\dlls;C:\php\extensions;C:\php\sapi;
将 php.ini-dist 或 php.ini-recommended 复制到 C:\Windows 目录下,并改名为 php.ini,一般正式发布网站的服务器用 php.ini-dist,而作为调试用的服务器用 php.ini-recommended 更好。当然一般情况下,这个 php.ini 还是需要根据实际情况来修改的。
下面来介绍一下几个必要的修改选项:
extension_dir = “C:\php\extensions”
这个是 PHP 扩展所放置的目录,请确保跟你实际安装的目录相同。
extension=php_mbstring.dll
;extension=php_big_int.dll
extension=php_bz2.dll
extension=php_cpdf.dll
extension=php_crack.dll
extension=php_curl.dll
extension=php_db.dll
extension=php_dba.dll
extension=php_dbase.dll
extension=php_dbx.dll
extension=php_domxml.dll
;extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_hyperwave.dll
extension=php_iconv.dll
;extension=php_ifx.dll
;extension=php_iisfunc.dll
extension=php_imap.dll
;extension=php_interbase.dll
extension=php_java.dll
extension=php_ldap.dll
;extension=php_mcrypt.dll
extension=php_mhash.dll
extension=php_mime_magic.dll
extension=php_ming.dll
extension=php_mssql.dll
extension=php_msql.dll
;extension=php_oci8.dll
extension=php_openssl.dll
;extension=php_oracle.dll
extension=php_pdf.dll
extension=php_pgsql.dll
;extension=php_printer.dll
extension=php_shmop.dll
;extension=php_snmp.dll
extension=php_sockets.dll
;extension=php_sybase_ct.dll
extension=php_w32api.dll
extension=php_xmlrpc.dll
extension=php_xslt.dll
extension=php_yaz.dll
extension=php_zip.dll
上面这些,开头没有加分号的是打开的扩展,加了分号的是没有打开的扩展。上面的设置包含了在 Windows 2003 上默认安装情况下可以打开所有扩展(这里列出的是 php 4 的)。
session.save_path = b:\sessions
这个是 session 文件默认保存的目录,这个目录必须是一个存在的目录,不然默认的 session 功能会无效。我这里设置的是一个 ramdisk 上的一个目录。将 session.save_path 设置在 ramdisk 上可以加快 session 处理的速度。如果你没有安装 ramdisk,你可以把它指定到其他盘的任何一个目录下,如 C:\sessions 目录、C:\Windows\Temp 目录等。
OK,基本工作作完了,现在该配置 IIS 了。
打开“ Internet 信息服务(IIS)管理器”,在“ Web 服务扩展”里,选择“添加一个新的 Web 服务扩展”,扩展名可填写“PHP ISAPI 扩展”,要求的文件选择:C:\php\sapi\php4isapi.dll(如果安装的是 PHP5,则此处是 C:\php\sapi\php5isapi.dll,下同),并设置扩展状态为允许。
打开“网站”->“属性”->“ISAPI 筛选器”->“添加”,筛选器名称可填写“PHP”,可执行文件仍然选择 C:\php\sapi\php4isapi.dll。
打开“网站”->“属性”->“主目录”->“应用程序设置”->“配置”->“应用程序扩展”->“添加”,可执行文件还是选择 C:\php\sapi\php4isapi.dll。扩展名填写“.php”,动作限制为“HEAD,GET,POST”。
打开“网站”->“属性”->“文档”->“启用默认内容文档”->“添加”,可以将 index.php 添加为默认内容文档。
然后选择“服务器机器名”->“所有任务”->“重新启动 IIS”来重启 IIS。
测试
在默认网站发布目录下,建立一个测试页面:
下载:phptest.php
<?php
phpinfo();
?>
如果打开这个页面能够看到 php 安装配置信息,就算是安装成功了。
如果想要更优化的执行 php 程序,可以安装 ZendOptimizer-2.6.0-Windows-i386.exe ,这个东西安装非常简单,这里就不介绍了。
升级
现在升级就非常简单了。只需要将新版本的 PHP 二进制压缩包下载下来,将原来的 C:\php 目录删除,将新版本解压缩到 C:\php 目录中,然后重新启动一下 IIS 就可以了。不需要修改任何配置,也不需要往 System32 目录中复制任何文件。是不是很方便啊?
转载来源 http://www.blueidea.com/tech/site/2005/3112.asp
Header函数前有输出的重定向问题
一般做PHP页面重定向时,会用到header函数的location属性,然而在header函数前面有输出时就会报错
比如
echo “hello“;
header(“Location:http://www.********.com“);
?>
解决的方法就是在这段代码前加上一个函数 ob_start();
代码如下:
ob_start();
echo “hello“;
header(“Location:http://www.********.com“);
?>
引用一下资料:
自PHP4起,可以通过一些输出缓冲函数来解决这个问题。代价是把所有向浏览器的输出都缓存在服务器,直到下命令发送它们。可以在代码中使用 ob_start() 及 ob_end_flush() 来实现这样的功能,或者通过修改php.ini中的output_buffering配置选项来实现,也可以通过修改服务器配置文件来实现。
win2008 iis7 安装pear
安装环境:windows2008+php5.2.6+iis7
1、确认php目录下是否有pear/go-pear.phar。用install安装的php,没有pear/go-pear.phar,可以打开 http://pear.php.net/go-pear.phar ,把里面的内容复制另存到php目录pear/go-pear.phar 。
2.开始-运行-cmd-输入 php pear/go-pear.phar。没有把php目录加入环境变量的请先切换到该目录下。提示
Are you installing a system-wide PEAR or a local copy?
(system|local) [system] :直接默认回车
显示
Below is a suggested file layout for your new PEAR installation. To
change individual locations, type the number in front of the
directory. Type ‘all’ to change all of them or simply press Enter to
accept these locations.
1. Installation base ($prefix) : d:\php
2. Temporary directory for processing : d:\php\tmp
3. Temporary directory for downloads : d:\php\tmp
4. Binaries directory : d:\php
5. PHP code directory ($php_dir) : d:\php\pear
6. Documentation directory : d:\php\docs
7. Data directory : d:\php\data
8. User-modifiable configuration files directory : d:\php\cfg
9. Public Web Files directory : d:\php\www
10. Tests directory : d:\php\tests
11. Name of configuration file : C:\Windows\pear.ini
12. Path to CLI php.exe : d:\php
1-12, ‘all’ or Enter to continue:
可以按1修改pear安装路径,比如修改为d:\pear,按11修改为d:\pear\pear.ini,完成后按enter确认。
Beginning install…
Configuration written to d:\pear\pear.ini…
Initialized registry…
Preparing to install…
installing phar://go-pear.phar/PEAR/go-pear-tarballs/Archive_Tar-1.3.2.tar…
installing phar://go-pear.phar/PEAR/go-pear-tarballs/Console_Getopt-1.2.3.tar…
installing phar://go-pear.phar/PEAR/go-pear-tarballs/PEAR-1.7.1.tar…
installing phar://go-pear.phar/PEAR/go-pear-tarballs/Structures_Graph-1.0.2.tar.
..
pear/PEAR can optionally use package “pear/XML_RPC” (version >= 1.4.0)
install ok: channel://pear.php.net/Archive_Tar-1.3.2
install ok: channel://pear.php.net/Console_Getopt-1.2.3
install ok: channel://pear.php.net/Structures_Graph-1.0.2
install ok: channel://pear.php.net/PEAR-1.7.1
PEAR: Optional feature webinstaller available (PEAR’s web-based installer)
PEAR: Optional feature gtkinstaller available (PEAR’s PHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR’s PHP-GTK2-based installer)
PEAR: To install optional features use “pear install pear/PEAR#featurename”
******************************************************************************
WARNING! The include_path defined in the currently used php.ini does not
contain the PEAR PHP directory you just specified:
<D:\pear\pear>
If the specified directory is also not in the include_path used by
your scripts, you will have problems getting any PEAR packages working.
Would you like to alter php.ini <D:\php\php.ini>? [Y/n] :
选Y修改php.ini
列出当前php.ini配置
php.ini <D:\php\php.ini> include_path updated.
Current include path : .;C:\php5\pear
Configured directory : D:\pear\pear
Currently used php.ini (guess) : D:\php\php.ini
Press Enter to continue:
回车
** WARNING! Old version found at D:\pear, please remove it or be sure to use the
new d:\pear\pear.bat command
The ‘pear’ command is now at your service at d:\pear\pear.bat
** The ‘pear’ command is not currently in your PATH, so you need to
** use ‘d:\pear\pear.bat’ until you have added
** ‘D:\pear’ to your PATH environment variable.
Run it without parameters to see the available actions, try ‘pear list’
to see what packages are installed, or ‘pear help’ for help.
For more information about PEAR, see:
http://pear.php.net/faq.php
http://pear.php.net/manual/
Thanks for using go-pear!
* WINDOWS ENVIRONMENT VARIABLES *
For convenience, a REG file is available under D:\pear\PEAR_ENV.reg .
This file creates ENV variables for the current user.
Double-click this file to add it to the current user registry.
双击 D:\pear\PEAR_ENV.reg ,将 D:\pear加入到当前用户环境变量中。
安装完成!
php基础测试 面试题
如何改进以下的这行php代码?这段代码可以被用来测试php工程师应聘者。
< ?
echo(”Search results for query: ” .$_GET[’query’] . “.”);
? >
这段代码非常适合用来测试一个php开发人员是否合格。因为这段代码并没有要求太多记忆上的东西(例如函数的记忆),但是对安全,性能,兼容性上都做了考察。
参考答案:
< ?php
if (isset($_GET[’query’]))
{echo ‘Search results for query: ‘,
htmlspecialchars($_GET[’query’], ENT_QUOTES), ‘.’;}
? >
改进的地方有 :
* 把php短标签(< ?)换成了长标签(< ?php),因为并非所有php环境都支持短标签
* 增加判断该全局变量是否存在,防止在某些环境下出现notice错误,而且在当前的例子里如果query无则没必要输出
* 把echo的”(”去掉,echo不是一个函数,没必要使用“(”
* 把字符串两边的双引号换成了单引号,提高了性能。因为双引号里的内容会被尝试进行变量和转义字符的解析。
* 对query这个get变量进行html过滤。防止输出html,这可能会带来包括xss在内的一些危险
* echo后面的字符串之间的间隔使用逗号而不是句号。因为句号之间的字符串会先被连接起来然后再输出,而,号只是按顺序输出。在这个例子里显然不需要先连接字符串。
看了以后发现自己是什么都懂,汗一个
truncate delete drop比较
注意:这里说的delete是指不带where子句的delete语句
相同点
truncate和不带where子句的delete, 以及drop都会删除表内的数据
不同点:
1. truncate和 delete只删除数据不删除表的结构(定义)
drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.
2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.
truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.
3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动
显然drop语句将表所占用的空间全部释放
truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage; truncate会将高水线复位(回到最开始).
4.速度,一般来说: drop>; truncate >; delete
5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及
使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用drop
想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete.
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据
用rsync对网站进行镜像备份
Linux系统下超强远程同步备份工具Rsync使用详解
rsync,remote synchronize
顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件。rysnc的官方网站:::URL::http://rsync.samba.org/,可以从上面得到最新的版本。当然,因为rsync是一款如此有用的软件,所以很多Linux的发行版本都将它收录在内了。你的Linux里并没有安装rsync,你可以按以下的安法自行安装:
一、安装过程
1.下载rsync
目前(2003年9月)最新的rsync版本是2.5.6,从rysnc的官方网站上下载一个回来:
# wget ::URL::http://ftp.samba.org/ftp/rsync/rsync-2.5.6.tar.gz
2.解压
# tar -xzpvf rsync-2.5.6.tar.gz
3.编译安装
# cd rsync-2.5.6/
# ./configure –prefix=/usr/local/rsync
# make
# make install
以上过程没有出现的话就安装好了,现在就有rsync命令可以用了,rsync命令放在
/usr/local/rsync/bin。用rsync命令可以去运行有rsync服务的服务器上抓取资料。
如果要把当前的机器变成一台rsync服务器的话,就需要继续进行一些配置了。
二、配置rsync服务
配置一个简单的rsync服务并不复杂,你需要修改或建立一些配置文件。
1.rsyncd.conf
# vi /etc/rsyncd.motd
rsyncd.con是rsync服务的主要配置文件,它控制rsync服务的各种属性,下面给出一个
rsyncd.conf文件的例子:
#先定义整体变量
secrets file = /etc/rsyncd.secrets
motd file = /etc/rsyncd.motd
read only = yes
list = yes
uid = nobody
gid = nobody
hosts allow = 192.168.100.90 #哪些电脑可以访问rsync服务
hosts deny = 192.168.100.0/24 #哪些电脑不可以访问rsync服务
max connections = 2
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
#再定义要rsync目录
[terry]
comment = Terry ‘s directory from 192.168.100.21
path = /home/terry
auth users = terry,rsync
[test]
comment = test rsync
path = /home/test
在上面的配置文件中,限定了192.168.100.0/24这个子网中,只有192.168.100.90的机器可以来访问这台rsync服务器的 rsync服务。配置文件的后面部分定义了两个rsync的目录,terry目录是只有知道terry、rsync两个账号的人才能使用的,而text目录是无需账号就可以访问的。rsync在定义目录时还提供了一些其它选项,可以作更严格的控制。
2.rsyncd.secrets
# vi /etc/rsyncd.secrets
rsyncd.secrets是存储rsync服务的用户名和密码的,它是一个明文的文本文件,下面给出一个rsyncd.secrets文件的例子:
terry:12345
rsync:abcde
因为rsyncd.secrets存储了rsync服务的用户名和密码,所以非常重要,因此文件的属性必须
设为600,只有所有者可以读写:
# chmod 600 /etc/rsyncd.secrets
3.rsyncd.motd
# vi /etc/rsyncd.motd
rsyncd.motd记录了rsync服务的欢迎信息,你可以在其中输入任何文本信息,如:
Welcome to use the rsync services!
4.services
# vi /etc/services
services并不是rsync的配置文件,这一步也可以不做。而修改了services文件的好处就在于
系统知道873端口对就的服务名为rsync。修改services的方法就是确保services中有如下两行,
没有的话就自行加入:
rsync 873/tcp # rsync
rsync 873/udp # rsync
5./etc/xinetd.d/rsync
# vi /etc/xinetd.d/rsync
建立一个名为/etc/xinetd.d/rsync文件,输入以下内容:
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/local/rsync/bin/rsync
server_args = –daemon
log_on_failure += USERID
}
保存后,就可以运行rsync服务了。输入以下命令:
# /etc/rc.d/init.d/xinetd reload
这样rsync服务就在这台机器上(192.168.100.21)运行起来了,接下来就是如何来使用它了。
三、rsync命令的用法
在配置完rsync服务器后,就可以从客户端发出rsync命令来实现各种同步的操作。rsync有很
多功能选项,下面就对介绍一下常用的选项:
rsync的命令格式可以为:
1. rsync [OPTION]… SRC [SRC]… [USER@]HOST : DEST]
2. rsync [OPTION]… [USER@]HOST:SRC DEST]
3. rsync [OPTION]… SRC [SRC]… DEST]
4. rsync [OPTION]… [USER@]HOST::SRC [DEST]
5. rsync [OPTION]… SRC [SRC]… [USER@]HOST :: DEST]
6. rsync [OPTION]… rsync://[USER@]HOST[:PORT]/SRC [DEST]
rsync有六种不同的工作模式:
1. 拷贝本地文件;当SRC和DES路径信息都不包含有单个冒号”:”分隔符时就启动这种工作模式。
2.使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST
路径地址包含单个冒号”:”分隔符时启动该模式。
3.使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC
地址路径包含单个冒号”:”分隔符时启动该模式。
4. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。
5. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::”分隔符时启动该模式。
6. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。
下面以实例来说明:
# rsync -vazu -progress terry@192.168.100.21:/terry/ /home
v详细提示
a以archive模式操作,复制目录、符号连接
z压缩
u只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时
-progress指显示
以上命令是保持客户机192.168.100.90上的/home/terry目录和rsync服务器上的terry目录同
步。该命令执行同步之前会要求你输入terry账号的密码,这个账号是我们前面在rsyncd.secrets
文件中定义的。如果想将这条命令写到一个脚本中,然后定时执行它的话,可以使用–password-file
选项,具体命令如下:
# rsync -vazu -progress –password-file=/etc/rsync.secret
terry@192.168.100.21:/terry/ /home
要使用–password-file选项,就得先建立一个存放密码的文件,这里指定为/etc/rsync.secret。
其内容很简单,如下:
terry:12345
同样要修改文件属性如下:
# chmod 600 /etc/rsyncd.secrets
四、利用rsync保持Linux服务器间的文件同步实例
现在假设有两台Linux服务器A(192.168.100.21)和B(192.168.100.90),服务器A中的
/home/terry和服务器B中的/home/terry这两个目录需要保持同步,也就是当服务器A中文件发生
改变后,服务器B中的文件也要对应去改变。
我们按上面的方法,在服务器A上安装rsync,并将其配置为一台rsync服务器,并将/home/terry
目录配置成rsync共享出的目录。然后在服务器B上安装rsync,因为B只做客户端,所以无需配置。
然后在服务器B,建立以下脚本:
#!/bin/bash
/usr/loca/rsync/bin/rsync -vazu -progress –delete
–password-file=/etc/rsync.secret terry@192.168.100.21:/terry/ /home
将这个脚本保存为AtoB.sh,并加上可执行属性:
# chmod 755 /root/AtoB.sh
然后,通过crontab设定,让这个脚本每30分钟运行一次。执行命令:
# crontab -e
输入以下一行:
0,30 * * * * /root/AtoB.sh
保存退出,这样服务器B每个小时的0分和30分时都会自动运行一次AtoB.sh,AtoB.sh是负责
保持服务器B和服务器A同步的。这样就保证了服务器A的所有更新在30钟后,服务器B也一样取
得了和服务器A一样的最新的资料。
五、其它应用
rsync除了同步文件及目录之外,还可以利用它来实现对远程网站的远程备份。如果再结合脚本和Crontab就能实现定时自动远程备份。其可以实现与商业化的备份和镜象产品的类似效果,但完全免费。
附:rsync有六种不同的工作模式:
1. 拷贝本地文件;当SRC和DES路径信息都不包含有单个冒号”:”分隔符时就启动这种工作模式。
2.使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST
路径地址包含单个冒号”:”分隔符时启动该模式。
3.使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC
地址路径包含单个冒号”:”分隔符时启动该模式。
4. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。
5. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::”分隔符时启动该模式。
6. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。
转载来源 http://qzone.qq.com/blog/286708518-1214758196
之前一直没有机会接触rsync,更没有想过要自己做这个东东,今天正好有个小需求用这个做,我就自己练习了一把,配置起来还算简单,下面把配置过程写出来,也是对自己的一个总结,更希望给别人也带来方便
我的系统:
vmware跑两个centos4.4,ip分别是153.129和153.130
使用的系统自带的rsync
目的:通过脚本把129上/tmp/·date +%Y`/`date +%m`/`date +%d`/目录下的所有文件同步到130的相同文件夹下,即把/tmp/2008/06/25下的文件同步到130上/tmp/2008/06/25下
实现过程:
先是129上的配置
vi /etc/rsyncd.conf
uid = daemon
gid = daemon
use chroot = no
max connections = 4 客户端最多连接数;
log file = /var/log/rsyncd.log 日志存放位置
pid file = /var/run/rsyncd.pid 注:告诉进程写到 /var/run/rsyncd.pid 文件中
lock file = /var/run/rsyncd.lock
read only = yes read only 是只读选择,也就是说,不让客户端上传文件到服务器上。
secrets file = /etc/rsyncd.secrets 密码存放文件
[file]
注:模块,它为我们提供了一个链接的名字,链接到哪呢,在本模块中,链接到了/tmp
path=/tmp
注:服务器端传输文件时,要发哪个用户和用户组来执行,默认是nobody。 如果用nobody 用户和用户组,可能遇到权限问题,有些文件从服务器上拉不下来。所以我就偷懒,为了方便,用了root 。不过您可以在定义要同步的目录时定义的模块中指定用户来解决权限的问题。
注:用chroot,在传输文件之前,服务器守护程序在将chroot 到文件系统中的目录中,这样做的好处是可能保护系统被安装漏洞侵袭的可能。缺点是需要超级用户权限。另外对符号链接文件,将会排除在外。也就是说,你在 rsync服务器上,如果有符号链接,你在备份服务器上运行客户端的同步数据时,只会把符号链接名同步下来,并不会同步符号链接的内容;这个需要自己来尝试;
接下来执行
echo “daemon:12345678″ >>/etc/rsyncd.secrets
创建密码文件,其中daemon是linux真实存在的用户,”:“后面的是这个帐户的密码,只要不是真实密码就行
然后执行
rsync –daemon
启动服务,到此129上的配置就完成了
然后是130client端的使用了
在130上执行
rsync -rulpogRv daemon@192.168.153.129::file/`date +%Y`/`date +%m`/`date +%d`/ /tmp/
下面来解释参数
r, –recursive 对子目录以递归模式处理
-R, –relative 使用相对路径信息
rsync foo/bar/foo.c remote:/tmp/
则在/tmp目录下创建foo.c文件,而如果使用-R参数:
rsync -R foo/bar/foo.c remote:/tmp/
则会创建文件/tmp/foo/bar/foo.c,也就是会保持完全路径信息。-u, –update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
-l, –links 保留软链结
-p, –perms 保持文件权限
-o, –owner 保持文件属主信息
-g, –group 保持文件属组信息
-v, –verbose 详细模式输出
执行上条命令后会看到如下输出
receiving file list … done
2008/06/
2008/06/25/
2008/06/25/php-5.2.6.tar.gz
2008/06/25/squid-2.7.STABLE2.tar.gz
sent 117 bytes received 13825070 bytes 3950053.43 bytes/sec
total size is 13823105 speedup is 1.00
并且并没有需要输入密码,这样就可以写出脚本并添加到crontab中自动执行了
这个我们可以结合crontab来自动备份我们重要的数据啦!
兴业银行cib网上银行登陆或支付出现"Applet加密程序未完全下载,请重试"
首先Java(微软)虚拟机是要安装的。
安装Oracle加载数据库错误areasQueries的解决
注意:安装时要保证Oracle安装目录不能带有中文字符
(如果第一次安装出现“加载数据库错误areasQueries”的错误,一般是因为Oracle安装目录带有中文字符的目录)
1. 停止所有关于Oracle的服务
2. 删除Oracle安装目录,主要分布在两个地方(如D盘跟目录下面以及C盘Program Files下面),删除时提示无法删除的错误,重新启动机器重新删除就可以了
3. 删除注册表里的内容
HKEY_LOCAL_MACHINE\SOFTWARE删除Oracle目录
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services以Oracle开头的键值
注意:安装时要保证Oracle安装目录不能带有中文字符
如果已经安装了ArcSDE For Oracle,在删除Oracle键值的时候,不能删除带有ArcSDE关键字的键值,否则容易造成ArcSDE无法运行。
转载来源 http://www.cnitblog.com/stomic/archive/2008/10/21/50524.html
兼容IE与FF的图片切换特效
这段代码轮翻渐隐显示多张图片,可以为每张图片加上不同的链接,优点在于兼容IE和FF浏览器,代码写得十分工整,建议初学JS的用户研究下,百度联盟首页的特效!
<script>
var links = new Array();
links[1] = “http://www.websbook.net“;
links[2] = “http://www.websbook.net“;
links[3] = “http://www.websbook.net“;
links[4] = “http://www.websbook.net“;
var imgs = new Array();
for(var n = 1; n <= 5; n++) imgs[n] = new Image();
imgs[1].src = “http://union.baidu.com/img/tongji550.gif“;
imgs[2].src = “http://union.baidu.com/img/banner071031.jpg“;
imgs[3].src = “http://union.baidu.com/img/dataunion0711.jpg“;
imgs[4].src = “http://union.baidu.com/img/umaz13_550.jpg“;
var tits = new Array();
tits[1] =”百度统计”;
tits[2] = “联盟杯摄影师大赛”;
tits[3] = “百度行业报告”;
tits[4] = “联盟志”;
var imgwidth = 550;//图片宽度
var imgheight = 134;//图片宽度
var str = “<style type=’text/css’>”;
str += “#imgnv{display:none;position:absolute;bottom:-1px;right:0;height:16px;}#imgnv div{float:left;margin-right:1px;}”;
str += “#imgnv div.on,#imgnv div.off{margin-bottom:1px;width:30px;height:15px;line-height:18px!important;line-height:15px;font-size:9px;text-align:center;cursor:pointer;cursor:hand}”;
str += “#imgnv div.on{background:#CE0609;color:#FFF;font-weight:bold}”;
str += “#imgnv div.off{background:#323232;color:#FFF;text-decoration:none}”;
str += “#titnv{margin-top:3px;color:#000;text-align:center;display:none;}”;
str += “</style>”;
str += “<div style=’position:relative’>”;
str += “<div><a id=’dlink’ href=’” + links[1] + “‘ target=’_blank’><img id=’dimg’ src=’” + imgs[1].src + “‘ border=’0′ width=’” + imgwidth + “‘ height=’”+imgheight+”‘ style=’filter:Alpha(opacity=100)’ onmouseover=’Pause(true)’ onmouseout=’Pause(false)’></a></div>”;
//修改点1:循环添加内层div内容以增加个数
str += “<div id=’imgnv’><div id=’it1′ class=’on’ onmouseover=’ImgSwitch(1, true)’ onmouseout=’Pause(false)’>1</div><div id=’it2′ class=’off’ onmouseover=’ImgSwitch(2, true)’ onmouseout=’Pause(false)’>2</div><div id=’it3′ class=’on’ onmouseover=’ImgSwitch(3, true)’ onmouseout=’Pause(false)’>3</div><div id=’it4′ class=’off’ onmouseover=’ImgSwitch(4, true)’ onmouseout=’Pause(false)’>4</div></div>”;
str += “<div id=’titnv’><b>” + tits[1] + “</b></div>”;
str += “</div>”;
document.write(str);
var oi = document.getElementById(“dimg”);
var pause = false;
var curid = 1;
var lastid = 1;
var sw = 1;
var opacity = 100;
var speed = 15;
var delay = (document.all)? 400:700;
function SetAlpha(){
if(document.all){
if(oi.filters && oi.filters.Alpha) oi.filters.Alpha.opacity = opacity;
}else{
oi.style.MozOpacity = ((opacity >= 100)? 99:opacity) / 100;
}
}
function ImgSwitch(id, p){
if(p){
pause = true;
opacity = 100;
SetAlpha();
}
oi.src = imgs[id].src;
document.getElementById(“dlink”).href = links[id];
document.getElementById(“it” + lastid).className = “off”;
document.getElementById(“it” + id).className = “on”;
document.getElementById(“titnv”).innerHTML = “<b>” + tits[id] + “</b>”;
curid = lastid = id;
}
function ScrollImg(){
if(pause && opacity >= 100) return;
if(sw == 0){
opacity += 2;
if(opacity > delay){ opacity = 100; sw = 1; }
}
if(sw == 1){
opacity -= 3;
if(opacity < 10){ opacity = 10; sw = 3; }
}
SetAlpha();
if(sw != 3) return;
sw = 0;
curid++;
//修改点2:这里的4也是个数
if(curid > 4) curid = 1;
ImgSwitch(curid, false);
}
function Pause(s){
pause = s;
}
function StartScroll(){
setInterval(ScrollImg, speed);
}
function CheckLoad(){
if (imgs[1].complete == true && imgs[2].complete == true) {
clearInterval(checkid);
setTimeout(StartScroll, 2000);
}
}
var checkid = setInterval(CheckLoad, 10);
</script>
转载来源 http://www.websbook.com/javascript/jrIEyFFdtpqhtx_14001.html
wordpress左右两列内容溢出自动换行
本博客是左右两栏式,左边是内容,右边是导航。之前有个缺点就是一旦左侧内容宽度过长就会把页面撑列,相当难看。之前都没花时间去看(懒啊,囧)。今天新增日志后再次出现,逼不得已,查看了一下css,把左侧的css控制代码改了一下,从此就规范了。方法很简单,就是添加左侧溢出隐藏和文字溢出换行。
#left
{
width: 580px;
padding: 10px;
}
改为
#left
{
width: 580px;
padding: 10px;
overflow:hidden;
word-break:break-all;
}
zen-cart模板设计
Zen Cart的模板设计比较复杂,需要一定的时间来熟悉。一旦你了解了它的结构,就会慢慢习惯了。
首先要阅读常见问答部分的:如何添加、制作新模板。 Zen Cart的设计没有什么特别,与以前设计HTML页面是一样的。只是整个页面分成了好几个部分,并加入了PHP代码。
通常,页面分为页眉(header),页脚(footer),边框(sideboxes)。所以设计页面的时候,要记住Zen Cart是如何组织这些页面的。
页面是通过CSS样式表来控制的。样式表控制表格单元的背景图案、字体的颜色和样式等等。所以,假如你需要修改边框标题栏的字体,那么查看样式表文件。
Zen Cart在页面添加图像有两种方式。可以使用图像目录的相对路径,或者在模板中用php变量定义图像。如果你使用https服务器,并且采用相对图像路径,那么https的图像目录下也要有同样的图像,否则https服务器很可能会给出警告提示。 www.444p.com
Zen Cart可以设置成任意的html/flash的界面,只是比通常的html页面的设计费时。你可以从修改缺省的模板开始,先修改CSS文件和三栏格式的界面。开始先采用不同的颜色,很快就可以设计出完全不同的风格。
最后,在设计模板前要先计划好你网页的内容,事半功倍。
下面是zen cart页面各部分相对应模板文件的一个列表:
| 文件路径 | 注释 |
| index.php | 主文件 |
| includes/templates/[custom template folder]/common/html_header.php | 页面的head部分 |
| includes/templates/[custom template folder]/common/tpl_main_page.php | 页面的body部分 |
| includes/templates/[custom template folder]/common/tpl_header.php | 所有页面的页眉 |
| (column left) | |
| includes/templates/[custom template folder]/common/main_template_vars.php | 决定页面的内容部分,缺省为 ‘tmp_index_default.php’ |
| 首页 – 缺省 | |
| includes/templates/[custom template folder]/templates/tmp_index_default.php | 首页模板文件 |
| 首页 – 显示分类 | |
| includes/templates/[custom template folder]/templates/tpl_index_categories.php | 首页上显示分类时的模板文件 |
| includes/modules/[custom template folder]/pages/index/category_row.php | 选择要显示的分类 |
| includes/templates/[custom template folder]/templates/tpl_index_category_row.php | 显示分类 |
| 首页 – 显示指定分类 | |
| includes/templates/[custom template folder]/templates/tpl_index_product_list.php | 首页上显示指定的分类时采用的模板文件 |
| includes/modules/[custom template folder]/product_listing.php | 将商品数据添加到数组 |
| includes/templates/[custom template folder]/templates/tpl_modules_product_listing.php | 显示商品数量和商品导航菜单 |
| includes/templates/[custom template folder]/common/tpl_list_box_content.php | 显示商品数组 |
| 商品信息页面 | |
| includes/templates/[custom template folder]/templates/tpl_product_info_display.php | 显示单件商品信息 |
| 购物车页面 | |
| includes/templates/[custom template folder]/templates/tpl_shopping_cart_default.php | 购物车页面 |
| (column right) | |
| includes/templates/[custom template folder]/common/tpl_footer.php | 所有页面的页脚 |
zencart下载模板复制模板方法
首先说明的是,这里只是说明复制网站模板的理论,用于学习用途,复制并使用未经授权的模板是非法的。
第一次写这类说明,没有经验,欢迎大家指正、补充。
这里以zen cart或者osc的模板为例,其他的模板也是同样的方法。
1. 首先在你的模板目录下,建立一个新的模板,例如:\includes\templates\mytemplate\
复制\includes\templates\template_default下的所有目录和文件到新的目录中
2. 用文本编辑器修改\includes\templates\mytemplate\template_info.php,修改其中的名称、版本、作者等内容。
3. 在后台打开新的模板,然后再工具-外观控制中,点击重置
4. 获取网站模板的图片
用整站下载软件实现,例如Teleport Pro,下载全站的所有图形文件,要保留原站的文件结构。
图片通常都在/images目录下,将下载到的/images下的图形文件都复制到zen cart的/images目录下。
5. 获取网站模板的按钮
也可以用Teleport Pro下载所有按钮,通常是英文的,osc的按钮图片在/includes/languages/english/images/buttons目录下。
将下载的按钮保存到zen cart的按钮目录/includes/templates/mytemplate/buttons/english/ 和 /includes/templates/mytemplate/buttons/schinese/ 中,在schinese目录中的按钮,可以自己用图像处理软件转换成中文。
osc模板中,可供下载的按钮有:
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_address_book.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_add_address.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_back.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_buy_now.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_change_address.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_checkout.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_confirm_order.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_continue.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_continue_shopping.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_delete.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_edit_account.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_in_cart.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_login.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_notifications.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_quick_find.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_remove_notifications.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_reviews.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_search.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_shipping_options.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_tell_a_friend.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_update.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_update_cart.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/button_write_review.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/small_delete.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/small_edit.gif
http://www.domainname.com/osc/includes/languages/english/images/buttons/small_view.gif
类似的,zen cart模板的按钮有
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_add_address.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_back.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_buy_now.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_change_address.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_checkout.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_confirm_order.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_continue.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_continue_shopping.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_delete.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_download.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_in_cart.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_login.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_next.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_ppcheckout.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_prev.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_redeem.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_return_to_product_list.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_reviews.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_search.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_send.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_shipping_estimator.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_sold_out.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_sold_out_sm.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_submit.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_TellAFriend.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_tell_a_friend.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_unsubscribe.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_update.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_update_cart.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_write_review.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/small_delete.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/small_edit.gif
http://www.domainname.com/zencart/includes/languages/english/images/buttons/small_view.gif
上面的列表中,自己替换www.domainname.com/osc 或者 www.domainname.com/zencart 为你需要复制的网站地址。
6. 获取网站模板的CSS文件。osc的stylesheet.css文件在根目录下。stylesheet.css文件的具体路径在查看页面源代码时能看到。
打开获得的stylesheet.css文件,剪贴到/includes/templates/mytemplate/css/stylesheet.css文件中,追加在原来的css文件后,不要覆盖原有的内容。
7. 打开需要复制的zen cart或者osc网站,查看源代码。(有些网站不允许你查看源代码,要一些技巧,这里就不详细讨论这个问题了)
8. 在源代码中复制
<!– header //–> 到 <!– header_eof //–> 之间的内容作为\includes\templates\mytemplate\common\tpl_header.php,删除该文件内原来的内容。
<!– footer //–> 到 <!– footer_eof //–> 之间的内容作为\includes\templates\mytemplate\common\tpl_footer.php,删除该文件内原来的内容。
(有些模板把边框部分的显示也放到header.php中,那么你需要找出属于边框的部分并删除)
9. 现在,整个网站的外观已经基本出来了。需要替换上面的这两个文件内的链接,这里是模板转换的关键。根据下面的模式替换,第一行是需要替换的类似链接,第二行是正确的代码:
http://www.domainname.com/osc/index.php
<?php echo zen_href_link(FILENAME_DEFAULT); ?>
http://www.domainname.com/osc/account.php
<?php echo zen_href_link(FILENAME_ACCOUNT, ”, ‘SSL’); ?>
http://www.domainname.com/osc/shopping_cart.php
<?php echo zen_href_link(FILENAME_SHOPPING_CART, ”, ‘NONSSL’); ?>
http://www.domainname.com/osc/checkout_shipping.php
<?php echo zen_href_link(FILENAME_CHECKOUT_SHIPPING, ”, ‘SSL’); ?>
http://www.domainname.com/osc/shipping.php
<?php echo zen_href_link(FILENAME_SHIPPING); ?>
http://www.domainname.com/osc/advanced_search.php
<?php echo zen_href_link(FILENAME_ADVANCED_SEARCH); ?>
http://www.domainname.com/osc/products_new.php
<?php echo zen_href_link(FILENAME_PRODUCTS_NEW); ?>
http://www.domainname.com/osc/specials.php
<?php echo zen_href_link(FILENAME_SPECIALS); ?>
http://www.domainname.com/osc/featured_products.php
<?php echo zen_href_link(FILENAME_FEATURED_PRODUCTS); ?>
http://www.domainname.com/osc/products_all.php
<?php echo zen_href_link(FILENAME_PRODUCTS_ALL); ?>
http://www.domainname.com/osc/upcoming_products.php
<?php echo zen_href_link(FILENAME_UPCOMING_PRODUCTS); ?>
http://www.domainname.com/osc/contact_us.php
<?php echo zen_href_link(FILENAME_CONTACT_US); ?>
还有一些必须的代码包括,
用户登录、登出的代码:
<?php if ($_SESSION['customer_id']) { ?>
<a href=”<?php echo zen_href_link(FILENAME_LOGOFF, ”, ‘SSL’); ?>”><?php echo HEADER_TITLE_LOGOFF; ?></a>&nbsp;|&nbsp;
<a href=”<?php echo zen_href_link(FILENAME_ACCOUNT, ”, ‘SSL’); ?>”><?php echo HEADER_TITLE_MY_ACCOUNT; ?></a>
<?php
} else {
if (STORE_STATUS == ’0′) {
?>
<a href=”<?php echo zen_href_link(FILENAME_LOGIN, ”, ‘SSL’); ?>”><?php echo HEADER_TITLE_LOGIN; ?></a>
<?php } } ?>
货币选择方框的代码:
<?php
if (isset($currencies) && is_object($currencies)) {
reset($currencies->currencies);
$currencies_array = array();
while (list($key, $value) = each($currencies->currencies)) {
$currencies_array[] = array(‘id’ => $key, ‘text’ => $value['title']);
}
$hidden_get_variables = ”;
reset($_GET);
while (list($key, $value) = each($_GET)) {
if ( ($key != ‘currency’) && ($key != zen_session_name()) && ($key != ‘x’) && ($key != ‘y’) ) {
$hidden_get_variables .= zen_draw_hidden_field($key, $value);
}
}
}
$content = zen_draw_form(‘currencies’, zen_href_link(basename(ereg_replace(‘.php’,”, $PHP_SELF)), ”, $request_type, false), ‘get’);
$content .= zen_draw_pull_down_menu(‘currency’, $currencies_array, $_SESSION['currency'], ‘onchange=”this.form.submit();” style=”width: 100%”‘) . $hidden_get_variables . zen_hide_session_id();
$content .= ‘</form>’;
echo $content;
?>
语言选择的代码:
<?php
if (!isset($lng) || (isset($lng) && !is_object($lng))) {
$lng = new language;
}
$lng_cnt = 0;
while (list($key, $value) = each($lng->catalog_languages)) {
$content .= ‘<a href=”‘ . zen_href_link($_GET['main_page'], zen_get_all_get_params(array(‘language’, ‘currency’)) . ‘language=’ . $key, $request_type) . ‘”>’ . zen_image(DIR_WS_LANGUAGES . $value['directory'] . ‘/images/’ . $value['image'], $value['name']) . ‘</a>&nbsp;&nbsp;’;
$lng_cnt ++;
if ($lng_cnt >= MAX_LANGUAGE_FLAGS_COLUMNS) {
$lng_cnt = 0;
$content .= ‘<br />’;
}
}
echo $content;
?>
经过以上的替换,tpl_header.php和tpl_footer.php中所有的外部链接都应该替换为你自己的链接了。
如果还有类似 http://www.domainname.com/osc/index.php?cPath=37_28 的链接,这是单个商品的链接,可以删除,或改成你自己的商品链接。
10. 下一步,将tpl_header.php和tpl_footer.php这两个文件中的文字,替换为PHP代码,以支持多语言。如果你只用单一语言,直接修改为你需要的文字即可。例如,
类似 “创建帐号” 改为 <?php echo HEADER_TITLE_CREATE_ACCOUNT; ?>
类似 “商品分类” 改为 <?php echo HEADER_TITLE_CATALOG; ?>
类似 “登出” 改为 <?php echo HEADER_TITLE_LOGOFF; ?>
类似 “我的帐号” 改为 <?php echo HEADER_TITLE_MY_ACCOUNT; ?>
类似 “登录” 改为 <?php echo HEADER_TITLE_LOGIN; ?>
类似 “购物车中的货品” 改为 <?php echo HEADER_TITLE_CART_CONTENTS; ?>
类似 “结帐” 改为 <?php echo HEADER_TITLE_CHECKOUT; ?>
类似“搜索”改为 <?php echo BOX_HEADING_SEARCH; ?>
类似“高级搜索”改为 <?php echo BOX_SEARCH_ADVANCED_SEARCH; ?>
类似 “特价商品” 改为 <?php echo CATEGORIES_BOX_HEADING_SPECIALS; ?>
类似 “新进商品” 改为 <?php echo CATEGORIES_BOX_HEADING_WHATS_NEW; ?>
类似 “推荐商品” 改为 <?php echo CATEGORIES_BOX_HEADING_FEATURED_PRODUCTS; ?>
类似 “所有商品” 改为 <?php echo CATEGORIES_BOX_HEADING_PRODUCTS_ALL; ?>
类似 “联系我们” 改为 <?php echo BOX_INFORMATION_CONTACT; ?>
类似 “货币” 改为 <?php echo BOX_HEADING_CURRENCIES; ?>
类似 “语言” 改为 <?php echo BOX_HEADING_LANGUAGES; ?>
还有一些可能用到的代码:
引文:
<?php echo TEXT_YOUR_IP_ADDRESS . ‘ ‘ . $_SERVER['REMOTE_ADDR']; ?>
<?php echo FOOTER_TEXT_BODY; ?>
<div>Parse Time: <?php echo $parse_time; ?> – Number of Queries: <?php echo $db->queryCount(); ?> – Query Time: <?php echo $db->queryTime(); ?></div>
经过以上的十步操作,基本形成了网站的外观,下面要调整边框的模板了。待续。
——————————————————————————-
补充:sideboxes里的模块随意插入到网页任意位置方法
参考search_header.php的做法:
把
require($template->get_template_dir($column_box_default, DIR_WS_TEMPLATE, $current_page_base,’common’) . ‘/’ . $column_box_default);
改为
require($template->get_template_dir (‘tpl_box_你自定义的文件名.php’,DIR_WS_TEMPLATE, $current_page_base,’common’). ‘/tpl_box_你自定义的文件名.php’);
在common目录下建立此文件名:tpl_box_你自定义的文件名.php
内容:<?php echo $content; ?>
插入模块时参考写法:<?php require(DIR_WS_MODULES . ‘sideboxes/’ . ‘search_header.php’); ?>
最新评论