一个表单form、submit提交到多个不同页面


<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="css/layout.css" type="text/css" />
<link rel="stylesheet" href="css/font.css" type="text/css" />
<link rel="stylesheet" href="css/master.css" type="text/css" />
<?php
 include("./includes/title.inc.php");
?>
<script language="javascript">
 function submit1()
 {
 document.submitform.action="handle_login.php";
 document.submitform.submit();
 }
 
 function submit2()
 {
 document.submitform.action="regedit.php";
 document.submitform.submit();
 }
</script>
</head>
<body>
 <h2><a href="../index.php">返回首页</a></h2>
 <div align="center">
 <p>用户登录</p>
 <form name="submitform" action="" method="post" >
 用户名:<input type="text" name="username" /><br />
 密&nbsp;&nbsp;&nbsp;码:<input type="password" name="password" /><br />
 <input type="submit" name="login" value="登录" onclick="submit1()">
 <input type="submit" name="regedit" value="注册" onclick="submit2()">
 </form>
 </div> 
</body>
</html>

Jquery formValidator表单验证插件使用说明

目录
4.      快速开始
7.      其他补遗
1. jQuery formValidator表单验证插件是什么? [top]
        jQuery formValidator表单验证插件是客户端表单验证插件。
在做B/S开发的时候,我们经常涉及到很多表单验证,例如新用户注册,填写个人资料,录入一些常规数据等等。在这之前,页面开发者(JavaScript开发者)需要编写大量的JavaScript来进行表单元素的校验,而这些校验在平时开发中不停的重复书写。
常见的校验如不能为空,必须满足长度要求,必须为数字,必须为Email等等。一般要判断的表单元素比较多,开发过程就显得枯燥无味——重复的代码不断重复,而且可能还要兼容多种浏览器,更多的考虑因素使人头疼不已。由于每个要校验的页面虽然逻辑基本相同,但是在大多数情况下,出于种种原因,开发者宁愿再编写一套JS文件,为了便于管理。
jQuery formValidator表单插件致力于改善这一过程。你只关心业务逻辑,而无需关系实现过程,只需简单的配置,无需写代码就能实现表单的检验。它包括常规检验功能和可扩展校验功能。针对每个表单元素你只需要写一行配置信息就能完成校验。而这些配置信息无需写入表单元素,实现了js代码和html代码的分离。这样做的好处,使B/S开发过程中,分工更加明确,页面设计着只需关心他的页面(设计的时候不必担心把脚本弄坏了),javascript开发者只需关心脚本的开发。
而插件本身包含的校验方式可以有无数种,只要你扩展正则表达式和函数。本插件于同类校验插件最大的区别:校验功能可以扩展;实现了校验代码于html代码的完全分离;你只需写一行配置信息就能完成一个表单元素的所有校验。插件本身提供了很多回调函数,使调用者能最大限度的发挥自己的想象能力来完成自己的业务需求。在同一个页面你可以拥有很多个校验组,你只需在提交的按钮那里调用
return jQuery.formValidator.pageIsValid(‘校验组号’) 来完成多个组的校验,互不干扰。
插件具备跨浏览器的能力。目前在ie和ff两种浏览器下调试通过,你不用再考虑在多浏览器下如何兼容,jQuery formValidator帮你做到了这些。
2. jQuery formValidator能做什么,不能做什么?[top]
jQuery formValidator表单校验插件支持的验证功能(还有很多功能没有罗列)罗列如下:
  • 支持所有类型客户端控件的校验
  • 支持jQuery所有的选择器语法,只要控件有唯一ID和type属性。
  • 支持函数和正则表达式的扩展。提供扩展库formValidatorReg.js,你可以自由的添加、修改里面的内容。
  • 支持2种校验模式。第一种:文字提示(showword模式);第二种:弹出窗口提示(showalert模式)
  • 支持多个校验组。如果一个页面有多个提交按钮,分别做不同得提交,提交前要做不同的校验,所以你得用到校验组的功能。
  • 支持4种状态的信息提示功能,可以灵活的控制4种状态是否显示。第一种:刚打开网页的时候进行提示;第二种:获得焦点的时候进行提示;第三种:失去焦点时,校验成功时候的提示;第四种:失去焦点时,校验失败的错误提示。
  • 支持自动构建提示层。
  • 支持自定义错误提示信息。
  • 支持控件的字符长度、值范围、选择个数的控制。值范围支持数值型和字符型;选择的个数支持radio/checkbox/select三种控件
  • 支持2个控件值的比较。目前可以比较字符串和数值型。
  • 支持服务器端校验。
  • 支持输入格式的校验。
