php模板显示浏览器眉头有空行解决方法
最近在写php时,莫名其妙的浏览器头多出一行空行,在网上搜索一下,大致都是把文件保存为非BOM的UTF-8格式,在本地也解决了,但是上传到服务器依然有空行,搞了一个上午,都快崩溃了,最后决定自己想办法解决,经过几个小时的摸索终于有了完美解决方法了。
运用php显示缓冲区显示原理,成功去掉
在php的头上加一行ob_start(); 然后再模板显示前加个ob_end_clean(); 在模板显示后加个ob_end_flush();
这样问题就解决了,现在给出整体结构实例代码:
<?php
ob_start();
//此处为php逻辑操作
ob_end_clean();
//此处为php模板显示
ob_end_flush();
?>
oscommerce 3.0 人民币添加
oscommerce 3.0 安装后是没有人民币的,在oscommerce 3.0 添加货币是很简单的,在后台'网店主要设置管理'->'货币管理'中点击'插入'按钮,填入如下选项值:
名称:人民币
代码:CNY
左侧符号:¥
右侧符号:元
小数位数:2
币值:6.83056021
填好后点击"保存"按钮,如果要设置为默认货币,点击默认.
oscommerce 支持网络货币汇率更新,点击眉头上的"更新货币汇率"按钮,选择XE (http://www.xe.com)更新,以为第一个会报错,第二个比较正常,这样你的汇率就是最新的了.现在人民币就添加成功了.呵呵.欢迎查看本人的oscommerce 3.0中文和添加模板.
oscommerce 3.0 中文及模板定制
oscommerce 3.0 alpha 5已经释放好几个月了,最近一直搞zen-cart开发国外电子商务网站,已经习惯了zen-cart模式,oscommerce 2.2一直没有去学习,因为在我进入电子商务的时候我的前辈推荐我使用zen-cart,zen-cart是oscommerce的重构版本,比oscommerce好用.后来一直没有看,包括我在网上看到zen-cart和oscommerce的比较评价都是zen-cart好于oscommerce,最近在无意中发现oscommerce 3.0 alpha 5,于是随便看看,发现现在的oscommerce 3.0的文件结构都重构过了.个人觉得文件结构的安排比zen-cart好.并且oscommerce 3.0支持面向对象编程.也许面向对象编程成为php发展的趋势.
oscommerce 3.0的文档几乎就没有什么,在网上聊聊无几,很多记录和这个oscommerce 3.0根本毫无关系.
下面介绍怎么添加oscommerce 3.0的模板吧.
首先我们到www.oscommerce.com的官网下载最新的3.0 alpha 5,下载地址
然后下载中文语言包,下载地址
在apache+php环境中部署好,然后安装.我想这些大家都明白.不明白就去网上查找一下相关资料
然后把下载好的中文语言包解压覆盖源文件的相关目录,这是进入后台就会有中文的选择了.
接下来就是模板的添加了,这个和zen-cart不是一样,但是很相似.就是在templates目录里添加要增加的模板目录和模板首页例如我们要添加一个test模板,现在在templates目录里建立一个test目录还有一个test.php文件,这个test.php文件可以复制default.php然后修改成自己想要的样子.接下来也是最关键的一步就是在admin\includes\templates中增加一个test.php文件.文件复制这个目录下的default.php文件然后修改几个地方:类名中default替换成test有两处,一处15行处的class osC_Template_test ,还有一处是18行$_code = 'test'.17行的$_title = 'osCommerce test Template'修不修改问题不是太大,但是最好修改,这样有助于阅读分别.接下来进入后台查看templates中多出一个模板选项("osCommerce test Template"),这样一个模板就建立成功了.
模板建立好了,接下来就是货币本地化,欢迎查看oscommerce 3.0添加人民币.
SyntaxHighlighter brush的文本对应表
| Brush name | Brush aliases | File name |
|---|---|---|
| ActionScript3 | as3, actionscript3 | shBrushAS3.js |
| Bash/shell | bash, shell | shBrushBash.js |
| C# | c-sharp, csharp | shBrushCSharp.js |
| C++ | cpp, c | shBrushCpp.js |
| CSS | css | shBrushCss.js |
| Delphi | delphi, pas, pascal | shBrushDelphi.js |
| Diff | diff, patch | shBrushDiff.js |
| Groovy | groovy | shBrushGroovy.js |
| JavaScript | js, jscript, javascript | shBrushJScript.js |
| Java | java | shBrushJava.js |
| JavaFX | jfx, javafx | shBrushJavaFX.js |
| Perl | perl, pl | shBrushPerl.js |
| PHP | php | shBrushPhp.js |
| Plain Text | plain, text | shBrushPlain.js |
| PowerShell | ps, powershell | shBrushPowerShell.js |
| Python | py, python | shBrushPython.js |
| Ruby | rails, ror, ruby | shBrushRuby.js |
| Scala | scala | shBrushScala.js |
| SQL | sql | shBrushSql.js |
| Visual Basic | vb, vbnet | shBrushVb.js |
| XML | xml, xhtml, xslt, html, xhtml | shBrushXml.js |
CSS中背景图片定位方法
图片定位可以使用光影魔术手,和Photoshop来查看.
在CSS中,背景图片的定位方位有3种:
1)关键字:background-position: top right;
2)像素:background-position: 0px 0px;
3)百分比:background-position: 0% 0%;
上面这三句语句,都将图片定位在背景的左上角,表面上看效果是一样的,实际上第三种定位机制与前两种完全不同。
前两种定位,都是将背景图片左上角的原点,放置在规定的位置。请看下面这张图,规定的位置是“20px 10px”和"60px 50px",都是图片的原点在那个位置上,图中用X表示。

