PHP源码加密工具 SourceCop

PHP 开发者总是不愿意发布他们开发的产品源代码。SourceCop for PHP 是一款 Windows 平台应用程序,你可以使用它加密你的 PHP 源代码,发布产品就没有任何可担心的了。

 

09225546 GoQZ PHP源码加密工具 SourceCop

 

SourceCop for PHP 使用一种特别的加密方式加密你的 PHP 源代码。使用它加密后的源码几乎没有人可以进行解密。另外,你也可以限制加密后的 PHP 脚本代码运行于指定的 IP 或设定脚本代码的到期时限。

查看加密效果:http://www.sourcecop.com/sample_codeSC.htm

 

 

解决WordPress后台安装插件主题或自动升级需输入FTP账号和密码的问题

VPS安装WordPress后,在后台自动升级时,或者更新、删除主题或者插件的时候,如果提示需要输入FTP账户信息,然而即使我们正确输入了FTP用户名和密码也无法完成升级,这个是服务器端的权限设置问题,不是用户的问题。如果你是管理员,也遇到了这样的问题(新手)下面提供几个方法以供大家参考:
一、如果使用虚拟主机

方法1、可以在wp-config.php里加入下面代码:

1
2
3
define("FS_METHOD", "direct");
define("FS_CHMOD_DIR", 0777);
define("FS_CHMOD_FILE", 0777);

方法2、拷贝下面的代码到wp-config.php中的?>之前

1
2
3
if(is_admin()) 
{ add_filter('filesystem_method', create_function('$a', 'return "direct";' ));
define( 'FS_CHMOD_DIR', 0751 ); }

方法3、修改FTP相关信息之后,拷贝代码到wp-config.php的?>之前

1
2
3
4
//*added ftp login credentials to avoid the annoying prompt asking for login info every time I wanted to upgrade a plugin* 
define('FTP_HOST', 'ftp.yoursite.com'); 
define('FTP_USER', 'Your_FTP_Username'); 
define('FTP_PASS', 'Your_FTP_password'); //*If you can use a SSL connection set this to true* define('FTP_SSL', true);

二、如果使用独立服务器或VPS,可以修改网站所在目录属性:

1
2
chmod -R 755 /home/wwwroot
chown -R www /home/wwwroot

其实出现这个的问题就是Apache/Nginx的执行身份非文件属主身份。

解决方法:
假设你的wordpress安装目录为/home/wwwroot/wordpress
执行:

1
chown -R www /home/wwwroot/wordpress

执行上面的命令就可以将/home/wwwroot/wordpress下所有文件的属主改为www,

“www”换成你自己的ftp用户名,“/home/wwwroot/wordpress”换成你自己的wordpress安装目。

这样就可以解决自动更新必须填FTP的问题。

注意:
1,必须是把wordpress程序文件上传到空间以后再执行该命令,顺序不能颠倒;

2,添加完虚拟主机以后,也必须把wordpress程序文件上传到空间以后,再执行该命令才有效!

若出现了这个问题,不仅后台安装不了插件或主题,在ftp的wordpress目录下也是上传不了文件的.

在WordPress中获取指定分类下的标签

获得某个或某几个分类下的全部标签:

将以下代码粘贴到functions.php中:

function get_category_tags($args) {
global $wpdb;
$tags = $wpdb->get_results
(”
SELECT DISTINCT terms2.term_id as tag_id, terms2.name as tag_name, null as tag_link
FROM
wp_posts as p1
LEFT JOIN wp_term_relationships as r1 ON p1.ID = r1.object_ID
LEFT JOIN wp_term_taxonomy as t1 ON r1.term_taxonomy_id = t1.term_taxonomy_id
LEFT JOIN wp_terms as terms1 ON t1.term_id = terms1.term_id,

wp_posts as p2
LEFT JOIN wp_term_relationships as r2 ON p2.ID = r2.object_ID
LEFT JOIN wp_term_taxonomy as t2 ON r2.term_taxonomy_id = t2.term_taxonomy_id
LEFT JOIN wp_terms as terms2 ON t2.term_id = terms2.term_id
WHERE
t1.taxonomy = ‘category’ AND p1.post_status = ‘publish’ AND terms1.term_id IN (“.$args[‘categories’].”) AND
t2.taxonomy = ‘post_tag’ AND p2.post_status = ‘publish’
AND p1.ID = p2.ID
ORDER by tag_name
“);
$count = 0;
foreach ($tags as $tag) {
$tags[$count]->tag_link = get_tag_link($tag->tag_id);
$count++;
}
return $tags;
}

