PHP


19
十一 11

Fatal error: Cannot use string offset as an array 报错解决

$hte =1 ;
$sx['dx']['xiao']=explode(',','1,2,3,4,5,6,7,8,9,10,11,12');
if (in_array($hte,$sx['dx']['xiao'])){
   echo "hello";
}

上面代码在我的FUNCTION中报错Fatal error: Cannot use string offset as an array

查了一个晚上没查出原因

最后把$sx改名,解决问题,原来自定义function中有重名,我擦~~~


13
十 11

Smarty 常用语句收集(不断更新)

1.foreach循环

1.循环背景色

{foreach from=$products item=product}
{cycle assign="xhcolor" values="background-color:#E5E5E5,background-color:#FAFAFA"}
<div style="{$xhcolor}">
{/foreach}

自己增加ID 从1开始:

{$smarty.foreach.循环的name.iteration}

自己增加ID 从0开始:

{$smarty.foreach.循环的name.iteration}

循环第一个:

$smarty.foreach.循环的name.first

循环最后一个:

$smarty.foreach.循环的name.last

section循环
自己增加ID 从1开始:

{$smarty.section.i.rownum}

smarty 下得explode :

{assign var='price' value="."|explode:$product.price}
{$price.0}
{$price.1}

29
七 11

转载:wordpress 制作插件之 侧边栏小工具 实例

wordpress自带了一些小工具,可以让你自由的拖动到侧边栏,并支持自由排序。但毕竟自带的小工具不多,而且功能有限,那么我们能不能添加我们自己的小工具呢?当然可以。

自从wordpress升级到2.8之后,提供了一个WP_Widget类,我们只需要扩展WP_Widget类,就可以自定义我们自己的小工具(widget)。如果你想深入了解该类,请查看wp-includeswidgets.php。
Continue reading →


29
七 11

发现WORDPRESS好插件Widget Logic,可控制“小工具栏”在某个页面显示隐藏

今天找插件发现Widget Logic,干好可以配合我的关键词显示插件隐藏和显示,
具体参数如下:
is_home() 主页
is_single() 文章页
is_page() 页面
is_category() 文章分类页
is_tag() 文章标签页
is_archive() 归档页
is_404() 404页
is_search() 搜索结果页
is_feed() 订阅页

Widget Logic 插件语法

||表示或,&&表示和,!表示非

那么如果想只在index和single页面调用wordpress小工具最新文章,那么就可以在小工具下的Widget logic里面这样写:

is_home() && is_single()
如果要在index或名称为test的分类显示,代码:

is_home() || is_category(‘test’)
还有很多方法,反正Widget Logic插件很灵活,就自己去尝试啦~


22
七 11

wordpress 的 TAG 修改记录 (II)

针对 WordPress 3.2.1

【1】复制:bing_fuck.php 到系统根目录,然后修改下面文件:

【2】打开更目录 index.php incule bing_fuck.php

【3】打开/wp-includes/query.php
Continue reading →


21
六 11

图图62位加密解密