但是第三种定位,也就是百分比定位,不是这样。它的放置规则是,图片本身(x%,y%)的那个点,与背景区域的(x%,y%)的那个点重合。比如,如果放置位置是“20% 10%”,实际结果如下图,可以看到这个点是在图片本身的“20% 10%”的位置上。

下面是一个有趣的例子。
背景图片是四个边长为100px的方块叠在一起:

请问怎样才能将其横过来:

答案是,在网页中先设置四个div区域:
然后,这样编写CSS:
.box1, .box2, .box3, .box4 {
float:left;
width:100px;
height:100px;
position:relative;
background: #F3F2E2 url(1234.png) no-repeat;
}
.box1 {
background-position:0% 0%;
}
.box2 {
background-position:0% 33.33333%;
}
.box3 {
background-position:0% 66.66666%;
}
.box4 {
background-position:0% 100%;
}
最后的效果。可以看到第二和第三个方块的设置,并不是一般想象中的“0% 25%”和“0% 75%”。
不过说实话,这个例子用像素设置法更容易一些。使用百分比设置的主要优势在于,当页面缩放的时候,背景图片也会跟着一起缩放
域名泛解析
现在我们要在一个空间放置多个二级域名,废话少说,直接进入主题.
例子:
1、http://blog.vouov.com/
2、http://music.google.cn/
以上这种形式的域名具体是怎么实现的呢?就PHP程序中涉及到得简单说一下
一、要做一个域名泛解析,就是说将 *.domain.com 解析到你的空间[服务器]上
二、要做一个服务器的泛解析,就apache来讲,要在apache的配置文件http.conf(具体的环境具体的文件名,自己注意下)中(直接添加到该配置文件的最后即可)
ServerAdmin yuminglong@yeah.net DocumentRoot /www/vouov ServerName vouov.com ServerAlias *.vouov.com
三、rewrite 重写路径
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.vouov\.com$
RewriteRule ^/?$ /%{HTTP_HOST}
RewriteRule ^/([a-z0-9\-]+)\.vouov\.com/?$ /rewrite.php?u=$1 [L]
#含义是 例如test.vouov.com,将隐式打开的是www.vouov.com/rewrite.php?u=test这个页面
#注意:将这些放到一个.htaccess文件,然后放到网站根目录即可
#必须保证apache配置文件中的重写应用要打开,一般的空间供应商已默认打开这个模块了.如果没有打开按以下方法打开
1、去掉LoadModule rewrite_module modules/mod_rewrite.so前面出现的#号,即去掉注释
2、AllowOverride none改为AllowOverride All,在http.conf文件中搜索即可找到,修改即可
#rewrite更多规则可以参考apache文档
除了应用重写规则,我们也可以在PHP程序中来处理这些事情,
//二级域名
if(!isset($_GET['do']) && $_SCONFIG['allowdomain']) {
$hostarr = explode(’.’, $_SERVER['HTTP_HOST']);
$domainrootarr = explode(’.’, $_SCONFIG['domainroot']);
if(count($hostarr) > 2 && count($hostarr) > count($domainrootarr) && $hostarr[0] != ‘www’ && !isholddomain($hostarr[0])) {
showmessage(’enter_the_space’, $_SCONFIG['siteallurl'].’space.php?domain=’.$hostarr[0], 0);
}
}
注意:
第一步和第二步提到的泛解析问题,要注意的是如果我们做了真的做了 *.vouov.com的泛解析,那么任何二级域名,例如blog.vouov.com,就是之前我们做过的二级域名都将受到重写规则的影响,譬如我们之前的二级域名blog是解析到/www/vouov/blog目录的,那么做过以上三步之后,打开blog.vouov.com,实际打开的也是vouov.com/rewrite.php?u=blog,所以我们最好在重写规则中来修改blog的重写或者是在第二步中修改服务器的泛解析,将第二步中的ServerAlias *.vouov.com改为我们想要的二级域名
以上几种方法就是比较常用的二级域名实现.不要一直看,还不快动手试试.