Discuz论坛插件的开发

800 views

  花了1个晚上研究了下DZ7.2的插件开发文档,主要是看了页面嵌入模块。写了个用户下载在有效时间内下载次数的功能插件。发现迅雷的线程下载确实恐怖,即使次数设置很大一下子就耗光下载次数,然后附件无法下载了。按照我的理解,应该是第一个线程能够下载到附件,说明地址无问题,其他的线程因为下载次数限制返回错误提示页面的话,无法下载就算了,但是最后连第一个线程也无法下载。这到底是迅雷的软件下载原理原因,还是DZ坛子对附件保护功能强大的原因呐,不管什么都是灰常让我觉得他们牛B闪闪的~~~~

  当初一直觉得自己能力还不行,一听DZ插件开发,哇那多牛B的能力呐。自己肯定做不了~~~

 后来找了官方的开发文档仔细看了下。琢磨了整个流程,其实,无论什么当初看起来无解的事情,都是有方法有路子的,咱一界菜鸟刚出道还不是写下来了。

半手动对WP开启GZIP

1,048 views

  查了点资料,貌似WP之前的版本可以启用压缩功能,后来由于性能原因取消了。干脆手动开启,也不知道是否真的有效果~~~反正测试上是通过了

方法

编辑根目录下的index.php文件.

[php]

define(‘WP_USE_THEMES’, true);

/** Loads the WordPress Environment and Template */
require(‘./wp-blog-header.php’);

[/php]

添加2行代码成这样

[php]

define(‘WP_USE_THEMES’, true);
if(Extension_Loaded(‘zlib’)) Ob_Start(‘ob_gzhandler’);
/** Loads the WordPress Environment and Template */
require(‘./wp-blog-header.php’);
if(Extension_Loaded(‘zlib’)) Ob_End_Flush();

[/php]

至于压缩CSS和JS文件,还是用别人的吧,靠谱点~~~安装script gzip插件。

测试GIZP网站,点击这里

http://www.lazysite.cn is gzipped

Original Size: 55.18 KB
Gzipped Size: 11.4 KB
Data Savings: 79.34%

捣鼓服务器之首页空白问题

814 views

  一切都是权限问题,当网站前一秒还正常好好的运营,后一秒马上变成了首页空白。各大杨白劳一次又一次地新建计算机管理用户,文件夹添加权限,IIS设置匿名访问,网站就是一片空白,要不就是各种错误。

  一般这种情况,菜鸟我已经被折腾得头昏脑胀,终于有一天,决定重新创建文件夹复制源文件过去的时候。系统提示了某文件夹无法复制,红色警告。找到文件夹打算进入此文件夹看个究竟,好啦,进不去,提示文件夹为空。右键查看文件夹属性,1字节……明明就有东西在里面啊,排除中毒可能。删也删不掉,查看安全权限选项提示 “您无权查看或编辑目前 **** 的权限设置;但是,您可以取得所有权或更改审核设置”。啊哦,权限问题,到底哪设不对我了个去啊~~一遍遍的对比其他网站,一遍遍的失败

  终于我了个插!居然被我弄出来了,谢天谢地~~

  属性>安全>高级>所有者>替换子容器及对象的所有者(勾上!!!!)>确定>确定

  一般网站在线安装插件啊,或者做在线创建文件/文件夹之类操作的时候最容易出这种恶心人的事故。所以,建议诸如WP插件的这种东西,FTP上传才是省心事儿~~~

CI框架中使用Smarty扩展

最近在学习CI的框架,由于需要使用到SMARTY,使更加好的可读性,做了一点研究。

CI版本 1.7.2

4,298 views

最近在学习CI的框架,由于需要使用到SMARTY,使更加好的可读性,做了一点研究。
 

CI版本 1.7.2
 

下载smarty,解压到application/libraries/smarty下,同时在application下建立文件SmartyExtended.php
 

文件内容为
 
[php]
<?php
/**
* @CopyRight Weizhao
* Email:weizhao029@foxmail.com
* 2010-8-2
* Smarty类的扩展,仅限在CI中使用
*/
defined(‘BASEPATH’) or die (‘无法直接执行此文件’);