jQuery formValidator不能做的:
  • 目前对控件ID是动态产生的情况支持的不是很好。例如asp.net里的gridview控件,因为它的每行数据都是动态产生的,捕捉不到控件的ID。不过你硬要写,也是能实现的。
  • 其他没有提到的,很希望你能告诉我们。
3. 什么情况下,我应该使用jQuery formValidator? [top]
只要控件ID是一定的,即:控件ID是你自己指定的,这种情况你都可以调用。当然动态产生ID的,你也可以调用。jQuery formValidator可以帮助你减轻客户端校验编程的压力,让你有更多的精力投入对业务的关注中。
无论你是大型系统还是小型系统都适合调用本插件,本插件的压缩版本只有6K(可能本网页的一张图片就有几十K),个人认为可以忽略网页的加载时间。
4. 快速开始 [top]
你可以有两种方法快速开始(看到效果)
  • 直接查看Demo页面(goto>>
  • 下载最新的版本,直接在本地查看。(goto>>
无论是那种方法,演示的例子中都有详细的步骤,以及对应的代码。
5. 使用插件必须加载的文件 [top]
//加载jQuery类库
<script src=”http://blog.163.com/jquery_last.js” type=”text/javascript”></script>
//加载插件的样式库,如果你是自动构建提示层,请加载validatorAuto.css
<link type=”text/css” rel=”stylesheet” href=”http://blog.163.com/style/validator.css”></link>
//加载插件
<script src=”http://blog.163.com/formValidator.js” type=”text/javascript”></script>
//加载扩展库
<script src=”http://blog.163.com/formValidatorRegex.js” type=”text/javascript”></script>
6 jQuery formValidator插件的API帮助[top]

目前支持5种大的校验方式,分别是:inputValidator(针对input、textarea、select控件的字符长度、值范围、选择个数的控制)、compareValidator(提供2个对象的比较,目前可以比较字符串和数值型)、ajaxValidator(通过ajax到服务器上做数据校验)、regexValidator(提供可扩展的正则表达式库)、functionValidator (提供可扩展函数库来做校验)

每种格式支持的控件类型如下:

input
textarea
select
校验方式
text
radio
checkbox
file
password
textarea
select-one
inputValidator
compareValidator
ajaxValidator
regexValidator
functionValidator
如果你用了不支持的校验功能,插件将忽略这个校验功能。
插件目前提示错误,有两种模式:showword和showalert,即文字提示和窗口提示,下面的4大验证方式,针对showalert这种方式不是都必须的,有些配置是没有作用的
下面分别罗列全局初始化和5种校验方式公开的属性
formValidator:
用来做初始化的类型,必须先执行。(”√”为showalert可用参数)
属性
属性名称
默认值
showalert
详细解释
validatorgroup
校验组
“1”
一个页面的控件可以分成多个组,分开校验
empty
是否可以为空
false
automodify
输入错误离开焦点的时候,自动修复错误
false
先给出提示然后,自动修复,目前只支持text、file、textarea三种类型
onempty
空时候的提示
“输入内容为空”
可以为空,为空时候的提示。为空者不显示
onshow
显示时候的提示
“请输入内容”
为空者不显示
onfocus
获得焦点的提示
“请输入内容”
为空者不显示
oncorrect
输入正确后的提示
“输入正确”
当你焦点离开控件的时候,如果输入正确将出现该提示。为空者不显示
tipid
显示错误的容器ID
表单ID+”Tip”
如果不自动构建提示层,表示提示成的ID号
如果自动构建提示层,表示提示层相对的目标控件
tipcss
自动构建的提示层的样式
“left”:”10px”,
“top”:”1px”,
“height”:”20px”,
“width”:”250px”
主要用于定位自动构建的提示层
defaultvalue
默认值
null
所有input和select表单。如果你不设置就保持原值,一旦设置就设为默认值。
inputValidator:
属性
属性名称
默认值
详细解释
type
比较类型
“size”
(对select无效)
“size”:表示比较长度
“number”:数值型比较
“string”:字符型比较
min
最小长度/值
0
默认数值型。如果进行字符比较,请收入字符型
对select-one而言inputValidator里的参数min和max表示选择的索引号范围
对select-multiple而言inputValidator里的参数min和max表示选择的个数
max
最大长度/值
99999999999
同上
onerror
发生错误的提示
“输入错误”
为空者不显示。
onerrormin
比min属性小的提示
null
当用户输入的值比min属性小的时候的错误提示
onerrormax
比max属性大的提示
null
当用户输入的值比max属性大的时候的错误提示
empty
控件文本值是否允许两边为空
两边都允许出现空
默认值{leftempty:true,rightempty:true,emptyerror:null}
leftempty:表示左边是否允许为空
rightempty:表示右边是否允许为空
emptyerror:出现该错误的时候的提示,如果为null,则利用onerror属性来提示错误。
compareValidator:
属性
属性名称
默认值
详细解释
desid
要比较控件的ID
“”
要跟源目标进行比较的目标ID
operateor
比较符号
“=”
一共有如下几种类型:=、!=、>、>=、<、<=
datatype
数据类型
“string”
目前只支持2种:”string”、”number”
onerror
发生错误的提示
“输入错误”
为空者不显示。
regexValidator:
属性
属性名称
默认值
详细解释
regexp
正则表达式
“”
采用的是显式构造函数new RegExp(“pattern”[,”flags”]); 由于Javascript 中’\’ 被用作转义字符,所以在使用显示构造函数构造实例对象的时候,需要使用’\\’ 代替’\’
param
附加参数
“i”
g:代表可以进行全局匹配。
i:代表不区分大小写匹配。
m:代表可以进行多行匹配。
可以任意组合,当然也可以不加参数
datatype
数据类型
“string”
“string”:自己写的表达式,”enum”:枚举名。具体请见demo3.htm
你可以自己修改、添加formValidatorRegex.js里的枚举项目名和表达式。
onerror:
发生错误的提示
“输入错误”
为空者不显示。
ajaxValidator:
几乎所有的属性跟$.ajax()的属性一样,请参考$.ajax()函数的帮助
属性
属性名称
默认值
详细解释
type
请求的类型
“GET”
“POST” 或 “GET”
url
发送到的URL地址
“”
datatype
返回的数据类型
“html”
xml、html、script、json
data
数据
“”
async
是否以异步的方式发送
true
success
当请求成功时调用的函数
null
processdata
自动处理返回的数据为字符串
true
在默认的情况下,如果data选项传进的数据是一个对象而不是字符串,将会自动地被处理和转换成一个查询字符串
complete
当请求完成时调用的函数
null
beforesend
当请求前时调用的函数
null
有个一个参数,根$.ajax里的beforeSend参数一样。
buttons
你点提交的按钮(组)jQuery对象
null
当你触发了ajax校验,buttons里对应的按钮(组)就会灰掉,一直等待服务器返回数据为止
error
当请求失败时调用的函数
“请求失败”
你可以自己定义这个错误,在error里自动打出。为空者不显示。
functionValidator
属性
属性名称
默认值
返回值的解释
fun
外部函数名()
参数1:元素的值,
参数2:元素对象
默认当作处理过程
true/false
校验成功/失败
字符串
校验失败,返回值当作自定义错误
处理过程
onerror
发生错误的提示
“输入错误”
函数return false的时候,显示该错误信息
公共函数:
主要是设置全局参数和判断是否通过校验
函数名
函数说明
$.formValidator.initConfig
参数:配置类型
属性
默认值
说明
validatorgroup
“1”
你要针对哪个组进行配置
formid
“”
要自动注册pageIsValid函数的表单ID号
alertmessage
false
是否弹出窗口
autotip
false
是否自动构建提示层
onsuccess
null
该组校验通过后的回调函数,返回false,阻止表单的提交
submitonce
false
校验通过后,是否灰掉所有的提交按钮
onerror
null
该组校验失败后的回调函数,有两个参数
参数1
一个校验没有通过的错误信息
参数2
一个校验没有通过的元素对象
debug
false
是否处于调试模式。true:不提交表单
$.formValidator.pageIsValid
一个参数:不是配置类型
validatorgroup
“1”
你要针对哪个组进行验证
$.formValidator.isOneValid
一个参数:当时设置验证的表单元素ID。
返回是否校验成功的信息。
$.formValidator.setFailState
function(“tipid”,”显示的信息”)
在showword模式下,如果你的额外校验没有通过,你可以通过它来设置成失败信息和状态
$.formValidator.getLength
function(“表单元素id”)
checkbox或radiobutton表示(同组)选择的个数。
对select-one,选择索引的值
对select-multiple,inputValidator里的参数min和max表示选择的个数
其它input表示的表示字符长度。
$.formValidator.retSetTipState
function(校验组号) 来把该组的提示内容恢复到onshow状态

formValidator2.1

jQuery-Form-Validator-master

php curl报错:Couldn’t resolve host “XXXXXX” 解决方法

PHP脚本里使用curl系列的函数GET某资源地址, 结果报错:Couldn’t resolve host “ip.taobao.com”

PHP代码:

  1. public function actionDemo()
  2. {
  3. $url = “http://ip.taobao.com”;
  4. $rs = Helper_Tool::curlGet($url);
  5. var_dump($rs);
  6. }

问题原因:

1.  问题最终出在 ipv6 上

2.  附:博主自身已经校验确保主机的DNS 以及 hosts均无问题

3.  附:另外使用如下代码使用DNS缓存或者禁用ipv6也无济于事:

curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE, false );

curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 2 );

curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );

解决方法:

系统层面禁用 ipv6 模块即可

禁用ipv6:

  1. #vi /etc/modprobe.d/dist.conf
  2. 添加下面两行内容
  3. alias netpf10 off
  4. alias ipv6 off
  5. 保存退出,并且重新启动系统
  6.  
  7. 验证ipv6模块是否加载
  8. #lsmod|grep ipv6
  9.  
  10. 开机不启动
  11. #chkconfig ip6tables off

http://www.blogdaren.com/post-2306.html

PHPExcel 导出错误 Fatal error: Class ‘ZipArchive’ not found的解决办法

出现这个错误说明是程序在调用’ZipArchive’ 这个类的时候没有成功,原因是由于在安装php的时候没有增加php zip的支持(非zlib)。

在Windows下的解决办法是

1、在php.ini文件中,将extension=php_zip.dll前面的分号“;”去除;

(如果没有,请添加extension=php_zip.dll此行并确保php_zip.dll文件存在相应的目录)

然后同样在php.ini文件中,将 zlib.output_compression = Off 改为 zlib.output_compression = On ;

2、重启Apache服务器。

在Unix/Linux下的解决办法

1、在Linux下没有php_zip.dll这个文件(有也不会起作用的),所以需要重新编译一下php的zip模块。具体安装方法如下:

cd /usr/src
wget http://pecl.php.net/get/zip
tar -zxvf zip
cd zip-1.x.x
phpize
./configure
make
sudo make instal

其中, 在最后使用make install命令的时候,可能需要用到root的权限,所以建议使用sudo来运行。安装完之后,屏幕上会提示zip.so的位置。然后将其记录下来,如:/usr/local/lib/php/extensions/zip.so。

2、使用root权限修改php.ini(通常可能会在/usr/local/lib/文件夹下,不过视当初安装php而定,可以通过phpinfo()来查看):

增加extension = /usr/local/lib/php/extensions/zip.so,然后同样在php.ini文件中,将 zlib.output_compression = Off 改为 zlib.output_compression = On ;

3、最后别忘了重启一下Apache:apachectl restart;

这个针对php的zip模块就安装完成了,能够在php中使用ZipArchive类了。

PHPExcel_1.8.0_doc

phpcms v9 常用调用标签(全)

本文介绍phpcms v9中模板标签使用说明。

{template “content”,”header”}
调用根目录下phpcms\template\content\header文件
{CHARSET}
字符集 (gbk或者utf-8)
{if isset($SEO[‘title’]) && !empty($SEO[‘title’])}
{$SEO[‘title’]}{/if}
{$SEO[‘site_title’]}
{$SEO[‘keyword’]}
{$SEO[‘description’]}
标题和标题seo优化
{CSS_PATH}
地址替换为根目录下\statics\css
{JS_PATH}
地址替换为根目录下\statics\js
{pc:content  action=”position” posid=”9″ order=”id” num=”10″ cache=”3600″}
pc标签{pc:content 参数名=”参数值”参数名=”参数值”参数名=”参数值”}
{loop $data $k $v}
    

  • {$v[title]}
  • {/loop}
    pc标签值
    action=”position”————–对话框的类型=“内容推荐位列表”
    posid=”9″———————-推荐位ID=”9″
    order=”id”———————排序类型=”id”
    num=”10″ ———————-数据调用数量=”10″
    cache=”3600″——————-缓存=”3600″毫秒