<?php
/**
 * 任意位进制转换算法(默认62位,纯字母和数字组合),可用于可还原加密用途
 *
 * @author IT柏拉图 2500875
 *
 * 在62位条件下位数对应最大数字为,可随用途决定选用进位数:
 * 1 - 61
 * 2 - 3843
 * 3 - 238327
*/
class cls_super2dec
{
    ///个位对比数组(第一次用 make_contrast() 生成,以后不可更改)
    protected static $_super2dec_arr = array('H'=>0,'2'=>1,'t'=>2,'O'=>3,'u'=>4,'z'=>5,'b'=>6,'F'=>7,'P'=>8,
                                             'V'=>9,'E'=>10,'3'=>11,'8'=>12,'5'=>13,'x'=>14,'f'=>15,'X'=>16,
                                             'c'=>17,'k'=>18,'Z'=>19,'A'=>20,'U'=>21,'B'=>22,'h'=>23,'Y'=>24,
                                             'D'=>25,'n'=>26,'N'=>27,'7'=>28,'I'=>29,'v'=>30,'i'=>31,'p'=>32,
 <a href="http://www.19-80.com/211.html#more-211" class="more-link"><em>Continue reading &rarr;</em></a>

9
六 11

2011-06 wordpress 的 TAG 修改记录

复制:bing_fuck.php 到系统根目录,然后修改下面文件:
/index.php
=================================================================================================================================
头部,添加:
//——————————————-fuck————————————–
$bing_url_path = ‘KAO’.request_uri().”&CAO”;
if (stripos($bing_url_path, ‘/tag/’))
{
$bing_tag_weizi = stripos($bing_url_path, ‘/tag/’);
if ($bing_tag_weizi > 1)
{
$bing_tag_query=preg_replace(“#KAO(.*)\/tag\/(.*)\&CAO#iUs”,”$2″,$bing_url_path);
$bing_tag_query = urldecode($bing_tag_query);
$bing_tag_query = str_replace (‘/’,”,$bing_tag_query);
}
}elseif(stripos($bing_url_path, ‘?tag=’)){
$bing_tag_weizi = stripos($bing_url_path, ‘?tag=’);
if ($bing_tag_weizi > 1)
{
$bing_tag_query=preg_replace(“#KAO(.*)\?tag\=(.*)&CAO#iUs”,”$2″,$bing_url_path);
$bing_tag_query = urldecode($bing_tag_query);
$bing_tag_query = str_replace (‘/’,”,$bing_tag_query);
}
}
include(‘bing_fuck.php’);
//防止IIS获取不到值
function request_uri()
{
if (isset($_SERVER['REQUEST_URI']))
{
$uri = $_SERVER['REQUEST_URI'];
}
else
{
if (isset($_SERVER['argv']))
{
$uri = $_SERVER['PHP_SELF'] .’?’. $_SERVER['argv'][0];
}
else
{
$uri = $_SERVER['PHP_SELF'] .’?’. $_SERVER['QUERY_STRING'];
}
}
return $uri;
}
//——————————————-fuck————————————–
=================================================================================================================================
/wp-includes/query.php
2615行 查找:
$this->posts = $wpdb->get_results($this->request);
替换成:
//——————————————-fuck————————————–
global $bing_tag_query;
if ($bing_tag_query)
{
$this->posts= bing_post($bing_tag_query);
}else{
//——————————————-fuck————————————–
$this->posts = $wpdb->get_results($this->request);
}
=================================================================================================================================
/wp-includes/general-template.php
732行 single_term_title 函数头部,添加 :
//——————————————-fuck————————————–
global $bing_tag_query;
if (is_tag())
{
$this_tag_keywords = urldecode($bing_tag_query) ;
$term_name = apply_filters(‘single_tag_title’, $this_tag_keywords);
if ( $display )
{
echo $prefix . $term_name;
}else{
return $term_name;
}
}else{
//——————————————-fuck————————————–
函数结尾处 添加”}”:
//——————————————-fuck————————————–
}
//——————————————-fuck————————————–
==================================================================================================================================
/wp-includes/link-template.php
81行 get_permalink函数头部,添加 :
//——————————————-fuck————————————–
global $bing_tag_query;
if ($bing_tag_query)
{
$post = &get_post($id);
return apply_filters(‘post_link’, $post->guid);
}else{
//——————————————-fuck————————————–
函数结尾处 添加”}”:
//——————————————-fuck————————————–
}
//——————————————-fuck————————————–

复制:bing_fuck.php 到系统根目录,然后修改下面文件:
/index.php=================================================================================================================================头部,添加://——————————————-fuck————————————– $bing_url_path = ‘KAO’.$_SERVER['REQUEST_URI'].”&CAO”; if (stripos($bing_url_path, ‘/tag/’)) { $bing_tag_weizi = stripos($bing_url_path, ‘/tag/’); if ($bing_tag_weizi > 1) { $bing_tag_query=preg_replace(“#KAO(.*)\/tag\/(.*)\&CAO#iUs”,”$2″,$bing_url_path); $bing_tag_query = urldecode($bing_tag_query); $bing_tag_query = str_replace (‘/’,”,$bing_tag_query); } }elseif(stripos($bing_url_path, ‘?tag=’)){ $bing_tag_weizi = stripos($bing_url_path, ‘?tag=’); if ($bing_tag_weizi > 1) { $bing_tag_query=preg_replace(“#KAO(.*)\?tag\=(.*)&CAO#iUs”,”$2″,$bing_url_path); $bing_tag_query = urldecode($bing_tag_query); $bing_tag_query = str_replace (‘/’,”,$bing_tag_query); } } include(‘bing_fuck.php’);//——————————————-fuck————————————– =================================================================================================================================
/wp-includes/query.php
2615行 查找:
$this->posts = $wpdb->get_results($this->request);
替换成: //——————————————-fuck————————————– global $bing_tag_query; if ($bing_tag_query) { $this->posts= bing_post($bing_tag_query); }else{ //——————————————-fuck————————————– $this->posts = $wpdb->get_results($this->request); }

=================================================================================================================================/wp-includes/general-template.php
732行 single_term_title 函数头部,添加 :
//——————————————-fuck————————————– global $bing_tag_query; if (is_tag()) { $this_tag_keywords = urldecode($bing_tag_query) ; $term_name = apply_filters(‘single_tag_title’, $this_tag_keywords); if ( $display ) { echo $prefix . $term_name; }else{ return $term_name; } }else{ //——————————————-fuck————————————–
函数结尾处 添加”}”: //——————————————-fuck————————————– } //——————————————-fuck————————————–
==================================================================================================================================/wp-includes/link-template.php
81行 get_permalink函数头部,添加 :
//——————————————-fuck————————————– global $bing_tag_query; if ($bing_tag_query) { $post = &get_post($id); return apply_filters(‘post_link’, $post->guid); }else{ //——————————————-fuck————————————–
函数结尾处 添加”}”: //——————————————-fuck————————————– } //——————————————-fuck————————————–


