thinkphp设置404页面

听说所有的文件会从index.php进来,所以理论上就不存在404,但是又要404,网上找的。
注意下文件的路径问题,因为每个项目的环境不一样。

第一步,
在Lib/Action文件夹下创建EmptyAction.class.php

<?php
	class EmptyAction extends Action 
	{
		function _empty()
		{
			header("HTTP/1.0 404 Not Found");
			$this->display('Public:404');
		} 
		// 404
		function index() 
		{
			header("HTTP/1.0 404 Not Found");
			$this->display('Public:404');
		}	
	}

第二步,
修改Lib/Action文件夹下所有的Action文件
添加一个方法

	function _empty()
	{
		header("HTTP/1.0 404 Not Found");
		$this->display('Public:404');
	}

第三步,
在Tpl/Public文件夹下创建404.html

http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<META http-equiv=refresh content="20;URL = http://666vpn.com/">
<title>您访问的网页不存在...</title> 
</head>
<body>
<style type="text/css">
body,ul,ol,li,p,dt,dl,dd,h1,h2,h3,h4,h5,h6,form,fieldset,table,td,th,img,div{margin:0;padding:0}
img { border:0}
body{background:#fff;color:#333;font-size:12px;font-family:Arial,'宋体'}
ul,ol{list-style:none}
h2,h3,h4,h5,h6,em,stone,i{font-size:12px;font-weight:400}
select,input,select{vertical-align:middle}
a:link,a:visited{color:#333;text-decoration:none}
a:hover,a:active,a:focus{color:#f60;text-decoration:underline}
.clear{clear:both}
.left { float:left; display:inline-block}
.wrap { width:960px; overflow:hidden; margin:0 auto;}
#top { height:43px; overflow:hidden; background:#343434; width:100%}
#top ul { margin-left:20px;}
#top li { float:left; display:inline-block; padding:0 15px;}
#top a { color:#fff; font-size:14px; line-height:43px;}
.login { float:right; display:inline-block;}
.login a { padding-left:10px;}
.m404 {margin:100px auto; vertical-align:middle; text-align:center}
</style>
<div class="m404">
<a href="http://666vpn.com/"><img src="/Public/images/404.png" width="409" height="177" alt="真的很抱歉,我们搞丢了页面……要不去网站首页看看" border="0"></a></div>
</body>
</html>

thinkphp前台模版字符串截取

转载自:http://blog.21514.com/archives/269
ThinkPHP\Common\extend.php 中管理前台模版的截取{$vons.title|msubstr=0,26}
原始的代码是无法使用截取支持…. 由于涉及到只有汉字检测最为准确
需要加入代码让他正常的分页截取之后加入…

function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)
{
	if(strlen($str)/3>$length)
	{
		if(function_exists("mb_substr"))	
		{
			return mb_substr($str, $start, $length, $charset).'…';
		}
		elseif(function_exists('iconv_substr')) 
		{
			return iconv_substr($str,$start,$length,$charset).'…';
		}
		$re['utf-8']   	= 	"/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
		$re['gb2312'] 	= 	"/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
		$re['gbk']    	= 	"/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
		$re['big5']   	= 	"/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
		preg_match_all($re[$charset], $str, $match);
		$slice 			= 	join("",array_slice($match[0], $start, $length));
		if($suffix)
		{
			return $slice;
		}
		else
		{
			return $slice;
		}
	}
	return $str;
}

ThinkPhp支付宝验证失败

原因是因为thinkphp会在post时多带一个参数_URL_
把它给过滤就好了
修改alipay_core.function.php

/**
 * 除去数组中的空值和签名参数
 * @param $para 签名参数组
 * return 去掉空值与签名参数后的新签名参数组
 
function paraFilter($para) {
	$para_filter = array();
	while (list ($key, $val) = each ($para)) {
		if($key == "sign" || $key == "sign_type" || $val == "")continue;
		else	$para_filter[$key] = $para[$key];
	}
	return $para_filter;
}
*/
function paraFilter($para) {
 
    $para_filter = array();
 
    foreach ($para as $key => $val) {
 
        if($key == "sign" || $key == "sign_type" || $key == "_URL_" || $val == "")continue;
        else    $para_filter[$key] = $para[$key];
    }
    return $para_filter;
}

删除ThinkPhp的缓存文件

最近公司的项目是thinkphp做的,于是搞thinkphp,但是缓存实在太痛苦了,按照网上配置这里配置那里还是不行,干脆直接写个文件删除runtime下面的文件.
当然logs不用删,要存储一些日志的.

<?php
 	$dirPath	=	"./Runtime";
 	$fileArr	=	file_list($dirPath);
 	foreach($fileArr as $file)
 	{
 		if(strstr($file,"Logs")==false)
 		{
 			unlink($file);
 			echo $file.'<br />';
 		}
 	}
 
 	$fileList	=	array();
 	function file_list($path)
 	{
 		global $fileList;
 		if ($handle = opendir($path)) 
 		{
 			while (false !== ($file = readdir($handle))) 
 			{
 				if ($file != "." && $file != "..") 
 				{
 					if (is_dir($path."/".$file)) 
 					{
 						//echo $path."/".$file."<br>";
 						file_list($path."/".$file);
 					} 
 					else 
 					{
 						//echo $path."/".$file."<br>";
 						$fileList[]	=	$path."/".$file;
 					}
 				}
 			}
 		}
 		return $fileList;
 	}
 ?>

THINKPHP兄弟连李文凯老师视频笔记:16分页和验证码

16分页和验证码
E:\wamp\www\thinkphp\ThinkPHP\Lib\ORG\Util\Image.class.php
使用Import导入 (import(‘ORG.Util.Image’))

	<form action="__URL__/add" method="POST">
		用户名<input type="text" name="uname"><br>
		密码<input type="password" name="upass"><br>
		重复密码<input type="password" name="repassword"><br>
		验证码:<input type="text" name="verify"><img src="__APP__/common/verify" onclick="show(this)">
		<input type="submit" value="提交">
		<script>
			function show(obj){
						obj.src="__APP__/common/verify/random/"+Math.random();
			}
		</script>
	</form>
<?php
class CommonAction extends Action
{
		function verify(){
			//导入验证码类	//因为图像处理类并不是系统当中的核心类,因此,我们在使用的时候,他不会自动加载过来。我们需要导入一次
			import('ORG.Util.Image');
			//代表当前项目的LIB文件夹
			//import('@.Org.Image');
			//Image::buildImageVerify(10,5,gif,90,30,'verify');
			Image::GBVerify(); //要引入Srting.class.php,并且复制字体到Util文件夹下
			//length
			//type
			//width
			//height
			//fontface
			//verifyName
 
 
			//buildImageVerify();
			// simhei.ttf
 
			//第一个参数为长度 默认为4个长度
			//第二项为模式,类型  0字母 1数字,2大写字母,3为小写字母 4中文,5混合
			//第三个,图像输出的类型 默认为png ,有些同学的服务器上面没有开png的话,请将此处可以直接改
			//第四项,宽度  是根据长度自动计算
			//第五项,高度  22
			// 第六项,验证码保存在session当中的名称,不建议大家修改	
		}
}
?>

分页
E:\wamp\www\thinkphp\ThinkPHP\Lib\ORG\Util\Page.class.php

 
		function index()
		{
			//多扩展一点点模版方面的知识
			import('@.Org.Page');
			$user=M('user');		
			$count=$user->count();
			$page=new Page($count,3);
			/*
			$page->setConfig('header','个会员');
			$page->setConfig('prev','上一组会员');
			$page->setConfig('next','下一组会员');
			$page->setConfig('first','首页');
			$page->setConfig('last','尾页');
			*/
			//作业,建议大家把这里自定义分页样式,自己做一个漂亮的出来	
			//  %totalRow%
			//  %header%
			//  %nowPage%
			//  %totalPage%
			//  %upPage%
			//  %downPage%
			//  %first%  last   linkpage   %end%
			$page->setConfig('theme','');
			$show=$page->show();
			$list=$user->field(array('id','username','createip'))->order('id desc')->limit($page->firstRow.','.$page->listRows)->select();
			$this->assign('title','thinkphp视频演示');
			$this->assign('alist',$list);
			$this->assign('page',$show);
			$this->display();
		}