毛蛋(maoegg)网

——只为技术而存在

正在浏览 PHP之邦 里的文章

NextGEN Gallery

经典的一款Wrodpress图片画廊插件,可以通过上传zip压缩包的形式批量上传图片,非常强大。 继续阅读

推荐一个wordpress置顶插件-WP-Sticky。

WP-Sticky插件的安装:

下载WP-Sticky 插件,将文件解压缩,上传到/wp-content/plugins/目录。

登录wordpress后台控制面板,点击“Plugins”找到上传的插件,激活该插件,你可以在后台的管理页面的Setting–>WP-Sticky,对这个插件进行相关的设置,你可以设置文章置顶的方式、设置显示的日期,你可以根据自己的需求进行适当的设置。

使用方法:

安装成功后,当你发布新文章的时候,会看到页面的右下方出现一个“Post Sticky Status”,除了Normal和Sticky外,还有一个Announcement的选项,此三者的差别如下:

Announcement:这个选项能实现置顶效果,一直都会留在最上头
Sticky:虽然也是置顶,但它只对那些与置顶文章同一天发表的其它文章有效,以后的文章还是会排到它的上面
Normal:预设值,不对文章进行任何设定,当想取消置顶的时候,就选这个选项。
这款插件使用起来很简单,安装也比较方便,不用加入任何代码。

备份和导入WordPress的友情链接也就是Blogroll的方法

 备份
打开这个链接:http://maoegg.com/wp-links-opml.php,将里面的内容用记事本保存为OPML文件,即以”.xml”结尾的文件。最好把属性改为”utf-8″,因为WP语言支持是utf-8的。
 把maoegg.com 换成你的域名.

 导入
进入Manage > Links, 点击”add new“
会在侧边栏发现”Import Links“, 点击进入.
把刚才保存的.xml文件导入即可, 还可以选择链接分类.

注: 如果你的OPML文件保存在其它服务器上并且可以通过绝对路径访问, 那你也可以在左边的输入框输入OPML文件的URL地址.

如果我们要在根目录安装WordPress,根目录就会被WordPress的文件弄得很乱,如果再添加了自己的一些目录就更加难以维护了。不过还好,WordPress允许将Blog主页不同于 WordPress 的安装目录的Web地址,这样我们就可以把WordPress放在子目录中,只需要简单的设置便可以让链接形式仍以根目录显示。这篇文章翻译自WordPress官方文档,下面是译文:

  把WordPress放在在单独目录中而让你的博客显示在根目录

  很多人想让WordPress来驱动他们站点的根目录(例如:http://example.com),但是他们不想让所有的的WordPress文件把他们的根目录弄乱。WordPress允许你把WordPress文件放在一个子目录,同时让你的博客显示在站点的根目录中。
把WordPress放到单独它单独目录下的程序如下:

  1、新建一个用来存放WordPress核心文件的新文件夹(本例以/wordpress示范)。

  2、进入选项options)面板。 继续阅读

1、获取特定时间内文章的代码
<?php
  function filter_where($where = ”) {
    //最近30天
    //$where .= ” AND post_date > ‘” . date(‘Y-m-d’, strtotime(‘-30 days’)) . “‘”;
    //最近第30-60天
    //$where .= ” AND post_date >= ‘” . date(‘Y-m-d’, strtotime(‘-60 days’)) . “‘” . ” AND post_date <= ‘” . date(‘Y-m-d’, strtotime(‘-30 days’)) . “‘”;
    //从2009年3月1日到3月15日的
    $where .= ” AND post_date >= ‘2009-03-01′ AND post_date <= ‘2009-03-15′”;
    return $where;
  }
add_filter(‘posts_where’, ‘filter_where’);
query_posts($query_string);
?> 继续阅读

最新文章

<?php query_posts(’showposts=5′); ?>
<ul>
<?php while (have_posts()) : the_post(); ?>
<li><a href=”<?php the_permalink() ?>”><?php the_title(); ?></a></li>
<?php endwhile;?>
</ul>

最新评论

<?php
global $wpdb; 继续阅读

1.后台编辑 主题 的 functions.php文件,在主循环语句(也就是第一个?php后面)输入以下代码,注意,一定要在第一个<? php后面,否则会提示出错:

function colorCloud($text) {
$text = preg_replace_callback(‘|<a (.+?)>|i’, ‘colorCloudCallback’, $text);
return $text;
}
function colorCloudCallback($matches) {
$text = $matches[1];
$color = dechex(rand(0,16777215));
$pattern = ‘/style=(\’|\”)(.*)(\’|\”)/i’;
$text = preg_replace($pattern, “style=\”color:#{$color};$2;\””, $text);
return “<a $text>”;
}
add_filter(‘wp_tag_cloud’, ‘colorCloud’, 1);

可以看到,颜色是随机的,可以自行修改 $color = dechex(rand(0,16777215)); 这个参数来修改颜色显示范围,挑出你喜欢的颜色效果。
继续阅读

中文包由三部分组成:安装文件中文包(install_zh-CN.zip),前台中文包(zh-CN_site.zip),后台中文包(zh-CN_admin.zip)
适用于joomla1.6joomla1.6.1

安装文件中文包(install_zh-CN.zip) 提取码:f51fe4bc20
前台中文包(zh-CN_site.zip) 提取码:f5d83562d9
后台中文包(zh-CN_admin.zip) 提取码:f5d1619ee0

注:本资源来自joomlask.com

另:

根据汉化团队的最新消息,汉化团队进一步完善了Joomla1.6的简体中文语言校定,这次整合了前台后的中文语言包为一个整体安装包!加上Joomla1.6.1的更新解决了语言包无法安装的问题。

Joomla1.6.1_Simplified_Chinese_Package 2011-03-14 11:00:00-05 zh-CN.zip 202 KB 98

  UTF-8匹配:

  在javascript中,要判定字符串是中文是很简朴的。比如:

  var str = “php编程”;

  if (/^[\u4e00-\u9fa5]+$/.test(str)) {

  alert(“该字符串全部是中文”);

  }

  else{

  alert(“该字符串不全部是中文”);

  }

  php中,是用\x表示十六进制数据的。于是,变换成如下的代码:

  $str = “php编程”;

  if (preg_match(“/^[\x4e00-\x9fa5]+$/”$str)) {

  print(“该字符串全部是中文”);

  } else {

  print(“该字符串不全部是中文”);

  } 继续阅读

<?php
function is_mobile(){
// returns true if one of the specified mobile browsers is detected

$regex_match=”/(nokia|iphone|android|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|”;
$regex_match.=”htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|”;
$regex_match.=”blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|”;
$regex_match.=”symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|”;
$regex_match.=”jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320×320|240×320|176×220″;
$regex_match.=”)/i”;
return isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE']) or preg_match($regex_match, strtolower($_SERVER['HTTP_USER_AGENT']));
} 继续阅读

1.6.0版本的Joomla上传简体中文语言包,只可在后台登陆时选择语言。登陆进去后选择语言时没有新上传的语言选项。

在 Joomla 1.6 平台,只有通过“安装”或者“探测安装”(Discover)方式安装的语言,才会出现在语言列表上。因此,尽管我们已经把中文语言文件上传到了网站文件系统,但是由于没有经过“安装”过程,它就没有被保存在 jos_extensions 数据表里面,也就不会显示在“语言管理”的列表上。

解决办法很简单:既然我们已经实际上将中文语言文件上传到了网站,那就不必再次“安装”了,只需“探测”一次即可。

操作如下:
继续阅读

UNIX
  编译PHP,不要加调试选项-否则ZO不会工作:在配置是加上–disable-debug选项
  复制ZendOptimizer.so文件到你的机器,通常放在:/usr/local/Zend/lib下
  在php.ini文件中加入如下两行,不要包含任何空格:

zend_optimizer.optimization_level=7
zend_extension=”/usr/local/Zend/lib/ZendOptimizer.so”

  重新启动Apache服务器

WINDOWS
  1、运行安装文件,首先提示你选择安装目录,选择一个你喜欢的目录,单击“Next”。
  2、安装向导会要求你选择当前使用的WEB服务器(Apache、IIS或其它),选择好服务器后单击“Next”
  3、安装向导提示您确认php.ini的位置(默认是C:\WINDOWS\)单击“Next”,提示“备份php.ini到C:\WINDOWS\php.ini-Optimizer-bak,当卸载该软件时可以恢复到原始的php.ini)单击“Next”。
  4、安装向导提示“为了继续安装程序需要重新启动IIS服务)单击“是”,安装程序开始重新启动IIS服务,然后安装程序会提示“IIS服务顺利重新启动了”单击“确定”,再单击“finish”完成安装。
  5、安装完毕后程序会自动根据你的选择来修改php.ini帮助你启动这个引擎。