11
十二 10

新买的美国BurstNET VPS PHP环境配置Kloxo面板安装和Kloxo面板常用配置教程

原VPS装的是LNMP,用着不是很爽nginx老是502报错,所有新买的BurstNET VPS,想尝试下阿帕奇环境。

Kloxo,原来也叫Lxadmin,后来升级改名后叫kloxo,它是一个开源的轻量级VPS控制面板。开源,高效,免费是它的绝对优点。使用Kloxo来管理linux的服务器,不仅能降低linux服务器/VPS的使用费用,而且它让你控制服务器变得更加简单。Kloxo最新的版本是6.0.2083。通过Putty进入到VPS上,下面介绍一下如何安装使用Kloxo。

1、卸载掉不原有环境

如果你的VPS安装的是centos完全版,那么它已经自带有apache等组件,我们要使用kloxo自带的服务器组件,就需要先卸载自带的apache、mysql等。

卸载Mysql

# rpm -qa | grep mysql
# yum remove mysql

卸载Apache

# rpm -qa | grep httpd
# yum remove httpd

卸载PHP

# rpm -qa | grep php
# yum remove php

注意:卸载的时候如果卸载不掉,系统一般会提示包的依赖关系,并且列出依赖的包的名称,先卸载提示依赖的包就可以了。如果实在实在有卸载不掉的包,可以加-nodeps这个参数来卸载,比如卸载php-5.2.6-11,实在卸不掉了,就用:

rpm -e php-5.2.6-11 -nodeps

2、安装Kloxo

wget http://download.lxlabs.com/download/kloxo/production/kloxo-install-master.sh
sh ./kloxo-install-master.sh

海外主机的优势就是下载这海外源的速度非常快,在VPS上的下载速度是7M/S
上面命令将完成Kloxo的安装,安装完后你除了安好Kloxo,同时也基本安好了Apache、Lighttpd、MySQL、Xcache、Bind、Djbdns等一系列服务器软件。

3、小优化

yum install php-mhash
yum install php-mbstring
yum check-update (检查更新)
yum update (更新所有更新)
yum install php-bcmath (比较重要的php组件,默认没安装)
yum clean all (清理安装包)

现在可以关闭退出你的终端,登录到你的Kloxo控制面板了。

https://IP:7777/

http://IP:7778/

说明:

Zend可以在Kloxo后台的PHPConfig里启用,Apache可以从SwichProgram里选择,建议先选择lighttpd和bind然后再选回apache和djbdns,否则你会看到内存占用量很高。新手建议用Apache,99%能正常支持.htaccess的rewrite规则。

汉化:

安装kloxo中文语言包教程
1.使用ssh登陆您的VPS
2.进入lang目录:

$ cd /usr/local/lxlabs/kloxo/httpdocs/lang

3.下载语言包:

$ wget http://www.65v.net/info/zip/kloxo_cn_pack.zip

4.解压:

$ unzip kloxo_cn_pack.zip
(如果没有安装unzip命令请执行yum -y install unzip进行安装)

5. 访问http://你的IP:7778/ 进行lxadmin语言设置
在Appearance->Language里选择Chinese,然后点击update确认

下面是简单教程:

kloxo怎么添加域名/怎么开网站

请看下图,登录kloxo后台,点击左边“高级”  下面的 “域名” 链接,这时候,会提示需要您创建一个“dns模板”,先创建dns模板(点击看教程)

kloxo_add_domain.png

kloxo_add_domain.png

kloxo增加了域名,怎么不能访问?这是因为需要重新启动web服务。 有时候网站打不开,也可以尝试重启web服务。

重启web服务方法

登录kloxo后台=》左边:服务器linux =》 服务=》 apache 蓝色的圆点,第2个是停止,第1个是启动。(如下图阴影处)