{get_siteid()}
{IMG_PATH}
action=”hits” 排行,热点等
action=”lists” 主要用于列表等。
catid=”$catid” 当前栏目ID   指定数字,即为指定的栏目
num=””  调用文章的数量
order=”id DESC” 按ID降序排列
order=”id ASC”  按ID升序排列
“views DESC” 
sort=””
“1” 缩略图
return=””
page=”$page” 需要分页
每当列表几行的时候出现一次这个
{if $num%2==0}   {/if}
循环标签
{loop $data $r}  {/loop}
{loop $info $r}  {/loop}
日期————-{date(‘Y-m-d H:i:s’,$r[inputtime])}
文章链接——{$r[url]}
文章标题——{$r[title]}
标题截取——{str_cut($r[title],40,’…’)}
缩略图———loop是info的时候用  {thumb($r[thumb],110,0)}     loop是data的时候用{thumb($v[thumb],90,0)}
分页标签——{$pages}
文章页标签
标题——-{$title}
内容——-{$content}
日期——-{$inputtime}
来源——-{$copyfrom}
点击数——  

网站首页—————-{siteurl($siteid)}
当前位置—————-{catpos($catid)}
栏目名称—————-{$CAT[catname]} 
栏目拼音—————-{$CAT[letter]}
栏目链接—————-{$CAT[url]}
父栏目名称————–{$CATEGORYS[$CAT[parentid]][catname]} 
父栏目链接————–{$CATEGORYS[$CAT[parentid]][url]}
上上级栏目名称——–{$CATEGORYS[$CATEGORYS[$CAT[parentid]][parentid]][catname]}
上上级栏目链接——–{$CATEGORYS[$CATEGORYS[$CAT[parentid]][parentid]][url]}
一级父栏目列表
{pc:content action=”category” catid=”0″ num=”34″ siteid=”$siteid” order=”listorder ASC”}
     {loop $data $r}
          

  • {$r[catname]}
  •      {/loop}
    {/pc}
    同级栏目列表
    {pc:content action=”category” catid=”$parentid” num=”12″ siteid=”$siteid” order=”listorder ASC”}
         {loop $data $r}
              
  • {$r[catname]}
  •       {/loop}
    {/pc}
    组图列表
    {loop $photos $r}
  • {$r[alt]}
  • {/loop}
    注释:其中$photos为自定义组图字段,{$r[url]}为图片地址,{thumb($r[url], 75, 45, 0)}为图片缩略图,{$r[alt]}为图片描述

首页调用
1、V9同时调用多个栏目最新文章标签

{pc:get sql=”SELECT `n`.`inputtime`,`n`.`url`,`n`.`title`,`c`.`catname`,`c`.`url` as `c_url` FROM `v9_news` as `n` left

join `v9_category` as `c` on `n`.`catid` = `c`.`catid` where `c`.`catid` in (6,7,8,9,10) order by `n`.`id` desc” num=”10″

cache=”3600″ page=”” dbsource=”” return=”data”}
{loop $data $key $val}

  • {date(‘Y-m-d H:i:s’,$val[inputtime])}[{$val 

[catname]}] {$val[title]}
{/loop}
{/pc}
{pc:get sql=”select * from anzhi where catid=’cid’”}
{loop $data $r}
{/loop}
{/pc}

2、首页头条

{pc:content action=”position” posid=”2″ order=”listorder DESC” num=”1″}
{loop $data $r}


{str_cut($r[title],20,”)}

{str_cut($r[description],102)}

{/loop}
{/pc}

调用4个
{pc:content action=”position” posid=”2″ order=”listorder DESC” num=”4″}

{loop $data $r}

{str_cut($r[title],36,”)}

{if $n==1}phpcms <wbr>v9 <wbr>常用调用标签(全){/if}{str_cut($r[description],112)}


{/loop}

{/pc}

3、调用某栏目最新文章
{pc:content action=”lists” catid=”6″ order=”id DESC” num=”10″cache=”3600″}
{loop $data $r}

4、调用图文

图片新闻

{pc:content action=”position” posid=”12″ thumb=”1″ order=”listorder DESC” num=”10″}

{/pc}

5、外部数据源调用

{pc:get sql=”SELECT * FROM pre_forum_thread” cache=”3600″ dbsource=”discuz” return=”data” num=”10″}

