jxyuhua的地盘

PHP WEB开发 电子商务

用户操作
[即时聊天] [发私信] [加为好友]
阿华ID:jxyuhua
109570次访问,排名805好友0人,关注者4
jxyuhua的文章
原创 124 篇
翻译 2 篇
转载 8 篇
评论 44 篇
jxyuhua的公告
Dict.CN 在线词典, 英语学习, 在线翻译
最近评论
mohroq:wow gold,
ruikun:为了 这个收录数量,多少个日夜我没睡好觉!哎,谁让咱做seo工作呢?
ruikun:不错,是我经常关注的地方!也希望能在这片田地里看到属于我们初学者的东西!有经验的朋友能讲一下心得,分享一下php的技巧,不但能给予像我等初学者一些走捷径的好处,还能给自己巩固记忆和不断完善的动力!编程,虽然很累,但,我选择,我喜欢!
ruikun:我现在想的是:怎么快速的学习到php的要领!
tenfoon:[Thu Mar 8 16:42:00 2007] [error] PHP Warning: require_once(Zend/Search/Lucene.php) [function.require-once]: failed to open stream: No such file or directory i……
文章分类
收藏
相册
我的简历
我的图片
我的作品
b2c-battery商务网站
Civilianshop(Books,Music,Video,ELectronics)
jess-tour爵士之旅
newsunshine新阳光电子
power198资讯网
reviewdigital数码信息网
Sell Digital cameras
sunpower电池网站
top-batteries.com电池网站
top-battery.cn
友情链接
jxyuhua的地盘
SOL's Blog(RSS)
渡虎谷的爱情故事
益草堂凉茶
钢结构之家
站点链接
PHP PEAR
Smarty Template
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 我心中的PHP写法收藏

新一篇: Google发布日程表应用Google Calendar | 旧一篇: AJAX根据邮政编码,自动完成城市和地址信息

用PHP已经有很长一段时间了,虽然水平也就这样,但今天还是鼓足勇气,把我自己的一些想法记录于此。方便自己日后使用。有点乱,等以后再继续完善。

首先常用的函数,类库放在一个公共目录中,网站的配置信息存放在一个公共文件中如config.php,
条件允许的话,可以放在非WEB目录中。

我借鉴了osCommerce的一些写法,比如将公用文件放在includes
/application_top.php中。
在很多时候,include_path会搞得人头痛,因此不如将它取消,全部用自己定义的include_path值
<?php
 
//防止直接访问此文件
  if (eregi("application_top.php",$_SERVER['PHP_SELF'])) {
   
header("location: ../index.php");
   
die();
  }
 
if(preg_match('/windows/i', $_ENV['OS'])) {
   
$include_separator = ';';
  }
else {
     
$include_separator = ':';
  }
 
require_once('config.php');
 
$include_path = DIR_WS_INCLUDES . $include_separator .
                  DIR_WS_INCLUDES
. 'smarty' . $include_separator .
                  DIR_WS_INCLUDES
. 'class' . $include_separator .
                  DIR_WS_INCLUDES
. 'PEAR' . $include_separator;
 
ini_set('include_path', $include_path); 
 
require_once("function.php");
?>

数据库连接

最好采用数据库连接层,如PEAR
::DB,不要直接用具体的PHP数据连接函数如:mysql_connect等,
如果非要用的话,等有一天你要换数据库的时候,你就知道了什么叫。现在php5
.1有了一个PDO,以后这种情况可能好些。

说到数据库连接,就要讲到SQL语句了,因为网站的SQL语句会出现多次重复使用的情况,因此我将一些通用的SQL语句
全部放在了一个PHP文件,然后需要用的时候,就调用它们如:
<?php
define('_SQL_CATEGORIES_BY_SID', "SELECT c.categories_id, c.categories_name FROM " .
             TABLE_CATEGORIES
. " c INNER JOIN " . TABLE_CATEGORIES . " sub_c " .
      
"ON c.categories_id = sub_c.parent_id WHERE sub_c.categories_id = %d LIMIT 1");   
?>
这样就避免了数据库结构有变化的时候,大规模的修改SQL语句的情况。
在数据库资料的入库和出库的时候,需要进行处理,这些处理最好中放到单独的函数中,避免直接用类似于addslashes()之类
的函数来处理,那样很不灵活,当要增加一些额外的动作时,就需要更改所有使用到它们的地方。
<?php
 
//处理传递过来的值
  $_GET  = array_map('getSafeValue', $_GET);
 
$_POST = array_map('getSafeValue', $_POST);
?>
<?php
 
function getSafeValue($value)
  {
     
//如果get_magic_quotes_gpc打开了,则不处理,否则用addslashes处理
      if (! get_magic_quotes_gpc()) {
         
return addslashes($value);
      }
else {
         
return $value;
      }
  } 
?>

模板

用模板的好处,就是在当你要改版面的时候,工作量少一点。我用的是Smarty模板,以前在模板中用了很多的模板
自己的逻辑判断,觉得这样不好,应该尽量地将这些逻辑判断交给PHP来处理,模板只要显示就可以了:
<%$variable%>
另外如果采用DIV
+CSS的话,改起版面来就可以更加方便。
<div id="product"><%$variable%></div>

缓存加速

打开Smarty的Cache功能,这样第二次访问页面就是访问接近HTM的页面了,结合GZIP压缩输出,使访问速度可以更快一些。

<?php
 
// if gzip_compression is enabled, start to buffer the output
  if ( ($ext_zlib_loaded = extension_loaded('zlib')) && (PHP_VERSION >= '4') ) {
   
if (($ini_zlib_output_compression = (int)ini_get('zlib.output_compression')) < 1) {
     
if (PHP_VERSION >= '4.0.4') {
       
ob_start('ob_gzhandler');
      }
    }
else {
     
ini_set('zlib.output_compression_level', 9);
    }
  }
?>

<?php
/*
  $Id: jxyuhua.php,v 1.4 February 26, 2006, 8:24 pm hpdl Exp $
*/
 
require_once 'includes/application_top.php';
 
if(! $class_smarty->is_cached(TPL_NAME, $cache_id)) {
     
//逻辑处理
  }
 
//显示内容
  $class_smarty->display(TPL_NAME, $cache_id);
 
require_once DIR_WS_INCLUDES . 'includes/application_bottom.php';
?>

发表于 @ 2006年04月02日 21:07:00|评论(loading...)|编辑

新一篇: Google发布日程表应用Google Calendar | 旧一篇: AJAX根据邮政编码,自动完成城市和地址信息

评论

#继续完善吧 发表于2006-04-03 08:52:00  IP: 219.238.185.*
写的不错

继续关注
#ShiningRay 发表于2006-04-03 18:36:00  IP: 58.241.84.*
PHP有很多现成框架
可以直接用
#rsii 发表于2006-11-14 17:43:00  IP: 59.124.240.*
if (eregi("application_top.php",$_SERVER['PHP_SELF'])) {
....
die();
}
//我的寫法跟你很類似,不過這些都都不能擋curl的攻擊


include_path
//路徑的部份,我都引用絕對路徑,由一個array做控管,所以我沒有用這個方法,目前也都沒有預到路徑的問題困繞




#ruikun 发表于2007-07-04 08:45:21  IP: 211.96.69.*
不错,是我经常关注的地方!也希望能在这片田地里看到属于我们初学者的东西!有经验的朋友能讲一下心得,分享一下php的技巧,不但能给予像我等初学者一些走捷径的好处,还能给自己巩固记忆和不断完善的动力!编程,虽然很累,但,我选择,我喜欢!
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © jxyuhua