//定义Smarty地址
define(‘SMARTY_DIR’, APPPATH . ‘libraries/smarty/’);
require(SMARTY_DIR . ‘Smarty.class.php’);

class SmartyExtended extends Smarty
{
var $CI;
var $lang_code;

//构造函数
function SmartyExtended()
{
$this->CI = &get_instance();

//改变语言
if($this->CI->session->userdata(‘app_language’) != FALSE)
$this->CI->config->set_item(‘language_code’, $this->CI->session->userdata(‘app_language’));

//载入 settings 模型
//$this->CI->load->model(‘settingsmodel’);
//载入 application 模型
//$this->CI->load->model(‘applicationmodel’);
//载入 report 模型
//$this->CI->load->model(‘reportmodel’);
//载入 footer 模型
//$this->CI->load->model(‘footermodel’);

//载入语言文件
$this->CI->lang->load(‘libraries/smarty’, $this->CI->config->item(‘language_code’));
//载入application语言文件
$this->CI->lang->load(‘application’, $this->CI->config->item(‘language_code’));

//如果cache文件夹不存在,建立cache文件夹,同时修改文件夹权限
if(!file_exists(SMARTY_DIR . ‘cache’))
{
mkdir(SMARTY_DIR . ‘cache’, 0777);
}
@chmod(SMARTY_DIR . ‘cache’, 0777);

//如果config文件夹不存在,建立config文件夹,同时修改文件夹权限
if(!file_exists(SMARTY_DIR . ‘configs’))
{
mkdir(SMARTY_DIR . ‘configs’, 0777);
}
@chmod(SMARTY_DIR . ‘configs’, 0777);

//如果templates_c文件夹不存在,建立templates_c文件夹,同时修改文件夹权限
if(!file_exists(SMARTY_DIR . ‘templates_c’))
{
mkdir(SMARTY_DIR . ‘templates_c’, 0777);
}
@chmod(SMARTY_DIR . ‘templates_c’, 0777);

//配置SMARTY
$this->template_dir = APPPATH . ‘views/’ . $this->CI->config->item(‘layout’) . ‘/’;
$this->compile_dir = SMARTY_DIR . ‘templates_c/’;
$this->config_dir = SMARTY_DIR . ‘configs/’;
$this->cache_dir = SMARTY_DIR . ‘cache/’;
$this->left_delimiter = ‘{#’;
$this->right_delimiter = ‘#}’;

$this->caching = TRUE;
$this->force_compile = TRUE;
$this->compile_check = TRUE;

//$this->CI->load->helper(‘url’);
//载入以下变量在所有tpl中都可能用到
//print_r(get_class_methods());
$this->assign_by_ref(‘lang’, $this->CI->lang);
$this->assign_by_ref(‘session’, $this->CI->session);
$this->assign(‘base_url’, base_url());
$this->assign(‘app_url’, base_url() . ‘application/’);
$this->assign(‘language’, $this->CI->config->item(‘language_code’));
$this->assign(‘avatar_thumb_width’, $this->CI->config->item(‘avatar_thumb_width’));
$this->assign(‘avatar_thumb_height’, $this->CI->config->item(‘avatar_thumb_height’));
$this->assign(‘app_languages’, $this->CI->applicationmodel->getLanguages());
$this->assign(‘reportType’, $this->CI->reportmodel->getReportType());
$this->assign(‘footerLinks’, $this->CI->footermodel->getFooters());
$this->assign(‘curr_uri_string’, $this->CI->uri->uri_string());

//是否登陆
if(isLoggedIn())
{
$this->_initApplication();
}

//写入日志
log_messge(‘debug’, "SmartyExtended Class Initialized");

}

//显示模板
function view($template, $data = ”, $show = FALSE)
{
if(is_array($data))
{
foreach ($data as $key => $val)
{
$this->assign($key, $val);
}
}

if(file_exists($this->template_dir . $template . ‘.html’))
{
if($show == FALSE)
{
$this->display($template . ‘html’);
}
else
{
//打开缓冲区域
ob_start();

//显示模板,以便在缓冲区捕获内容
$this->display($template . ‘html’);

//获取输出内容
$content = ob_get_contents();

//关闭缓冲区域
ob_end_flush();

return $content;
}
}
else
show_error(sprintf($this->CI->lang->line(‘load_template_error’), ‘views/’ . $this->CI->config->item(‘layout’) . ‘/’ . $template . ‘.html’));
}

//初始化APPLICATION的一些实例
function _initApplication()
{
$settings = $this->CI->settingsmodel->readAllSetting();
$userApps = $this->CI->applicationmodel->getUserApplications();
$isApp = $this->CI-> applicationmodel->isApplication(strtolower($this->CI->uri->segment(1)));

$canAccess = TRUE;

if($canAccess && $this->CI->applicationmodel->isUserCanAccessTheApplication($isApp) == FALSE)
{
$canAccess = FALSE;
}

if($canAccess)
{
$this->assign(‘userApplications’, $userApps);

//载入各种设置
$this->assign(‘settings’, $settings);
$this->assign(‘sitename’, $settings[‘site_name’]);
$this->assign(‘sitetitle’, $settings[‘site_title’]);

//以下变量在网站中需要使用
$this->assgin(‘user_id’, $this->CI->session->userdata(‘user_id’));
$this->assign(‘curr_page’, strtolower($this->CI->uri->segment(1)));
}
else
{
redirect(‘welcome’);
}
}
}
?>

[/php]

 
 

建立文件后还没完,还要在application/init文件夹下建立文件init_smartyextended.php
 
[php]
 
<?php
defined(‘BASEPATH’) or die("不能直接执行此文件");
/**
* @CopyRight Weizhao
* Email:weizhao029@foxmail.com
* 2010-8-2
*
* Loads and instantiates smartyextended class
*
*/
if(!class_exists(‘SmartyExtended’))
{
require_once(APPPATH.’libraries/SmartyExtended’.EXT);
}

$obj =& get_instance();
$obj->smartyextended = new SmartyExtended();
$obj->ci_is_loaded[] = ‘smartyextended’;
?>

 
 

[/php]

大功告成 

千呼万唤试出来——服务器后台正常,前台内部服务器HTTP错误500怪异思路

通宵装WordPress,这让我情何以堪.明明WP上说5分钟快速安装的,明明是这样的~~~~readme.html上说得那叫一个轻松,著名的5分钟安装,您还沉浸在快速安装的美妙过程中吧?我了个插!

3,070 views