然后你就可以在模板中使用这个函数了:

$args = array(‘categories’ => ’11,13,14′);
$tags = get_category_tags($args);

 

 

原创视频:用PHPnow本地搭建WordPress视频教程

主讲人:快乐大虾 QQ:124018553

1、首先从 http://www.phpnow.org/download.html 下载 最新版 PHPnow。

安装使用

解压后执行 Setup.cmd,根据提示进行,程序将会调用 Init.cmd 初始化。
成功初始化后 Init.cmd 自动改名为 Init.cm_。
如有必要,可将其改名为 Init.cmd 重新初始化。重新初始化不会丢失网站数据,仅仅是配置复位。

PnCp.cmd 是 PHPnow 控制面板(Control Panel)。大部分功能都在上面实现。

PnCmds 目录下有一些常用的 cmd 脚本,控制程序的运行。你可以建立快捷方式到桌面或其他位置。

2、从http://cn.wordpress.org/下载WordPress程序,安装WordPress

原创高清视频下载:

 

用PHPnow本地搭建wordpress

开始作为一个新手,不知如何本地搭建wordpress,一直都是上传的空间后在浏览,这样就很麻烦,后来发现一个很不错的搭建工具PHPnow,安装也很方便。

首先介绍一下PHPnow是什么:

Win32 下绿色免费的 Apache + PHP + MySQL 环境套件包。
简易安装、快速搭建支持虚拟主机的 PHP 环境。附带 PnCp.cmd 控制面板,帮助你快速配置你的套件,使用非常方便。

PHPnow 是绿色的,解压后执行 Setup.cmd 初始化,即可得到一个 PHP + MySQL 环境。
然后就可以直接安装 Discuz!, PHPWind, DeDe, WordPress 等程序。

支持虚拟主机:便捷的虚拟主机管理
配置文件备份:放心地去尝试修改配置文件,乱了就还原配置
虚拟主机代理:可与 IIS 共存 (不同端口,泛解析代理)
插件支持:ASP.NET | JSP(寻找最佳解决)
首先从 http://www.phpnow.org/download.html 下载 最新版 PHPnow。PHPnow 有两种封装,一是 exe 自解压版(推荐,本文针对此版),二是纯 7z 档案(没有 exe 自解压)。

下面来介绍一下 自解压版:执行 PHPnow-1.4.x.exe 如图:
2.在自动解压完毕后,将自动执行 Init.cmd 进行初始化动作(期间可能出现防火墙提示,请允许) 如图:

3.Init.cmd 十秒钟即可完成。全部完成后,将自动打开默认页(如果没有,试试手动打开 http://127.0.0.1)

这样就搭建完成了,呵呵,然后把wordpress程序放在PHPnowhtdocs 文件下。

打开浏览器输入:http://localhost/wordpress/ 看看是不是能打 开啦。。

如果遇到问题,请在下面留言。

 

 

第四讲制作博客的footer.php

上一讲,我们讲了如何制作WordPress 主题的header 部分,到目前为止,我们的主题目录中 应该有style.css, header.php, index.php 这些基础文件,今天我们讲一下footer.php 的制作。

footer.php 就是负责页面的底部部分,这个部分一般包含的内容主要有版权信息、统计代码、备案信息(在国内)等。现在我们在wpc-tomheng 目录在建立一个footer.php 文件。在里面

写入如下代码:

<div id=”footer”>
<div ><a href=”<?php bloginfo(‘url’); ?>”><?php bloginfo(‘name’);?>Powered by </a><a
href=””>WordPress</a></div>
<div >
<div class=”tongji”>在这里可以加入你的统计代码</div>
<div class=”beian”>这里是您的备案信息</div>
<div ><?php echo get_num_queries();?>querys in <?php echo timer_stop() ;?>seconds</div>
</div>
<?php wp_footer(); ?>
</body>
</html>

现在打开浏览器应该可以看到相关的信息。确实很简单吧,it is easy ,it is fun.
Bloginfo()函数就不用说了,如果你不是很明白的话,那么请查看我们上一讲的内容。

(1)get_num_queries()函数

这个函数(不需要任何的参数)的作用就是得到从WordPress 初始化到这个函数调用为止,总共进行了多少次sql 查询。

(2)timer_stop()函数

这个就是取得当前程序的运行时间,可以大体衡量一下WordPress 查询的时间。这个函数定义在:/wordpress/wp-settings.php -> line 162 有兴趣的朋友可以查看一下。

(3) wp_footer()函数

Wp_footer()是WordPress 的一个hook 函数,用于插件开发中挂在函数。加上这种函数是自 己的主题支持插件开发,同时和更符合规范。

今天涉及的这几个函数比较简单没有复杂的参数选项,相对简单一下,这些函数只要知道他 们的作用,具体用在哪里要看自己的设计啦。

 

第五讲制作博客的index.php文件

经过前面几讲的学习,我们已经了解了footer.php 、header.php 、style.css 的基本知识。今
天要讲一下最重要的一个文件index.php。
在index.php 中主要的就是取出文章相关的信息,这也是页面里的主体信息。我们在
header.php 里有提到过这个文件,还写入了两行代码。接下来我们重新写入如下代码,并且
讲解这里面用到的模版函数。

<?php get_header(); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class=”post” id=”post-<?php the_ID(); ?>”>
<h2><a class=”title” href=”<?php the_permalink() ?>” rel=”bookmark”><?php
the_title(); ?></a></h2>
<div class=”info”>
<span class=”date”><?php the_time() ?></span>
<?php if ($options[‘author’]) : ?><span class=”author”><?php
the_author_posts_link(); ?></span><?php endif; ?>
<?php edit_post_link(‘edit’, ‘<span class=”editpost”>’, ‘</span>’); ?>
<span class=”comments”><?php comments_popup_link(‘no comment’,’1 comment’, ‘%
comments’, ‘Comments off’); ?></span>
<div class=”fixed”></div>
</div>


<div class=”content”>
<?php the_content(‘read more’); ?>
</div>
<div class=”under”>
<span class=”categories”>Categories</span><span><?php the_category(‘, ‘); ?></span>
<span class=”tags”>tags: </span><span><?php the_tags(”, ‘, ‘, ”); ?></span>
</div></div>
<?php endwhile; else : ?>
<div class=”errorbox”>
没有任何文章
</div>

<?php endif; ?>
<div id=”pagenavi”>
<?php if(function_exists(‘wp_pagenavi’)) : ?>
<?php wp_pagenavi() ?>
<?php else : ?>
<span class=”newer”><?php previous_posts_link(‘上一页’); ?></span>
<span class=”older”><?php next_posts_link(‘下一页’); ?></span>
<?php endif; ?>
</div>
<?php get_footer() ?>

请注意其中的引号,应该是英文半角的。
这些代码是不是看起来有些眼晕啊,这没关系,我们慢慢来分析。

(1)get_header() ,get_footer()函数

还记得我们前两讲里做的header.php 和footer.php 文件吗,这两个函数的作用就是把这两个 文件引入进来,就相当于php 中的include 函数,这样我们才能在同一个网页中把header 和 footer 都显示出来。这也可以看出来index.php 的重要性,他统领着其他的文件。与这两个 函数类似的还有get_siderbar()函数,这个函数就是包含siderbar.php 文件,这个文件的内容 我们将在后续的课程中讲解。

(2)have_posts(),the_post()函数

Have_posts()的作用就是判读博客中是不是有发表的文章,通常用于条件判断中,the_post() 的作用就是进行数据库查询,把与文章相关的数据查询出来,这样我们就能在后续的代码中 使用相关函数将这些信息输出到页面上,一般的用法就是像上面那样:

<?php If(have_posts()):while(have_posts()):the_post();?>

这里是循环取出与文章相关的信息

<?php endwhile;?>
<?php else:?>

这里是如果没有文章的话,就显示这里的信息。

<?php endif;?>

需要注意的是这里的if 和while 后面用的是冒号不是分号,如果误写成分号就不能实现预 想的功能啦。

(3)the_ID() the_permalink() the_title() the_time() the_content(‘read more’)

附注:这五个函数只能在WordPress 的循环中使用,他们不是全局函数。

The_ID()

作用是取得每次循环的编号,输出的结果post-数字编号

The_permalink()

作用是取得文章永久链接。这个函数不带参数表示取得当前循环中的文章的链接,也可以传 入一个id 编号这样就可以取得该id 所对应的文章的链接。函数定义在:

/wordpress/wp-includes/link-template.php -> line 9

The_title()

取得文章的标题,这个函数的完整参数列列表the_title($before = ”, $after = ”, $echo = true)

$before 就是指文章标题前面要显示的内容,$after 就是指文章标题后面说要显示的内容。

$echo 取值true 表示显示文章标题,为false 则返回文章的标题。
函数定义在: /latest/wordpress/wp-includes/post-template.php -> line 35

The_time()

the_time()用来获取并显示当前文章发布的时间,该函数后面可以跟控制日期或时间格式的参 数,常用的参数形式如下:

如<?php the_time(’F j, Y’); ?>的调用形式显示效果为:六月13, 2009(英文状态下显示June 13, 2009);

如<?php the_time(’g:i a’); ?>的调用形式显示效果为:7:09 下午(英文状态下显示7:09 pm);

如<?php the_time(’G:i’); ?>的调用形式显示效果为:19:09。
事实上,除了使用the_time()函数之外,WordPress 还提供了一个具有类似功能的

get_the_time()函数。该函数除了不具有the_time()函数的显示功能之外,其余功能二者完全相同。使用

get_the_time()函数时,如欲将获取的时间显示出来,需要使用专用语句。

下面,我们籍此机会来简单了解一下WordPress 中时间的格式。在WordPress 中,通常用于 控制时间格式的有以下字符:

l, F, j, S, Y, G, g, i, a 等等,其详细意义如下:

l(小写L)用来显示一周之中每一天的名称,比如星期六,或者在英文中显示Saturday;

F 用来显示月份名称,比如六月,或者June;

j 用来显示一月之中的某一天,比如13;

Y 用来以4位数字形式显示年份,使用y 则以末两位数字显示年份,比如2009或09;

G, g, i, a 等四个字符通常组合使用,如前例子,有两种形式:

g:i a 以形如7:09 下午或7:09 pm 的形式显示时间;

G:i 以形如19:09的24小时进制形式显示时间。

S 通常紧跟在j 后面,表示是否在一月之中某天之后添加英文后缀(st, nd, th 等)。

The_content()

取出文章的内容,这个可以带一个参数,the_content(“more”), 作用是如果在文章中有<!–more–>时,就自动截断显示more 连接,可以查看详细信息。

(4)the_category()、the_tags()函数

the_category() 取得文章所属的目录列表,可以这样使用the_category(‘|’),如果我们有 WordPress WordPress 主题WordPress 插件这三个目录那么显示出来是这样的:

WordPress|WordPress 主题|WordPress 插件,‘|’就是相邻目录之间的分隔符,这个可以根据自 己的需要来使用不同的符号把他们分隔开来,默认情况下是使用空格来分隔的的。the_tags() 取得文章所属的标签。the_tags( $before = ‘Tags: ‘, $sep = ‘, ‘, $after = ” ) $before 在标签前面显示的内容,$sep 分隔 符,$after 标签后显示的内容。

 

第六讲sidebar.php制作流程

上一讲我们学习了index.php 的制作,这一讲比较重要一些,大家如果有不明白的地方,回
头仔细看看我们教程的内容,一定要把index.php 中的代码理解清楚。今天我们就来看看
sidebar.php 的制作。
首先我们需要在index.php 中加入get_sidebar()函数来引入这个文件。打开index.php 文件,
在get_footer()函数前面加上get_sidebar()函数就可以啦。
接下来在sidebar.php 中写入如下代码:

<div id=”sidebar”>
<ul>
<li>
<?php get_search_form(); ?>
</li>
</ul>
<ul role=”navigation”>
<?php wp_list_pages(‘title_li=<h2>’ . ’Pages’ . ’</h2>’ ); ?>
<li><h2>Archives</h2>
<ul>


<?php wp_get_archives(‘type=monthly’); ?>
</ul>
</li>
<?php wp_list_categories(’show_count=1&title_li=<h2>’ . ’Categories’ . ’</h2>’); ?>
</ul>
<ul>
<?php if ( is_home() || is_page() ) { ?>
<li><h2>Meta</h2>
<ul>
<?php wp_register(); ?>
<li><?php wp_loginout(); ?></li>

</ul>
</li>
<?php } ?>
</ul>
</div>

现在可以打开浏览器看看这些代码都是干了些什么啦。下面我们来看看里面的函数的作用
是什么、如何使用。

(1)get_search_form()函数
这个函数的作用就是现实搜索框。这个函数调用后就可以直接显示一个具有完备功能的搜索
框,我们不用写任何额外的代码。这就是WordPress 的魅力,他给我们做了一下很有用的封
装函数,这样就减轻了我们的开发负担,可以专注于主题的设计。

(2) wp_list_pages() 、wp_list_categories()函数
wp_list_pages()
该函数以页面名称的超链接形式显示WordPress 博客内的所有页面,经常用来建立顶端导航
页面,或用来修饰侧边栏。
形如wp_list_pages(’title_li=&sort_column=menu_order&include=12,25,38,57&depth=1&’);用,
各参数意义如下:
title_li= 用来设置所有显示页面的一个总名称;后面没有参数值时,表示不显示名称;
sort_column=menu_order 用来设置页面的显示顺序,表示按照WP 后台设置的各页面顺序
显示,其他的常用顺序设置可能还包括post_title、post_date、ID 等等;
include=12,25,38,57 表示只显示ID 为这四个数值的四个页面;我们也可以使用exclude 来
排除相应ID 的页面;
depth=1 表示只显示父页面,对所有子页面不予显示;其他数值还包括默认的0,表示显示
所有页面(子页面有缩进);-1显示所有页面(子页面无缩进);等等。
此外,该函数可能会用到的属性还包括link_before 和link_after,用于设置显示的页面链接
前后的字符。
wp_list_categories()
wp_list_categories()函数用来获取博客文章的分类信息,并可以通过设置适当的函数参数,
将其显示出来。该函数的参数和wp_get_archives()函数类似,都需要使用&连接,放在单引
号(’) 中以字符串方式传递。形如wp_get_archives(’orderby=name&order=ASC&
show_count=1&use_desc_for_title=1&feed=订阅&exclude=2,5& number=10′)
各参数的意义如下:

orderby=name 表示按照分类名称的字母先后顺序显示分类信息,可以将name 换为ID 等;
order=ASC 表示按照分类名称的字母的升序显示分类信息,将ASC 改为DESC 表示按降
序;
show_count=1 在每个分类名称后面显示属于该分类的文章数;
use_desc_for_title=1 使用该分类的描述信息为每个分类名称超链接添加一个title 属性;
feed= 订阅:在每个分类信息旁边添加一个名为“订阅”的超链接,提供该分类的RSS 订阅;
exclude=2,5 在显示的分类中去除ID 为2和5的分类;也可以用include=2,5表示只显示ID 为
2和5的分类;
number=10 表示只显示前面的10个分类。

(3) is_home() 、is_page() 函数
is_home() 用以判断当前显示的博客页面是否是首页,返回的是一个Bool 值。如果是在首
页,则返回TRUE;否则返回FALSE。
该函数常用来控制博客侧边栏的显示方式,经常使用如下代码段:

<?php
if ( is_home() ) {
//此为在博客首页应该显示的内容
} else {
//此为非博客首页应该显示的内容
}
?>

is_page() 函数判断当前显示的内容是否是博客的独立页面( page),就是在后台建立的页
面,它也返回一个Bool 值。我们可以在模板中通过该函数判断当前是否是一个独立页面,
从而决定是否为当前显示的文章显示发布时间等等。
同类的函数还有:
is_paged() is_single() is_tag() is_category() is_archive()等等

(4) wp_register() 、wp_loginout()函数
Wp_register()获得登录后台的链接,wp_loginout()获得退出登录的链接。
到现在,一个基本的wordpress 主题就已经成形了。这套主题教程也就告一段落了,希望大
家会从中有所收获。

第三讲制作博客的header

通过上一讲的说明大家知道了WordPress 主题最主要的两个文件是style.css 和index.php,他们是最基 本的,但是只有他们显然是不完美的,虽然你可以把所有的功能都写到index.php 中,但这不符合 WordPress 主题制作的规范,这一讲我们将学习如何按照规范去制作自己的主题。

从上面的图示我们可以看出一个基本的WordPress 页面是由四部分构成的(header.php,
index.php, footer.php, sidebar.php),他们在WordPress 博客中负责不同的页面部分。我们将在 下面的课程中讲解这四个文件的制作方法,今天我们就先来看看怎样来制作header.php 文 件

(1)首先我们在index.php 中写入如下几个简单的函数,这些函数暂时不做讲解,等讲到index.php 文件时我们会进行说明的。

代码如下:

<?php get_header()?>
<?php get_footer()?>

(2)然后在wpc-tomheng 目录下建立一个header.php 文件。

写入如下代码:

<!DOCTYPE html PUBLIC ”-//W3C//DTD XHTML 1.0
Transitional//EN” ”http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<title> <?php bloginfo(‘name’); ?></title>
<linkrel=”stylesheet” href=”<?php bloginfo(’stylesheet_url’); ?>” type=”text/css” media=”screen”
/>
</head>
<body>
<div >
<h1><a href=”<?php echo get_option(‘home’); ?>/”><?php bloginfo(‘name’); ?></a></h1>
<div class=”description”><?php bloginfo(‘description’); ?></div>
</div>
</body>

(3)打开浏览器查看主题是不是可以看到显示出博客的名字还有描述啦。 恩,这就是模版函数的功劳了,下面我们就看看这个是如何实现的。

说明:
一、bloginfo()模版函数

Bloginfo()就是个模版函数,通过它我们可以调用你博客相关的信息,我们在header.php 中 用到了四次这个函数,取出了三个主要的数据:博客的名字bloginfo(‘name’)、样式文件 bloginfo(’stylesheet_url’)、博客描 bloginfo(‘description’)。

这里需要特别指出的有两点:

1)Bloginfo()函数具有输出功能,即他不是返回数据,而是直接把数据输出到浏览器。

2)Boginfo()输出不同的数据通过参数配置实现。Bloginfo()函数的常用配置参数说明

二、get_option()函数

我们在这里用这个函数得到了博客链接的地址,这个函数需要注意就一点他返回的是一个 url 地址变量,所以如果要在页面上显示那么需要在他的前面加上echo 函数。当然我们还应该加上一些样式,但是这超出了我们教程的范围,我在这里只是向大家解释如 何使用这些模版函数和主题制作的基本方法,并不会去叫大家如何设计主题,掌握了这些知 识再加上丰富的创意才能实现漂亮的主题,这要依赖于你的css 知识基础和设计能力而这些不包含在我们教程的内容之中(也许以后wpc 会提供相关的教程,请密切关注)

(2)打开浏览器查看主题是不是可以看到显示出博客的名字还有描述啦。恩,这就是模版 函数的功劳了,下面我们就看看这个是如何实现的。