<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Just think it &#187; ThinkPHP</title>
	<atom:link href="http://www.wenan8.com/blog/archives/tag/thinkphp/feed" rel="self" type="application/rss+xml" />
	<link>http://www.wenan8.com/blog</link>
	<description>每天跑跑步有益身体健康哦！ ^_^</description>
	<lastBuildDate>Fri, 05 Aug 2011 03:01:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>ThinkPHP海量数据分表机制详细代码及说明</title>
		<link>http://www.wenan8.com/blog/archives/455</link>
		<comments>http://www.wenan8.com/blog/archives/455#comments</comments>
		<pubDate>Wed, 23 Feb 2011 08:34:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[ThinkPHP]]></category>
		<category><![CDATA[分表]]></category>
		<category><![CDATA[数据库]]></category>

		<guid isPermaLink="false">http://www.wenan8.com/blog/?p=455</guid>
		<description><![CDATA[应用ThinkPHP内置的分表算法处理百万级用户数据. 数据表： house_member_0 house_member_1 house_member_2 house_member_3 模型: 1 2 3 4 5 6 7 8 9 10 class MemberModel extends AdvModel &#123; &#160; protected $partition = array&#40;'field'=&#62;'username','type'=&#62;'id','num'=&#62;'4'&#41;; &#160; public function getDao&#40;$data=array&#40;&#41;&#41; &#123; $data = empty&#40;$data&#41; ? $_POST : $data; $table = $this-&#62;getPartitionTableName&#40;$data&#41;; return $this-&#62;table&#40;$table&#41;; &#125; &#125; 方法: 1 2 3 4 5 6 7 8 [...]]]></description>
			<content:encoded><![CDATA[<p>应用ThinkPHP内置的分表算法处理百万级用户数据.</p>
<p>数据表：<br />
house_member_0<br />
house_member_1<br />
house_member_2<br />
house_member_3</p>
<p>模型:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> MemberModel <span style="color: #000000; font-weight: bold;">extends</span> AdvModel <span style="color: #009900;">&#123;</span>
&nbsp;
    protected <span style="color: #000088;">$partition</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'field'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'username'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'type'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'id'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'num'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'4'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getDao<span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #339933;">=</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span> ? <span style="color: #000088;">$_POST</span> <span style="color: #339933;">:</span> <span style="color: #000088;">$data</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$table</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getPartitionTableName</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">table</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$table</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><span id="more-455"></span><br />
方法:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> MemberAction <span style="color: #000000; font-weight: bold;">extends</span> BaseAction <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> login<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isPost</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">validToken</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #000088;">$dao</span> <span style="color: #339933;">=</span> D<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Member'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getDao</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #000088;">$res</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$dao</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">where</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'username = '</span><span style="color: #339933;">.</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'username'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">find</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #666666; font-style: italic;">// output 为自定义方法</span>
            <span style="color: #666666; font-style: italic;">// $isAjax - bool</span>
            <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">output</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">display</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>ThinkPHP/Lib/Think/Core/Model/AdvModel.class.php 文件 getPartitionTableName 类</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009933; font-style: italic;">/**
     +----------------------------------------------------------
     * 得到分表的的数据表名
     +----------------------------------------------------------
     * @access public
     +----------------------------------------------------------
     * @param array $data 操作的数据
     +----------------------------------------------------------
     * @return string
     +----------------------------------------------------------
     */</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getPartitionTableName<span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #339933;">=</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">// 对数据表进行分区</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">partition</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'field'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$field</span>   <span style="color: #339933;">=</span>   <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">partition</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'field'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">partition</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'type'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'id'</span><span style="color: #339933;">:</span>
                    <span style="color: #666666; font-style: italic;">// 按照id范围分表</span>
                    <span style="color: #000088;">$step</span>    <span style="color: #339933;">=</span>   <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">partition</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'expr'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
                    <span style="color: #000088;">$seq</span>    <span style="color: #339933;">=</span>   <span style="color: #990000;">floor</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$field</span> <span style="color: #339933;">/</span> <span style="color: #000088;">$step</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
                    <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'year'</span><span style="color: #339933;">:</span>
                    <span style="color: #666666; font-style: italic;">// 按照年份分表</span>
                    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">is_numeric</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$field</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #000088;">$field</span>   <span style="color: #339933;">=</span>   <span style="color: #990000;">strtotime</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$field</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #009900;">&#125;</span>
                    <span style="color: #000088;">$seq</span>    <span style="color: #339933;">=</span>   <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Y'</span><span style="color: #339933;">,</span><span style="color: #000088;">$field</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">partition</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'expr'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
                    <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'mod'</span><span style="color: #339933;">:</span>
                    <span style="color: #666666; font-style: italic;">// 按照id的模数分表</span>
                    <span style="color: #000088;">$seq</span>    <span style="color: #339933;">=</span>   <span style="color: #009900;">&#40;</span><span style="color: #000088;">$field</span> <span style="color: #339933;">%</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">partition</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'num'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
                    <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'md5'</span><span style="color: #339933;">:</span>
                    <span style="color: #666666; font-style: italic;">// 按照md5的序列分表</span>
                    <span style="color: #000088;">$seq</span>    <span style="color: #339933;">=</span>   <span style="color: #009900;">&#40;</span><span style="color: #990000;">ord</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$field</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">%</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">partition</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'num'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
                    <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">default</span> <span style="color: #339933;">:</span>
                    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">function_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">partition</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'type'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #666666; font-style: italic;">// 支持指定函数哈希</span>
                        <span style="color: #000088;">$fun</span>    <span style="color: #339933;">=</span>   <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">partition</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'type'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
                        <span style="color: #000088;">$seq</span>    <span style="color: #339933;">=</span>   <span style="color: #009900;">&#40;</span><span style="color: #990000;">ord</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fun</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$field</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">%</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">partition</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'num'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
                    <span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
                        <span style="color: #666666; font-style: italic;">// 按照字段的首字母的值分表</span>
                        <span style="color: #000088;">$seq</span>    <span style="color: #339933;">=</span>   <span style="color: #009900;">&#40;</span><span style="color: #990000;">ord</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$field</span><span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">%</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">partition</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'num'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
                    <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span>
            <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getTableName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'_'</span><span style="color: #339933;">.</span><span style="color: #000088;">$seq</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
            <span style="color: #666666; font-style: italic;">// 当设置的分表字段不在查询条件或者数据中</span>
            <span style="color: #666666; font-style: italic;">// 进行联合查询，必须设定 partition['num']</span>
            <span style="color: #000088;">$tableName</span>  <span style="color: #339933;">=</span>   <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">&lt;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">partition</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'num'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
                <span style="color: #000088;">$tableName</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'SELECT * FROM '</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getTableName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'_'</span><span style="color: #339933;">.</span><span style="color: #000088;">$i</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$tableName</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'( '</span><span style="color: #339933;">.</span><span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; UNION &quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$tableName</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">') AS '</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">return</span> <span style="color: #000088;">$tableName</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>原文转自:http://lvtao.net/showarticle.php?articleid=1066&#038;p=1</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wenan8.com/blog/archives/455/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ThinkPHP 使用U方法支持分组</title>
		<link>http://www.wenan8.com/blog/archives/357</link>
		<comments>http://www.wenan8.com/blog/archives/357#comments</comments>
		<pubDate>Sat, 28 Aug 2010 14:19:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[ThinkPHP]]></category>
		<category><![CDATA[U]]></category>
		<category><![CDATA[U方法]]></category>

		<guid isPermaLink="false">http://www.wenan8.com/blog/?p=357</guid>
		<description><![CDATA[thinkphp 使用U方法支持分组 U方法可以用来动态的生成需要的URL地址，如果使用了分组模式，我们仍然可以使用U方法。 U(&#8216;/Admin-User/add&#8217;); 生成的URL表示Admin分组的User模块的add操作，注意 Admin-User 之间的“-” 是固定的 同样的道理，我们在Action类的redirect方法中也可以这样使用 $this->redirect(&#8216;/Admin-User/add&#8217;);]]></description>
			<content:encoded><![CDATA[<p>thinkphp 使用U方法支持分组</p>
<p>U方法可以用来动态的生成需要的URL地址，如果使用了分组模式，我们仍然可以使用U方法。<br />
U(&#8216;/Admin-User/add&#8217;);<br />
生成的URL表示Admin分组的User模块的add操作，注意 Admin-User 之间的“-” 是固定的<br />
同样的道理，我们在Action类的redirect方法中也可以这样使用<br />
$this->redirect(&#8216;/Admin-User/add&#8217;);</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wenan8.com/blog/archives/357/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ThinkPHP 设置默认时区</title>
		<link>http://www.wenan8.com/blog/archives/359</link>
		<comments>http://www.wenan8.com/blog/archives/359#comments</comments>
		<pubDate>Fri, 27 Aug 2010 14:21:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Think]]></category>
		<category><![CDATA[ThinkPHP]]></category>
		<category><![CDATA[默认时区]]></category>

		<guid isPermaLink="false">http://www.wenan8.com/blog/?p=359</guid>
		<description><![CDATA[Thinkphp 设置默认时区 有些应用所在的服务器和访问的区域间隔较大，导致服务器时间不准确，我们可以通过设置默认时区的方法来处理。 我们只需要在项目配置文件中添加： &#8216;DEFAULT_TIMEZONE&#8217;=>&#8217;Asia/Singapore&#8217; // 设置默认时区为新加坡]]></description>
			<content:encoded><![CDATA[<p>Thinkphp 设置默认时区</p>
<p>有些应用所在的服务器和访问的区域间隔较大，导致服务器时间不准确，我们可以通过设置默认时区的方法来处理。</p>
<p>我们只需要在项目配置文件中添加：<br />
&#8216;DEFAULT_TIMEZONE&#8217;=>&#8217;Asia/Singapore&#8217; // 设置默认时区为新加坡</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wenan8.com/blog/archives/359/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ThinkPHP导入Excel</title>
		<link>http://www.wenan8.com/blog/archives/294</link>
		<comments>http://www.wenan8.com/blog/archives/294#comments</comments>
		<pubDate>Mon, 21 Jun 2010 16:19:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[EXCEL]]></category>
		<category><![CDATA[ThinkPHP]]></category>

		<guid isPermaLink="false">http://www.wenan8.com/blog/?p=294</guid>
		<description><![CDATA[前面写过一篇PHP读取EXCEL插入Mysql数据库中，应用phpExcelReader导入, 这次做毕业设计时用的ThinkPHP，有个上传学生信息(excel)插入数据库的功能,其实原理一样,先是上传，然后读取内容，然后根据phpExcelReader的read读取各sheet值然后插入数据库。其代码为： import.html 1 2 3 4 5 6 7 &#60;form method=&#34;post&#34; action=&#34;__URL__/import&#34; name=&#34;form1&#34; enctype=&#34;multipart/form-data&#34;&#62; &#60;table cellspacing=&#34;0&#34; cellpadding=&#34;0&#34; border=&#34;1&#34;&#62; &#60;tr&#62; &#60;td &#62;&#60;input type=&#34;file&#34; name=&#34;myfile&#34; /&#62; &#60;input type=&#34;submit&#34; class=&#34;mybutton&#34; name=&#34;import&#34; value=&#34;导入&#34; &#62;&#60;/td&#62; &#60;/tr&#62; &#60;/table&#62; &#60;/form&#62; StudentsAction.class.php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [...]]]></description>
			<content:encoded><![CDATA[<p> 前面写过一篇<a href="http://www.wenan8.com/blog/archives/221" target=_blank>PHP读取EXCEL插入Mysql数据库中</a>，应用phpExcelReader导入, 这次做毕业设计时用的ThinkPHP，有个上传学生信息(excel)插入数据库的功能,其实原理一样,先是上传，然后读取内容，然后根据phpExcelReader的read读取各sheet值然后插入数据库。其代码为：<br />
import.html</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;form method=&quot;post&quot; action=&quot;__URL__/import&quot; name=&quot;form1&quot; enctype=&quot;multipart/form-data&quot;&gt;
                &lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;1&quot;&gt;
                    &lt;tr&gt;
		&lt;td &gt;&lt;input type=&quot;file&quot; name=&quot;myfile&quot; /&gt; &lt;input type=&quot;submit&quot; class=&quot;mybutton&quot; name=&quot;import&quot; value=&quot;导入&quot; &gt;&lt;/td&gt;
                    &lt;/tr&gt;
                &lt;/table&gt;
	&lt;/form&gt;</pre></td></tr></table></div>

<p>StudentsAction.class.php</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> StudentsAction <span style="color: #000000; font-weight: bold;">extends</span> Action
<span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> import<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>   
		 <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Content-Type:text/html; charset=utf-8&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		 Vendor<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Excel.reader'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 加载reader类。</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isPost</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
    	<span style="color: #009900;">&#123;</span>
    		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">display</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    	<span style="color: #009900;">&#125;</span>
    	<span style="color: #b1b100;">else</span>
    	<span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'myfile'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">!=</span><span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span>
	     <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$tmp_file</span><span style="color: #339933;">=</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'myfile'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'tmp_name'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$file_types</span><span style="color: #339933;">=</span><span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;.&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'myfile'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$file_type</span><span style="color: #339933;">=</span><span style="color: #000088;">$file_types</span><span style="color: #009900;">&#91;</span><span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file_types</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file_type</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">!=</span><span style="color: #0000ff;">&quot;xls&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
				<span style="color: #666666; font-style: italic;">//  echo &quot;&lt;span style=\&quot;color:red;line-height: 25px;\&quot;&gt;格式错误 &lt;a href=\&quot;#\&quot; onclick=history.go(-1);&gt;请返回&lt;/a&gt; &lt;/span&gt;&quot;;</span>
			 <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">assign</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'jumpUrl'</span><span style="color: #339933;">,</span>__URL__<span style="color: #339933;">/</span>import<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    		        <span style="color: #000088;">$msg</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;格式错误，请重新上传&quot;</span><span style="color: #339933;">;</span>
    		        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">success</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$msg</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #000088;">$savePath</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;Excel/xls/&quot;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Ymdhis'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$file_name</span><span style="color: #339933;">=</span><span style="color: #000088;">$str</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;.&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$file_type</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">copy</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$tmp_file</span><span style="color: #339933;">,</span><span style="color: #000088;">$savePath</span><span style="color: #339933;">.</span><span style="color: #000088;">$file_name</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
				<span style="color: #666666; font-style: italic;">//echo &quot;&lt;span style=\&quot;color:red;line-height: 25px;\&quot;&gt;上传错误请重试！！&lt;a href=# onclick=history.go(-1);&gt;[返回]&lt;/a&gt;&lt;/span&gt;&quot;;</span>
				<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">assign</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'jumpUrl'</span><span style="color: #339933;">,</span>__URL__<span style="color: #339933;">/</span>import<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    		        <span style="color: #000088;">$msg</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;上传错误，请重新上传&quot;</span><span style="color: #339933;">;</span>
    		        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">success</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$msg</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
			    <span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Spreadsheet_Excel_Reader<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$data</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setOutputEncoding</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'utf-8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$data</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">read</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Excel/xls/&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$file_name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;=</span> <span style="color: #000088;">$data</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sheets</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'numRows'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 
                                    <span style="color: #000088;">$number</span><span style="color: #339933;">=</span><span style="color: #000088;">$data</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sheets</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'cells'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>                               <span style="color: #000088;">$passwd</span><span style="color: #339933;">=</span><span style="color: #000088;">$data</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sheets</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'cells'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>	                       <span style="color: #000088;">$name</span><span style="color: #339933;">=</span><span style="color: #000088;">$data</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sheets</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'cells'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> 
                                    <span style="color: #000088;">$catid</span><span style="color: #339933;">=</span><span style="color: #000088;">$data</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sheets</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'cells'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
                                    <span style="color: #000088;">$sex</span><span style="color: #339933;">=</span><span style="color: #000088;">$data</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sheets</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'cells'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
                                    <span style="color: #000088;">$tel</span><span style="color: #339933;">=</span><span style="color: #000088;">$data</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sheets</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'cells'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
                                    <span style="color: #000088;">$home</span><span style="color: #339933;">=</span><span style="color: #000088;">$data</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sheets</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'cells'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
                                    <span style="color: #000088;">$minzu</span><span style="color: #339933;">=</span><span style="color: #000088;">$data</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sheets</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'cells'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">7</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
                                    <span style="color: #000088;">$Students</span><span style="color: #339933;">=</span>D<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Students&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				 <span style="color: #000088;">$info</span><span style="color: #339933;">=</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
            	                                               <span style="color: #0000ff;">'number'</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$number</span><span style="color: #339933;">,</span>
				         <span style="color: #0000ff;">'passwd'</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$passwd</span><span style="color: #339933;">,</span>
				         <span style="color: #0000ff;">'name'</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span>
				         <span style="color: #0000ff;">'catid'</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$catid</span><span style="color: #339933;">,</span>
				         <span style="color: #0000ff;">'sex'</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$sex</span><span style="color: #339933;">,</span>
				         <span style="color: #0000ff;">'tel'</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$tel</span><span style="color: #339933;">,</span>
				         <span style="color: #0000ff;">'home'</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$home</span><span style="color: #339933;">,</span>
            	                                                <span style="color: #0000ff;">'minzu'</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$minzu</span><span style="color: #339933;">,</span>
                                                             <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		           <span style="color: #000088;">$Students</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">create</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$info</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    		            <span style="color: #000088;">$Students</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">add</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                   <span style="color: #009900;">&#125;</span>
		       <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">assign</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'jumpUrl'</span><span style="color: #339933;">,</span>__URL__<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    		        <span style="color: #000088;">$msg</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;学生信息导入成功&quot;</span><span style="color: #339933;">;</span>
    		        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">success</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$msg</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              	<span style="color: #009900;">&#125;</span>
	     <span style="color: #009900;">&#125;</span>
	  <span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.wenan8.com/blog/archives/294/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>ThinkPHP 不创建模型类如何自动验证</title>
		<link>http://www.wenan8.com/blog/archives/207</link>
		<comments>http://www.wenan8.com/blog/archives/207#comments</comments>
		<pubDate>Fri, 05 Mar 2010 15:23:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[ThinkPHP]]></category>
		<category><![CDATA[模型类]]></category>
		<category><![CDATA[自动验证]]></category>

		<guid isPermaLink="false">http://www.wenan8.com/blog/?p=207</guid>
		<description><![CDATA[我们知道，ThinkPHP的模型有自动验证和自动完成功能，但是通常我们需要在模型类里面定义验证因子和完成因子。这样的话，我们使用M方法实例化模型的时候就不能使用内置的自动完成和自动验证功能了，其实仍然有办法的，因为TP提供了一个强大的属性动态更改的方法setProperty。利用该方法就完全可以用M方法实现自动验证功能了，例如： $User = M(&#8216;User&#8217;); $auto = array ( array(&#8216;status&#8217;,&#8217;1&#8242;), // 新增的时候把status 字段设置为 1 array(&#8216;password&#8217;,'md5&#8242;,1,&#8217;function&#8217;) // 对 password 字段在新增的时候使md5 函数处理 array(&#8216;name&#8217;,'getName&#8217;,1,&#8217;callback&#8217;) // 对 name 字段在新增的时候回调 getName 方法 array(&#8216;create_time&#8217;,'time&#8217;,2,’function’), // 对 create_time 字段在更新的时候写入当前时间戳 ); $validate = array( array(&#8216;verify&#8217;,'require&#8217;,'验证码必须！&#8217;), //默认情况下用正则进行验证 array(&#8216;repassword&#8217;,'password&#8217;,'确认密码不正确&#8217;,0,’confirm’), // 验证确认密码是否和密码一致 array(&#8216;password&#8217;,'checkPwd&#8217;,'密码格式不正确&#8217;,0,’function’), // 自定义函数验证密码格式 ); $User->setProperty(&#8216;_auto&#8217;,$auto); $User->setProperty(&#8216;_validate&#8217;,$validate); if($User->create()){ $User->add(); }else{ $this->error($User->getError()); } 完成自动验证和自动完成只是setProperty方法的一个小技巧而已，更强大的功能还需要你去发挥了。]]></description>
			<content:encoded><![CDATA[<p>我们知道，ThinkPHP的模型有自动验证和自动完成功能，但是通常我们需要在模型类里面定义验证因子和完成因子。这样的话，我们使用M方法实例化模型的时候就不能使用内置的自动完成和自动验证功能了，其实仍然有办法的，因为TP提供了一个强大的属性动态更改的方法setProperty。利用该方法就完全可以用M方法实现自动验证功能了，例如：<br />
$User = M(&#8216;User&#8217;);<br />
$auto = array (<br />
array(&#8216;status&#8217;,&#8217;1&#8242;), // 新增的时候把status 字段设置为 1<br />
array(&#8216;password&#8217;,'md5&#8242;,1,&#8217;function&#8217;) // 对 password 字段在新增的时候使md5 函数处理<br />
array(&#8216;name&#8217;,'getName&#8217;,1,&#8217;callback&#8217;) // 对 name 字段在新增的时候回调 getName 方法<br />
array(&#8216;create_time&#8217;,'time&#8217;,2,’function’), // 对 create_time 字段在更新的时候写入当前时间戳<br />
);<br />
$validate = array(<br />
array(&#8216;verify&#8217;,'require&#8217;,'验证码必须！&#8217;), //默认情况下用正则进行验证<br />
array(&#8216;repassword&#8217;,'password&#8217;,'确认密码不正确&#8217;,0,’confirm’), // 验证确认密码是否和密码一致<br />
array(&#8216;password&#8217;,'checkPwd&#8217;,'密码格式不正确&#8217;,0,’function’), // 自定义函数验证密码格式<br />
);<br />
$User->setProperty(&#8216;_auto&#8217;,$auto);<br />
$User->setProperty(&#8216;_validate&#8217;,$validate);<br />
if($User->create()){<br />
  $User->add();<br />
}else{<br />
  $this->error($User->getError());<br />
}</p>
<p>完成自动验证和自动完成只是setProperty方法的一个小技巧而已，更强大的功能还需要你去发挥了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wenan8.com/blog/archives/207/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ThinkPHP定制页面Trace显示信息</title>
		<link>http://www.wenan8.com/blog/archives/177</link>
		<comments>http://www.wenan8.com/blog/archives/177#comments</comments>
		<pubDate>Tue, 29 Dec 2009 04:43:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[ThinkPHP]]></category>
		<category><![CDATA[Trace]]></category>

		<guid isPermaLink="false">http://www.wenan8.com/blog/?p=177</guid>
		<description><![CDATA[页面Trace 功能是ThinkPHP 的一个用于开发调试的辅助手段。可以实时显示当前页面的操作的请求信息、运行情况、SQL 执行、错误提示等，启用调试模式的话，页面 Trace 功能会默认开启（除非在项目的调试配置文件中关闭），并且系统默认的Trace 信息包括：当前页面、请求方法、通信协议、请求时间、用户代理、会话 ID、运行情况、SQL 记录、错误记录和文件加载情况。 如果需要扩展自己的Trace 信息，有下面几种方式： 第一种方式：在当前项目的配置目录下面定义 trace.php 文件，返回数组方式的定义，例如： return array&#40; '当前页面'=&#62;$_SERVER&#91;'PHP_SELF'&#93;, '通信协议'=&#62;$_SERVER&#91;'SERVER_PROTOCOL'&#93;,... &#41;; 在显示页面Trace 信息的时候会把这个部分定义的信息追加到系统默认的信息之后，这种方式通常用于 Trace 项目的公共信息。 第二种方式：在 Action 方法里面使用 trace 方法来增加 Trace 信息，该部分可以用于系统的开发阶段调试。例如： $this&#62;trace&#40;'执行时间',$runTime&#41;; $this&#62;trace&#40;'Name 的值',$name&#41;; $this&#62;trace&#40;'GET 变量',dump&#40;$_GET,false&#41;&#41;;]]></description>
			<content:encoded><![CDATA[<p>页面Trace 功能是ThinkPHP 的一个用于开发调试的辅助手段。可以实时显示当前页面的操作的请求信息、运行情况、SQL 执行、错误提示等，启用调试模式的话，页面 Trace 功能会默认开启（除非在项目的调试配置文件中关闭），并且系统默认的Trace 信息包括：当前页面、请求方法、通信协议、请求时间、用户代理、会话 ID、运行情况、SQL 记录、错误记录和文件加载情况。</p>
<p>如果需要扩展自己的Trace 信息，有下面几种方式：</p>
<p>第一种方式：在当前项目的配置目录下面定义 trace.php 文件，返回数组方式的定义，例如：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">return</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
<span style="color: #0000ff;">'当前页面'</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PHP_SELF'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
<span style="color: #0000ff;">'通信协议'</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'SERVER_PROTOCOL'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,...</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>在显示页面Trace 信息的时候会把这个部分定义的信息追加到系统默认的信息之后，这种方式通常用于 Trace 项目的公共信息。</p>
<p>第二种方式：在 Action 方法里面使用 trace 方法来增加 Trace 信息，该部分可以用于系统的开发阶段调试。例如：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$this</span><span style="color: #339933;">&gt;</span>trace<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'执行时间'</span><span style="color: #339933;">,</span><span style="color: #000088;">$runTime</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">&gt;</span>trace<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Name 的值'</span><span style="color: #339933;">,</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">&gt;</span>trace<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'GET 变量'</span><span style="color: #339933;">,</span>dump<span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.wenan8.com/blog/archives/177/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ThinkPHP不创建模型类进行自动验证</title>
		<link>http://www.wenan8.com/blog/archives/174</link>
		<comments>http://www.wenan8.com/blog/archives/174#comments</comments>
		<pubDate>Tue, 29 Dec 2009 04:36:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[setProperty方法]]></category>
		<category><![CDATA[ThinkPHP]]></category>
		<category><![CDATA[自动验证]]></category>

		<guid isPermaLink="false">http://www.wenan8.com/blog/?p=174</guid>
		<description><![CDATA[我们知道，ThinkPHP的模型有自动验证和自动完成功能，但是通常我们需要在模型类里面定义验证因子和完成因子。这样的话，我们使用M方法实例化模型的时候就不能使用内置的自动完成和自动验证功能了，其实仍然有办法的，因为TP提供了一个强大的属性动态更改的方法setProperty。利用该方法就完全可以用M方法实现自动验证功能了， 例如： 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 $User = M&#40;'User'&#41;; $auto = array &#40; array&#40;'status','1'&#41;, // 新增的时候把status 字段设置为 1 array&#40;'password','md5',1,'function'&#41; // 对 password 字段在新增的时候使md5 函数处理 array&#40;'name','getName',1,'callback'&#41; // 对 name 字段在新增的时候回调 getName 方法 array&#40;'create_time','time',2,’function’&#41;, // 对 create_time 字段在更新的时候写入当前时间戳 &#41;; $validate = array&#40; [...]]]></description>
			<content:encoded><![CDATA[<p>我们知道，ThinkPHP的模型有自动验证和自动完成功能，但是通常我们需要在模型类里面定义验证因子和完成因子。这样的话，我们使用M方法实例化模型的时候就不能使用内置的自动完成和自动验证功能了，其实仍然有办法的，因为TP提供了一个强大的属性动态更改的方法setProperty。利用该方法就完全可以用M方法实现自动验证功能了，<br />
例如：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$User</span> <span style="color: #339933;">=</span> M<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'User'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$auto</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span> <span style="color: #009900;">&#40;</span>
<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'status'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'1'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #666666; font-style: italic;">// 新增的时候把status 字段设置为 1</span>
<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'password'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'md5'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'function'</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// 对 password 字段在新增的时候使md5 函数处理</span>
<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'getName'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'callback'</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// 对 name 字段在新增的时候回调 getName 方法</span>
<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'create_time'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'time'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span>’<span style="color: #000000; font-weight: bold;">function</span>’<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #666666; font-style: italic;">// 对 create_time 字段在更新的时候写入当前时间戳</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$validate</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'verify'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'require'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'验证码必须！'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #666666; font-style: italic;">//默认情况下用正则进行验证</span>
<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'repassword'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'password'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'确认密码不正确'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span>’confirm’<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #666666; font-style: italic;">// 验证确认密码是否和密码一致</span>
<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'password'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'checkPwd'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'密码格式不正确'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span>’<span style="color: #000000; font-weight: bold;">function</span>’<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #666666; font-style: italic;">// 自定义函数验证密码格式</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$User</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setProperty</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'_auto'</span><span style="color: #339933;">,</span><span style="color: #000088;">$auto</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$User</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setProperty</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'_validate'</span><span style="color: #339933;">,</span><span style="color: #000088;">$validate</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$User</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">create</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$User</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">add</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">error</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$User</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getError</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.wenan8.com/blog/archives/174/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ThinkPHP添加目录安全文件</title>
		<link>http://www.wenan8.com/blog/archives/118</link>
		<comments>http://www.wenan8.com/blog/archives/118#comments</comments>
		<pubDate>Sat, 19 Dec 2009 04:56:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[ThinkPHP]]></category>
		<category><![CDATA[目录安全]]></category>

		<guid isPermaLink="false">http://www.wenan8.com/blog/?p=118</guid>
		<description><![CDATA[转自流年老大: TP2.0 添加目录安全文件: 在有些服务器环境下面，是开启了apache的目录浏览权限的，这样就会导致用户可以通过URL访问到你的应用目录，查看到你有哪些模块和模板文件，显然对系统的安全性方面造成了一定的影响。 对于这样的情况，TP提供了一个目录安全文件写入的功能，能够在项目的编译过程自动生成各个目录的安全文件，避免直接访问目录。要开启这个功能，我们只需要在项目的入口文件里面添加下面的定义： define(&#8216;BUILD_DIR_SECURE&#8217;,true); 然后访问项目（必须在自动生成项目目录之前访问），这样就会自动给项目目录生成目录安全文件（默认会在相关的目录下面生成空白的index.htm 文件），并且可以自定义安全文件的文件名DIR_SECURE_FILENAME ，默认是 index.html，如果你想给你们的安全文件定义为 default.html 可以使用 define(&#8216;DIR_SECURE_FILENAME&#8217;, &#8216;default.html&#8217;); 还可以支持多个安全文件写入，例如你想同时写入 index.html 和 default.html 两个文件，以满足不同 的服务器部署环境，可以这样定义： define(&#8216;DIR_SECURE_FILENAME&#8217;, &#8216;index.html,default.html&#8217;); 默认的安全文件只是写入一个空白字符串，如果需要写入其他内容，可以通过 DIR_SECURE_CONTENT 参数来指定，例如： define(&#8216;DIR_SECURE_CONTENT&#8217;, &#8216;deney Access!&#8217;); PS： 1、如果在后期设置，需要删除Runtime目录 才能重新生成目录安全文件 2、确保相关目录的可写权限]]></description>
			<content:encoded><![CDATA[<p>转自流年老大:</p>
<p>TP2.0 添加目录安全文件:<br />
在有些服务器环境下面，是开启了apache的目录浏览权限的，这样就会导致用户可以通过URL访问到你的应用目录，查看到你有哪些模块和模板文件，显然对系统的安全性方面造成了一定的影响。<br />
对于这样的情况，TP提供了一个目录安全文件写入的功能，能够在项目的编译过程自动生成各个目录的安全文件，避免直接访问目录。要开启这个功能，我们只需要在项目的入口文件里面添加下面的定义：<br />
define(&#8216;BUILD_DIR_SECURE&#8217;,true);<br />
然后访问项目（必须在自动生成项目目录之前访问），这样就会自动给项目目录生成目录安全文件（默认会在相关的目录下面生成空白的index.htm 文件），并且可以自定义安全文件的文件名DIR_SECURE_FILENAME ，默认是 index.html，如果你想给你们的安全文件定义为 default.html 可以使用<br />
define(&#8216;DIR_SECURE_FILENAME&#8217;, &#8216;default.html&#8217;);<br />
还可以支持多个安全文件写入，例如你想同时写入 index.html 和 default.html 两个文件，以满足不同<br />
的服务器部署环境，可以这样定义：<br />
define(&#8216;DIR_SECURE_FILENAME&#8217;, &#8216;index.html,default.html&#8217;);<br />
默认的安全文件只是写入一个空白字符串，如果需要写入其他内容，可以通过<br />
DIR_SECURE_CONTENT 参数来指定，例如：<br />
define(&#8216;DIR_SECURE_CONTENT&#8217;, &#8216;deney Access!&#8217;);</p>
<p>PS：<br />
1、如果在后期设置，需要删除Runtime目录 才能重新生成目录安全文件<br />
2、确保相关目录的可写权限</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wenan8.com/blog/archives/118/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ThinkPHP 利用伪静态实现网站语言伪装</title>
		<link>http://www.wenan8.com/blog/archives/101</link>
		<comments>http://www.wenan8.com/blog/archives/101#comments</comments>
		<pubDate>Fri, 11 Dec 2009 01:13:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[ThinkPHP]]></category>
		<category><![CDATA[伪装]]></category>
		<category><![CDATA[伪静态]]></category>
		<category><![CDATA[网站语言]]></category>

		<guid isPermaLink="false">http://www.wenan8.com/blog/?p=101</guid>
		<description><![CDATA[TP提供了非常灵活的URL方式, 前面写过 U方法生成伪静态 与 空操作实现伪静态 本文介绍下 利用伪静态实现网站语言伪装: TP里面有一个URL伪静态的功能，本来是用于把URL伪装成一个静态页面地址用于SEO优化，例如设置： 'URL_HTML_SUFFIX'=&#62;'.html' 就可以实现 http://serverName/News.html 这样的URL，实际上就是和 http://serverName/News 具有同样的作用。 稍微改进下，其实这个功能还可以起到表面上伪装网站技术的作用，呵呵~ 例如，想忽悠客户你什么语言都能开发，遇到需要.Net的客户我们改成 'URL_HTML_SUFFIX'=&#62;'.aspx' 就可以把 http://serverName/News 伪装成 http://serverName/News.aspx 遇到要求Java的客户，我们可以改成 'URL_HTML_SUFFIX'=&#62;'.do' 或者 'URL_HTML_SUFFIX'=&#62;'.jsp' 当然,我们不能靠这个忽悠客户, 但是 是不是很好玩儿。 ^_^]]></description>
			<content:encoded><![CDATA[<p>TP提供了非常灵活的URL方式, 前面写过 <a href="http://www.wenan8.com/blog/archives/97">U方法生成伪静态</a><br />
与 <a href="http://www.wenan8.com/blog/archives/48">空操作实现伪静态</a><br />
本文介绍下 利用伪静态实现网站语言伪装:<br />
TP里面有一个URL伪静态的功能，本来是用于把URL伪装成一个静态页面地址用于SEO优化，例如设置：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #0000ff;">'URL_HTML_SUFFIX'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'.html'</span></pre></div></div>

<p>就可以实现</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">http://serverName/News.html</pre></div></div>

<p>这样的URL，实际上就是和</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">http://serverName/News</pre></div></div>

<p>具有同样的作用。</p>
<p>稍微改进下，其实这个功能还可以起到表面上伪装网站技术的作用，呵呵~<br />
例如，想忽悠客户你什么语言都能开发，遇到需要.Net的客户我们改成</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #0000ff;">'URL_HTML_SUFFIX'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'.aspx'</span></pre></div></div>

<p>就可以把</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">http://serverName/News</pre></div></div>

<p>伪装成</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">http://serverName/News.aspx</pre></div></div>

<p>遇到要求Java的客户，我们可以改成</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #0000ff;">'URL_HTML_SUFFIX'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'.do'</span></pre></div></div>

<p>或者</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #0000ff;">'URL_HTML_SUFFIX'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'.jsp'</span></pre></div></div>

<p>当然,我们不能靠这个忽悠客户,  但是 是不是很好玩儿。  ^_^</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wenan8.com/blog/archives/101/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ThinkPHP U函数生成URL伪静态</title>
		<link>http://www.wenan8.com/blog/archives/97</link>
		<comments>http://www.wenan8.com/blog/archives/97#comments</comments>
		<pubDate>Fri, 11 Dec 2009 01:02:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[ThinkPHP]]></category>
		<category><![CDATA[URL]]></category>
		<category><![CDATA[U函数]]></category>
		<category><![CDATA[伪静态]]></category>

		<guid isPermaLink="false">http://www.wenan8.com/blog/?p=97</guid>
		<description><![CDATA[ThinkPHP 提供了非常灵活的URL模式,可以自己定制URL,支持URL路由，非常方便. 再次介绍下利用U函数生成URL伪静态的功能。 首先, 在配置文件（config.php）里设置 URL_HTML_SUFFIX 设置静态后缀 例 1 2 3 4 5 6 7 &#60;?php return array&#40; 'URL_HTML_SUFFIX'=&#62;'.shtml', //随意, 可设置其它的。 ... //其它配置信息 &#41;; ?&#62; 来砍下手册U方法的定义规则： U方法的定义规则如下（方括号内参数根据实际应用决定）： &#160; U（'[项目://][路由@][分组名-模块/]操作? 参数1=值1[&#38;参数N=值N]'） &#160; 或者用数组的方式传入参数 &#160; U（'[项目://][路由@][分组名-模块/]操作',array&#40;'参数1'=&#62;'值1' &#91;,'参数N'=&#62;'值N'&#93;&#41;） &#160; 如果不定义项目和模块的话 就表示当前项目和模块名称，下面是一些简单的例子： &#160; U（'Myapp://User/add'） // 生成Myapp项目的User模块的add操作的URL地址 &#160; U（'Blog/read?id=1'） // 生成Blog模块的read操作 并且id为1的URL地址 &#160; U（'Admin-User/select'） // 生成Admin分组的User模块的select操作的URL地址 &#160; 参数请确保使用 ?id=1&#38;name=tp或者数组的方式来定义，虽然有些情况下 &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>ThinkPHP 提供了非常灵活的URL模式,可以自己定制URL,支持URL路由，非常方便.<br />
再次介绍下利用U函数生成URL伪静态的功能。<br />
首先, 在配置文件（config.php）里设置 URL_HTML_SUFFIX 设置静态后缀<br />
例</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #b1b100;">return</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
<span style="color: #0000ff;">'URL_HTML_SUFFIX'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'.shtml'</span><span style="color: #339933;">,</span>  <span style="color: #666666; font-style: italic;">//随意, 可设置其它的。</span>
<span style="color: #339933;">...</span>
<span style="color: #666666; font-style: italic;">//其它配置信息</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>来砍下手册U方法的定义规则：</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">U方法的定义规则如下（方括号内参数根据实际应用决定）：
&nbsp;
U（<span style="color: #0000ff;">'[项目://][路由@][分组名-模块/]操作? 参数1=值1[&amp;参数N=值N]'</span>）
&nbsp;
或者用数组的方式传入参数
&nbsp;
U（<span style="color: #0000ff;">'[项目://][路由@][分组名-模块/]操作'</span>,array<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'参数1'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'值1'</span> <span style="color: #009900;">&#91;</span>,<span style="color: #0000ff;">'参数N'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'值N'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>）
&nbsp;
如果不定义项目和模块的话 就表示当前项目和模块名称，下面是一些简单的例子：
&nbsp;
U（<span style="color: #0000ff;">'Myapp://User/add'</span>） <span style="color: #666666; font-style: italic;">// 生成Myapp项目的User模块的add操作的URL地址</span>
&nbsp;
U（<span style="color: #0000ff;">'Blog/read?id=1'</span>） <span style="color: #666666; font-style: italic;">// 生成Blog模块的read操作 并且id为1的URL地址</span>
&nbsp;
U（<span style="color: #0000ff;">'Admin-User/select'</span>） <span style="color: #666666; font-style: italic;">// 生成Admin分组的User模块的select操作的URL地址</span>
&nbsp;
参数请确保使用 <span style="color: #339933;">?</span>id<span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">&amp;</span>name<span style="color: #339933;">=</span>tp或者数组的方式来定义，虽然有些情况下
&nbsp;
U（<span style="color: #0000ff;">'Blog/read/id/1'</span>）和U（<span style="color: #0000ff;">'Blog/read?id=1'</span>）的效果一样
但是在不同的<span style="color: #003399;">URL</span>设置情况下，会导致解析的错误。
&nbsp;
根据项目的不同<span style="color: #003399;">URL</span>设置，同样的U方法调用可以智能地对应产生不同的<span style="color: #003399;">URL</span>地址效果，例如针对
&nbsp;
U（<span style="color: #0000ff;">'Blog/read?id=1'</span>）这个定义为例。
&nbsp;
如果当前<span style="color: #003399;">URL</span>设置为普通模式的话，最后生成的<span style="color: #003399;">URL</span>地址是： 
&nbsp;
http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//&lt;serverName&gt;/index.php?m=Blog&amp;a=read&amp;id=1 </span>
&nbsp;
如果当前<span style="color: #003399;">URL</span>设置为PATHINFO模式的话，同样的方法最后生成的<span style="color: #003399;">URL</span>地址是： 
&nbsp;
http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//&lt;serverName&gt;/index.php/Blog/read/id/1 </span>
&nbsp;
如果当前<span style="color: #003399;">URL</span>设置为REWRITE模式的话，同样的方法最后生成的<span style="color: #003399;">URL</span>地址是： 
&nbsp;
http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//&lt;serverName&gt;/Blog/read/id/1 </span>
&nbsp;
如果当前<span style="color: #003399;">URL</span>设置为REWRITE模式，并且设置了伪静态后缀为.<span style="color: #006633;">html</span>的话，同样的方法最后生成的<span style="color: #003399;">URL</span>地址是： 
&nbsp;
http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//&lt;serverName&gt;/Blog/read/id/1.html </span>
&nbsp;
U方法还可以支持路由，如果我们定义了一个名称为<span style="color: #003399;">View</span>的路由，指向Blog模块的read操作
参数是id，那么U（<span style="color: #0000ff;">'View@?id=1'</span>）生成的<span style="color: #003399;">URL</span>地址是：
&nbsp;
http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//&lt;serverName&gt;/index.php/View/id/1</span></pre></div></div>

<p>好,我们只需在模板文件里 用U函数 生成的链接 就直接加上设置的后缀了。<br />
例:<br />
tpl/default/news/  下的index.html文件</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;{:U(&quot;</span>News<span style="color: #339933;">/</span>edit<span style="color: #339933;">/</span>id<span style="color: #339933;">/</span><span style="color: #000088;">$vo</span><span style="color: #009900;">&#91;</span>id<span style="color: #009900;">&#93;</span><span style="color: #0000ff;">&quot;)}&quot;</span><span style="color: #339933;">&gt;</span>阅读<span style="color: #339933;">&lt;/</span>a<span style="color: #339933;">&gt;</span></pre></td></tr></table></div>

<p>是不是很强大！ ^_^</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wenan8.com/blog/archives/97/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