  通宵装WordPress,这让我情何以堪.明明WP上说5分钟快速安装的,明明是这样的~~~~readme.html上说得那叫一个轻松,著名的5分钟安装,您还沉浸在快速安装的美妙过程中吧?我了个插!

  总是事与愿违。安装数据库之类的全部安装正确,委实的5分钟快速安装,我差点没笑出来。但是登陆后台,界面是正常显示的,一登陆前台,提示内部服务器错误,代码:HTTP500

  我就郁闷了,提示不明确。开始是以为服务器没有让我的域名接入,用有效域名解析到网站目录仍然错误500.于是本地调试,发现warning警告 header already send by *&#*($#(&*  ,查看错误文件行数,添加@抑制符,没有了错误500但是页面一片空白。查看WP各种文件,发现?>后很多都多出一个空白行,猜测是already原因,但是文件太多,WP不可能犯这种错误啊。先放过此问题,检查服务器目录权限问题。给了目录完全权限,仍然错误500.抓狂~~~

  后多来添加了级目录后终于解决无法显示问题,具体问题是因为什么原理解决的我不懂。

具体奇怪的解决过程这样——–

环境IIS兼容PHP,网站根目录为 [盘符]:wwwwp,设置wp目录为完全权限,此时网站后台正常,前台HTTP 500错误

添加目录为[盘符]:wwwwpwordpress ,设置wp和wordpress目录为完全权限,一切正常

这是怎么回事?如果服务器配置高手或者知道原理的,请联系我告诉我原因.