6、指定变量循环增长(幻灯片调用)

            {pc:content  action=”position” posid=”1″  order=”listorder DESC” thumb=”1″ num=”5″}
            


                  

 
                   {loop $data $r}
                       {$r['title']}
                   {/loop}
                  

              

           {/pc}

{pc:content action=”lists” catid=”66″ order=”listorder DESC” thumb=”1″ num=”5″ }
{php $num = 0}
{loop $data $r}
linkarr[{$num}] = “{$r[url]}”;
picarr[{$num}] = “{$r[thumb]}”;
textarr[{$num}] = “{str_cut($r[title],36,”)}”;
{php $num++}
{/loop}
{/pc}

7、调用文字友情链接
{pc:link action=”type_list” siteid=”$siteid” order=”listorder DESC” num=”10″ return=”dat”}
{loop $dat $v}
{$v[name]} |
{/loop}
{/pc}

8、调用图片友情链接
       {pc:link  action=”type_list” siteid=”$siteid” linktype=”1″ order=”listorder DESC” num=”8″

return=”pic_link”}
       {loop $pic_link $v}
      

  • phpcms <wbr>v9 <wbr>常用调用标签(全) 

/>
       {/loop}
       {/pc}

二、内容页调用
模块名:content

模块提供的可用操作

操作名 说明
lists 内容数据列表
relation 内容相关文章
hits 内容数据点击排行榜
category 内容栏目列表
position 内容推荐位列表
position操作说明如下:

——————————————————————————–

1、内容推荐位列表(position):

可用参数:

参数名 是否必须 默认值 说明
posid 是 null 推荐位ID
catid 否 null 调用栏目ID
thumb 否 0 是否仅必须缩略图
order 否 null 排序类型
num 是 null 数据调用数量

代码例子:

{pc:content action=”position” posid=”2″ order=”listorder DESC” num=”4″}

{/pc}

返回参数如下表:

字段 类型 空 默认 注释
title char(80) 否 NULL 推荐位标题
url char 否 NULL 推荐位链接地址
inputtime int(10) 否 NULL 推荐位发布时间
thumb char 是 NULL 推荐位缩略图
其他 不定 是 根据模型所设置的加入到推荐位中字段名称

——————————————————————————–

2、内容列表(lists):

可用参数:

参数名 是否必须 默认值 说明
catid 否 null 调用栏目ID
thumb 否 0 是否仅必须缩略图
order 否 null 排序类型
num 是 null 数据调用数量

代码例子:

{pc:content action=”lists” catid=”2″ order=”id DESC” num=”4″}

{/pc}

返回参数如下表:

字段 类型 空 默认 注释
title char(80) 否 NULL 推荐位标题
url char 否 NULL 推荐位链接地址
inputtime int(10) 否 NULL 推荐位发布时间
thumb char 是 NULL 推荐位缩略图
其他 不定 是 其他模型字段

——————————————————————————–

3、点击排行榜(hits):

可用参数:

参数名 是否必须 默认值 说明
catid 否 null 调用栏目ID
day 否 0 调用多少天内的排行
order 否 null 排序类型(本月排行- monthviews DESC 、本周排行 – weekviews DESC、今日排行 – dayviews DESC)
num 是 null 数据调用数量

代码例子:

{pc:content action=”hits” catid=”2″ order=”weekviews DESC” num=”10″}

{/pc}

返回参数如下表:

字段 类型 空 默认 注释
title char(80) 否 NULL 推荐位标题
url char 否 NULL 推荐位链接地址
inputtime int(10) 否 NULL 推荐位发布时间
thumb char 是 NULL 推荐位缩略图
其他 不定 是 其他模型字段

——————————————————————————-

4、相关文章(relation):

可用参数:

参数名 是否必须 默认值 说明
catid 否 null 调用栏目ID
relation 否 $relation 无需更改
keywords 否 null 内容页面取值:$rs[keywords]
num 是 null 数据调用数量

代码例子:

{pc:content action=”relation” relation=”$relation” catid=”$catid” num=”5″ keywords=”$rs[keywords]”}
{loop $data $r}

  • ·{$r[title]}({date(‘Y-m-d’,$r[inputtime])})
  • {/loop}
    {/pc}

返回参数如下表:

字段 类型 空 默认 注释
title char(80) 否 NULL 推荐位标题
url char 否 NULL 推荐位链接地址
inputtime int(10) 否 NULL 推荐位发布时间
thumb char 是 NULL 推荐位缩略图
其他 不定 是 其他模型字段