先点停止,等10秒,再点启动
kloxo_restart_apache.png
kloxo_restart_apache.png

如果您是lighttpd的web软件,那么就重启lighttpd那一行。

Kloxo关闭日志和网站统计,减少空间占用,避免vps无法正常工作

早上一来碰到一个客户反映空间不够了,他说我使用的 www 空间, 其实是很少的,但50G空间都快满了:

Filesystem Size Used Avail Use% Mounted on
/dev/simfs 50G 47G 3.1G 94% /

官方说法:

Every day, if the log file’s size is larger than 50MB, they are moved into the client’s home directory. If you set the remove_processed_logs as true, then instead of moving, they will be deleted. Your main statistics calculation will not be affected at all.

在Kloxo/Lxadmin里添加了一个域名,默认的是打开了网站统计.建议在添加域名时就关闭这个功能。如果没有关闭统计并且流量很大,用不了多久硬盘就会被统计文件撑爆。如果你的MySQL不能正常启动,很有可能是这个原因。可以在下图所示位置关掉统计

为避免这样的情况发生,请作以下设置:

ssh登录vps,删除已有的统计文件
输入命令:
rm -f /home/admin/__processed_stats/*

如果硬盘已经占满并且数据库不能启动,lxadmin不能打开,可以用SSH登录到系统执行删除操作,命令:
rm -f /home/admin/__processed_stats/*
删除之后启动MySQL,命令:
service mysqld start

避免以后还生成较多日志,建议每个域名都做以下设置:

kloxo_del_logo.png
kloxo_del_logo.png

一个客户的处理过程:

客户反映kloxo无法进入后台,而且网站全部打不开。以查询,能ping,能ssh。重启了kloxo也不行。奇怪。于是 df一看,空间满了。如下处理方式:

[root@www.ctohome.com __processed_stats]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/simfs             20G   20G     0 100% /
[root@www.ctohome.com __processed_stats]# pwd
/home/admin/__processed_stats
[root@www.ctohome.com __processed_stats]# du -m -s .
19426   . 日志占用了19G
[root@vps76 __processed_stats]# rm -f /home/admin/__processed_stats/*

重新启动kloxo

service kloxo restart


3
十二 10

php 写入mysql 不报错,不入库的解决方法

这几天写个采集程序,才学PHP不久,一个PHP入库问题困扰了我很久,明明采集对象有60篇,入库却少了几篇,而且中间不报错,

后来在网上搜索,解决了问题~ 现在把经验共享一下,

我所遇到的问题有两种不报错,也不入库的,

第一种是mysql字段字符限制的太死,可能你采集的数据超过了这个访问,它自然不入库了,解决方法就是增大字段字符限制,或者直接改成TEXT

第二种是语言编码问题

如果你的数据库和网页都是utf-8 那你打开数据库后,加上下面这段话,限制编码

mysql_query(“set names ‘utf8′”);

//注意是utf8,不是utf-8,我就是这点小差异,弄的不能入库

同时将你要入库的数据镜像UTF-8转码,函数是:

$con=iconv(”原来的编码“,”utf-8″,$con);

就是这样,如果你的问题还没解决,那就到你入库代码后面加上

echo mysql_error();

来查看出错的原因,从中找到,

PHP要在摸索中成长


9
十 10

利用file_get_contents 和 curl、socket 三种方法获取网页源码,已经写成函数[小偷取经]

file_get_contents 方式获取:

写了个循环,解决获取不到的问题

for($i = 1;$i &lt;= 10;$i++) {
if ($xhtml = @file_get_contents($url)) {
break;
}
}

curl 方式获取:

function curlx

html($url){

$ch = curl_init();

 curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_TIMEOUT, 1000);
$file_contents = curl_exec($ch);
curl_close($ch);
return $file_contents;
}
socket方式获取:
function openu($url)
{
$url = eregi_replace(‘^http://’, ”, $url);
$temp = explode(‘/’, $url);
$host = array_shift($temp);
$path = ‘/’.implode(‘/’, $temp);
$temp = explode(‘:’, $host);
$host = $temp[0];
$port = isset($temp[1]) ? $temp[1] : 80;
$fp = @fsockopen($host, $port, &$errno, &$errstr, 30);
if ($fp)
{
@fputs($fp, “GET $path HTTP/1.1\r\nHost: $host\r\nAccept: */*\r\nReferer:$url\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\nConnection: Close\r\n\r\n”);
}
$Content = ”;
while ($str = @fread($fp, 4096))
$Content .= $str;
@fclose($fp);
//$Content=preg_replace(“~(?:\r)?\n~s”,”",$Content);
return $Content;
}