Zend Optimizer的配置选项

  zend_optimizer.encoder_loader 《== 是否允许处理由Zend Encoder加密的PHP文件。
  zend_extension_ts 《== 优化器所在目录。
  zend_extension_manager.optimizer_ts 《== 优化器管理所在目录。

  优化过程 zend_optimizer.optimization_level 详细解释
  这里最为重点的部分,仔细看!Zend Opt总共有10个优化过程,从理论上说开的越多性能越好。当然,理论和实际永远都存在着差距。优化过程开启的越多对性能消耗也相对也越大,Zend Opt的10个优化过程并不相同也就是说效果不是平均的。Zend公司定义的最高值(High模式)为15,这里15指的是开启1-4号优化过程。当然,很多朋友并不满足于此,毕竟最高也只开启4个优化过程连总数的一半都没有。各个优化过程的对应的数字代码(值)如下:

  不使用 0 <= 如果这样不如不装,还能节约点内存说!
  优化过程1(PASS1) 1
  优化过程2(PASS2) 2
  优化过程3(PASS3) 4
  优化过程4(PASS4) 8
  优化过程5(PASS5) 16
  优化过程6(PASS6) 32
  优化过程7(PASS7) 64
  优化过程8(PASS8) 128
  优化过程9(PASS9) 256
  优化过程10(PASS10) 512

  以何种方式开启优化过程是通过这些数字代码(值)相加所得的和作为此参数的参数值来控制的。如我的配置文件中zend_optimizer.optimization_level = 1023 , 这里的1023是优化过程1到优化过程10全部数字代码(值)相加得到的和,表示开启全部10个优化过程。刚才所提到的Zend公司定义的High模式值为15,15表示同时开启优化过程1-4。

  加密代码支持 zend_optimizer.encoder_loader 详细解释

  对于这个参数,我想如果没有看过Zend Opt FAQ文档的朋友大多数并不知道。这个参数用来告诉Zend Opt是否去支持被Zend Encoder加密过的代码。默认情况下Zend Opt将支持加密过的代码。如果不使用被加密过的代码我推荐你关闭此选项。这个功能牵扯到解包反码的过程,会导致系统负荷的加重。我的朋友已经开发完毕相应的反编译工具,预计春节之后推出。

  这个参数的值只有两个 0 关闭, 1 开启。默认为1,推荐设置为0。

  模块定位 zend_extension_ts 、zend_extension_manager.optimizer_ts无需解释,这些参数就是Zend Optimizer相关模块在硬盘上的安装路径。

  如何获知Zend Optimizer是否在运行?

  答案很简单,只要用PHP的函数phpinfo()来检测便知,如下所示:
  <?
  phpinfo();
  ?>

  显示的结果中关于Zend Optimizer的部分就象下面这样:

  This program makes use of the Zend Scripting Language Engine:
  Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
  with Zend Extension Manager v1.2.0, Copyright (c) 2003-2007, by Zend Technologies
  with Zend Optimizer v3.3.0, Copyright (c) 1998-2007, by Zend Technologies

  表示 Zend Optimizer for PHP优化成功了

换笔记本电脑了,以前做的东西也搬一下家,发现WAMPServer有更新了,就下载了最新版的WAMPSERVER2.1a的版本,自带的PHP是5.3了。

用以前的一个程序的时候发现了 Notice : Use of undefined constant 这个问题,一时想不出来怎么解决。网上查了一下,倒是有解决办法。

1、对于出现Notice: Use of undefined constant xxxx…只要给参数xxxx加上引号就OK了。

2、这些是 PHP 的提示而非报错,PHP 本身不需要事先声明变量即可直接使用,但是对未声明变量会有提示。一般作为正式的网站会把提示关掉的,甚至连错误信息也被关掉
  关闭 PHP 提示的方法:

  搜索php.ini:

  error_reporting = E_ALL
  改为:
  error_reporting = E_ALL & ~E_NOTICE

  还有个不是办法的办法就是
  在每个文件头上加
  error_reporting(0); 虽然不好弄但是可以解决问题

个人觉得,牵涉到代码规范的问题,在自己做项目的时候还是不要关闭错误提示的好,还有建议用第一种方法。

以前用这种方式:

 if($_SESSION[user]){ echo ’style=”display: none;”‘; }

现在改成比较规范的这样:

 if(empty($_SESSION['user'])){ echo ’style=”display: none;”‘; }

以前直接 echo $_SESSION['user'] 现在改成

echo !empty($_SESSION['user']) ? $_SESSION['user'] : “” ;

MySQL日志文件一般在:/var/log/mysqld.log,下面是修改MySQL日志文件位置的方法。

本来改MySQL日志文件的位置,发现在/etc/my.cnf中怎么也改不了。

后来发现MySQL日志位是指定的:

[root@localhost etc]# ps aux|grep mysqld
root 11830 0.5 0.0 4524 1204 pts/0 S 03:03 0:00 /bin/sh /usr/bin/mysqld_safe –datadir=/data/mysql –socket=/var/lib/mysql/mysql.sock –log-error=/var/log/mysqld.log –pid-file=/var/run/mysqld/mysqld.pid
mysql 11890 3.7 0.1 40456 9076 pts/0 Sl 03:03 0:00 /usr/libexec/mysqld –basedir=/usr –datadir=/data/mysql –user=mysql –pid-file=/var/run/mysqld/mysqld.pid –skip-external-locking –port=3306 –socket=/var/lib/mysql/mysql.sock
root 11909 0.0 0.0 3908 664 pts/0 S+ 03:03 0:00 grep mysqld

chkconfig –list发现是chkconfig on指定的,

vim /etc/init.d/mysqld得知这里的已经配置。

get_mysql_option mysqld datadir “/var/lib/mysql”
datadir=”$result”
get_mysql_option mysqld socket “$datadir/mysql.sock”
socketfile=”$result”
get_mysql_option mysqld_safe log-error “/var/log/mysqld.log”
errlogfile=”$result”
get_mysql_option mysqld_safe pid-file “/var/run/mysqld/mysqld.pid”
mypidfile=”$result”

更改这里应该就行了

Smarty 3 发布

抢沙发

Smarty 3.0正式版已经于光棍节(11月11日)发布了,至于Smarty 3 的新特性,咱还没正式用,暂时就不评论了。

从目前看来更新的挺快,现在最新版是Smarty 3.0.4 ,也是一个稳定版。

不过更新速度倒是挺快的,一天一个版本,有时候一天两个版本。当你看到这篇文章的时候说不定已经又有新版的下载了。

官网下载地址:http://www.smarty.net/download

经常会在网上看到有人问怎么将整个动态的网站静态化,其实实现的方法很简单。

<?php
//在你的开始处加入 ob_start(); 
ob_start(); 

//以下是你的代码 
//在结尾加入 ob_end_clean(),并把本页输出到一个变量中 
$temp = ob_get_contents(); 
ob_end_clean(); 

//写入文件 
$fp = fopen(‘文件名’,’w’); 
fwrite($fp,$temp) or die(‘写文件错误’); 
?> 
 
这只是最基本的方法,还不是很实用,因为网站是要更新的,要定期重新生成HTML

下面是我用的方法:
  继续阅读

  CKEditor3.4.2版是一个非常重要的维护版本,也是为下一个3.5版本做了一些前期处理工作,而 3.5 版本将在未来几周内发布。该版本更好的支持 Opera 和 IE9 浏览器,增强 BiDi 特性等等。

  该版本是稳定的并建议所有 3.4 用户升级使用。

  下载地址:http://ckeditor.com/download

  CKEditor是新一代的FCKeditor,是一个重新开发的版本。CKEditor是全球最优秀的网页在线文字编辑器之一,因其惊人的性能与可扩展性而广泛的被运用于各大网站。

关于PHP的IDE

抢板凳

玩PHP也有一段时间了,看到网上、论坛关于哪个IDE好的争论,也用过几个IDE,身为菜鸟的我也发表一下个人观点。(如有不同观点,请不要喷俺,俺是菜鸟)

以下软件均为目前最新版:
eclipse-php-helios-SR1
eclipse在即使再变身都不会忘记它的老本行——Java,作为一个可以全身插满武器的超级大排插,它的威力是毫无质疑的,还有就是把浏览器预览集成到IDE中,方便预览。但功能强大也同样意味着体积的臃肿,有不少程序员对之又爱又恨。
性能:
安装文件:中(145M左右);
扩展性能:强;
代码提示:好;
中文支持:中(也有汉化的easy eclipse for php,但汉化效果一般); 继续阅读

1.echo和print的区别

PHP中echoprint的功能基本相同(输出),但是两者之间还是有细微差别的。echo输出后无返回值;print有返回值,当其执行失败时返回flase,因此可以作为一个普通函数来使用,例如执行下面的代码后变量$r的值将为1。

$r = print “Hello World”;

这意味着print可用在一些复杂的表达式中,而echo则不行。但是,因为echo语句不要求返回任何数值,所已在代码中echo语句的运行效率要略微快于print语句。

2.include与require的区别
继续阅读

使用Smarty的时候开启了缓存,下面有3个简单的举例,新手们可以参考一下。

1、insert 法

定义一个函数显示时间的:

function insert_get_current_time(){
$timestamp=emptyempty($timestamp)?time():$timestamp;
$timeoffset=(int) ‘+8′;
return $ret=gmdate(“Y-n-j g:ia”, $timestamp + $timeoffset * 3600);
}

然后在模板中:

{insert name=”get_current_time”}
继续阅读