——————————————————————————–

5、栏目列表(category):

可用参数:

参数名 是否必须 默认值 说明
catid 否 0 调用该栏目下的所有栏目 ,默认0,调用一级栏目
$siteid 否 1 默认调用系统站点
order 否 null 排序方式、一般按照listorder ASC排序,即栏目的添加顺序
num 是 null 数据调用数量

代码例子:

{pc:content action=”category” catid=”0″ num=”25″ siteid=”$siteid” order=”listorder ASC”}

{loop $data $r}

{/pc}

返回参数如下表:

字段 类型 默认值 说明
catid smallint 无 栏目ID
siteid tinyint(3) 0 站点ID
module varchar(15) 无 模块ID
type tinyint(1) 1 栏目类型ID
modelid tinyint(5) 5 模型ID
parentid smallint(5) 5 上级父栏目
arrparentid varchar(255) 无 所有父栏目
child tinyint(1) 0 子栏目
arrchildid mediumtext 无 所有子栏目
catname varchar(30) 无 栏目名称
image varchar(100) 无 栏目图片
description mediumtext 无 栏目描述
parentdir varchar(100) 无 父栏目目录
catdir varchar(30) 无 栏目目录
url varchar(100) 无 栏目链接
items mediumint(8) 0 栏目内容数
hits int(10) 0 点击数
setting mediumtext 无 栏目设置
listorder smallint(5) 0 排序
ismenu tinyint(1) 0 是否显示
sethtml tinyint(1) 0 是否生成到根目录
letter varchar(30) 无 栏目拼音

http://blog.sina.com.cn/s/blog_8de113c30101h69m.html

curl获取去接口数据报错 解决办法 curl: (6) Couldn’t resolve host ‘www.goonls.com’

上周, 部分站点出现Couldn’t resolve host…..问题,  导致公司所有走api的程序都无法正常使用(系统redhat 6.3的都出现问题, redhat 5一切OK). 最后解决方法找到了,但是具体原因目前还未知.

从这个报错,可以很明显的发现是域名解析不了。于是做如下排查。

1. 故障排除

1. 1 测试域名是否能解析到

简单的使用ping来测试,发现DNS解析是OK。

1.2 测试curl是否有故障

因为php程序调用的是curl,所以我们测试一下curl是否能够正常解析dns

竟然真的不行,这种奇葩问题首次遇到.

2. 解决问题

尝试解决方法:

修改dns

重新测试curl,问题得到解决。

3. ttlsa群友提供解决方法

于此同时,群里的一个福建群友在也反应这个问题,看来应该是电信DNS有调整的缘故,但是具体的原因还是不得而知。告知其修改dns,问题也得到解决。

今天ttlsa群里的”福州 – 要上天“(藏得很深很低调的大牛)询问此问题是否解决,并提供另外的解决方法。

3.1 执行curl指定ipv4

3.2 关闭ipv6

请参考CentOS6 / RHCE6 禁用IPv6协议模块:http://www.ttlsa.com/html/3640.html

如果是php程序,那么请在使用curl的时候指定ipv4的参数:CURL_IPRESOLVE_V4

感谢群友提供的解决方案. 如果你也遇到如上问题,不烦尝试下上面的解决方案.

 4. curl无法解析原因

本文发出之后, 咱们ttlsa群主”north-boy”也找到原因所在,并且在“CentOS6 / RHCE6 禁用IPv6协议模块

转自 http://www.ttlsa.com/linux/curl-6-couldnt-resolve-host/

ThinkPHP创建入口文件 生成一个平级目录 前台后台分别管理

在开发的时候我们通常将前台后台区分开来,这样就需要建立两个单一入口文件,同时生成两个平级的文件夹

解决办法如下:

根目录 新建一个与index.php平级的文件 如 admin.php


<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------

// 应用入口文件

// 检测PHP环境
if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !');

// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define('APP_DEBUG',True);

define('BIND_MODULE','Admin');
// 定义应用目录
define('APP_PATH','./Admin/');

// 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php';

// 亲^_^ 后面不需要任何代码了 就是如此简单

执行admin.php 即可产生admin目录

 

一下是原index.php


<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------

// 应用入口文件

// 检测PHP环境
if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !');

// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define('APP_DEBUG',True);

// 定义应用目录
define('APP_PATH','./Application/');

// 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php';

// 亲^_^ 后面不需要任何代码了 就是如此简单