当前位置:  编程技术>php
本页文章导读:
    ▪dede网站内容页如何调取栏目页标题和seo标题      dede网站内容页如何调取栏目页标题和seo标题 内容页调用SEO标题:在<title></title>之间加入以下代码: {dede:field name='typeid' runphp='yes'} $id=@me; global $dsql; $sql="select seotitle from.........
    ▪织梦dedeCMS二次开发文档手册,文件详解以及数据库结构字      1、程序核心程序目录及简介 /include目录 程序核心目录 config_base.php 环境定义文件。用于检测系统环境,定义工作目录,保存数据库链接信息,引入常用函数等,建议不要修改。 config_ha.........
    ▪mysqli_set_charset和SET NAMES优劣分析      最近公司组织了个PHP安全编程的培训, 其中涉及到一部分关于Mysql的”SET NAMES”和mysql_set_charset (mysqli_set_charset)的内容:说到, 尽量使用mysqli_set_charset(mysqli:set_charset)而不是”SET NAMES”.........

[1]dede网站内容页如何调取栏目页标题和seo标题
    来源:    发布时间: 2013-10-15

dede网站内容页如何调取栏目页标题和seo标题

内容页调用SEO标题:在<title></title>之间加入以下代码:

{dede:field name='typeid' runphp='yes'}
$id=@me;
global $dsql;
$sql="select seotitle from dede_arctype where id=$id";
$row=$dsql->getOne($sql);
@me=$row["seotitle"];
{/dede:field}

内容页调用栏目描述:

把默认的<meta name="description" content="{dede:field.description function='html2text(@me)'/}"

/>

改成:

<meta name="description" content="{dede:field name='typeid' runphp='yes'}
$id=@me;
global $dsql;
$sql="select description from dede_arctype where id=$id";
$row=$dsql->getOne($sql);
@me=$row["description"];
{/dede:field}" />

内容页调用栏目关键字:

把默认的<meta name="keywords" content="{dede:field.keywords/}" />

改成:

<meta name="keywords" content="{dede:field name='typeid' runphp='yes'}
$id=@me;
global $dsql;
$sql="select keywords from dede_arctype where id=$id";
$row=$dsql->getOne($sql);
@me=$row["keywords"];
{/dede:field}" />

调取栏目页标题
{dede:field name='title'/}-{dede:field name='position' runphp='yes'}
$tc="-"; //分隔符
$tw=$GLOBALS['cfg_list_symbol']; //调用位置分隔符
@me=html2text(@me); //去除html标签
$tf=split($tw,@me); //分解成数组
for($ta=(count($tf)-2);$ta>=1;$ta--){ //循环赋值给$tk
$tk.=trim($tf[$ta]).$tc;
}
$tk=substr($tk,0,-1);
@me=$tk; //赋值给@me
{/dede:field}-{dede:global name='cfg_webname'/}

将以上代码放在之间就可以实现“文章标题-2级栏目-1级栏目-网站名”的形式了

本文链接


    
[2]织梦dedeCMS二次开发文档手册,文件详解以及数据库结构字
    来源:    发布时间: 2013-10-15

1、程序核心程序目录及简介
/include目录 程序核心目录
config_base.php 环境定义文件。用于检测系统环境,定义工作目录,保存数据库链接信息,引入常用函数等,建议不要修改。
config_hand.php 系统配置文件。定义系统常用的配置信息定义,可从后台管理直接生成该文件。
config_passport.php 通行证文件
config_rglobals.php 检测系统外部变量
config_rglobals_magic.php 同上
inc_archives_view.php 用于浏览文档或对文档生成HTML
inc_arclist_view.php 用于浏览频道列表或对内容列表生成HTML
inc_arcmember_view.php 用于浏览会员发布的文档
inc_arcpart_view.php 用于解析和创建全局性质的模板,如频道封面,主页,单个页面等
inc_arcsearch_view.php 用于文档搜索
inc_arcspec_view.php 用于浏览所有专题列表或对专题列表生成HTML
inc_channel_unit.php 用户解析特定频道的附加数据结构信息
inc_channel_unit_functions.php 系统共用函数集合
inc_downclass.php 防采集随机字符串函数
inc_freelist_view.php 用于对特定内容列表生成HTML
inc_functions.php 可供用户使用的函数集合
inc_imgbt.php GetTypeidSelMember
inc_memberlogin.php 用于用户登录及获得会员状态
inc_photograph.php 用于处理系统中的图片,例如水印,缩略图等
inc_photowatermark_config.php 图片处理参数定义
inc_rss_view.php 用于浏览频道RSS或对RSS生成静态文件
inc_separate_functions.php SpGetArcList函数,用于获得文档列表
inc_sitemap.php 用于生成网站地图
inc_type_tree.php 用于选择栏目的目录树
inc_type_tree_member.php 同上,会员使用
inc_typelink.php 用于显示文章的位置和栏目位置等
inc_typeunit_admin.php 用于频道管理时的一些复杂操作,主要用于后台
inc_typeunit_menu.php 同上
inc_userlogin.php 用于管理员登录
inc_vote.php 用于管理投票
jump.php 用于超链接跳转
pub_charset.php 共用字符处理函数,GB/UTF-8/Unicode/BIG5等互换
pub_collection.php 用于采集
pub_collection_functions.php 采集用函数
pub_datalist.php 后台管理用数据列表
pub_datalist_dm.php 同上,不使用模板
pub_db_mysql.php 用于操作数据库
pub_dedehtml2.php 用于采集中的HTML解析
pub_dedehtml.php HTML解析器
pub_dedetag.php 用于dede模板标签解析
pub_httpdown.php 用于下载http中的资源
pub_oxwindow.php 后台程序扩展
pub_splitword_www.php 织梦分词算法
validateimg.php 验证码
vdimgck.php 验证码
/inc 共用函数目录
inc_fun_funAdmin.php 获取拼音码等函数
inc_fun_funString.php html代码处理等函数
inc_fun_SpGetArcList.php 获取文档列表SpGetArcList
对于菜鸟来说,对于菜鸟来说,config_base.php,这个文件,当你的程序出现问题,需要覆盖,当你的程序出现问题,需要覆盖。不要覆盖 config_base.php和config_hand.php文件,里面都是dede一些核心配置文件,对于高手来说,也许修改几个php页面已经达不到目的了,就需要了解dede的数据库结构,下面是部分关键数据表的结构和说明,不完全,还没有整理完全,过几天发布完整版本
主要数据结构表
已经可以指导开发了
dede_addonarticle 附加文章表

aid int(11) 文章编号
typeid int(11) 分类栏目编号
body mediumtext 文章内容
dede_addonflash 附加Flash表

aid int(11) FLASH编号
typeid int(11) 分类栏目编号
filesize varchar(10) 文件大小
playtime varchar(10) 播放时长
flashtype varchar(10) 作品类型
flashrank smallint(6) 作品等级
width smallint(6) 影片宽度
height smallint(6) 影片高度
flashurl varchar(80) FLASH地址
dede_addonimages 附加图集表

aid int(11) 图集编号
typeid int(11) 分类栏目编号
pagestyle smallint(6) 表现方式(1单页显示 2分多页显示 3多行多列展示)
maxwidth smallint(6) 大图限制宽度
imgurls text 图片集内容(标签存放)
row smallint(6) 多列式参数(行)
col smallint(6) 多列式参数(列)
isrm smallint(6) 是否下载远程图片
ddmaxwidth smallint(6) 小图片宽度限制
dede_addonsoft 附加软件表

aid int(11) 软件编号
typeid int(11) 分类栏目编号
filetype varchar(10) 文件类型
language varchar(10) 界面语言
softtype varchar(10) 软件类型
accredit varchar(10) 授权方式
os varchar(30) 运行环境
softrank int(11) 软件等级
officialUrl varchar(30) 官方网址
officialDemo varchar(50) 程序演示地址
softsize varchar(10) 软件大小
softlinks text 软件下载链接列表
introduce text 软件介绍
dede_addonspec 附加专题表

aid int(11) 专题编号
typeid int(11) 分类栏目编号
note text 专题内容(仅存放标签代码)
dede_admin 管理员信息表

ID int(10) 自动编号
usertype int(10) 用户类型
userid varchar(30) 用户登录ID
pwd varchar(50) 用户密码
uname varchar(20) 用户笔名
tname varchar(30) 真实姓名
email varchar(30) 电子邮箱
typeid int(11) 负责频道(0表示全部)
logintime datetime 登录时间
loginip varchar(20) 登录IP
dede_admintype 系统用户组管理表

rank smallint(6) 组级别编号
typename varchar(30) 组名称
system smallint(6) 是否为系统默认组
purviews text 权限列表
dede_arcatt 文档自定义属性表
att smallint(6) 编号
attname varchar(30) 属性名称
dede_archives 文章表

ID int(11) 自动编号
typeid int(11) 所属主栏目编号
typeid2 int(11) 所属副栏目编号
sortrank int(11) 文章排序(置顶方法)
iscommend smallint(6) 是否推荐
ismake smallint(6) 是否生成静态
channel int(11) 文章所属模型
arcrank smallint(6) 阅读权限
click int(11) 点击次数
money smallint(6) 消费点数
title varchar(80) 标题
shorttitle varchar(36) 简略标题
color varchar(10) 标题颜色
writer varchar(30) 作者
source varchar(50) 来源
litpic varchar(100) 缩略图
pubdate int(11) 录入时间
senddate int(11) 发布时间
arcatt smallint(6) 自定属性(att)
adminID int(11) 发布管理员ID
memberID int(11) 发布会员ID
description varchar(250) 摘要
keywords varchar(60) 关键词
templet varchar(60) 文档模板
lastpost int(11) 最近评论时间
postnum int(11) 评论数目
redirecturl varchar(150) 跳转网址
mtype int(11) 用户自定义分类
userip varchar(20) 用户IP
locklikeid smallint(6) 是否锁定相关文章
likeid varchar(240) 相关文章ID
dede_arcrank 阅读权限表

ID int(10) 自动编号
rank smallint(10) 权限等级
membername varchar(20) 等级名称
adminrank smallint(10) 管理等级
money int(11) 消费点数
dede_arctype 栏目管理表

ID int(10) 栏目编号(自动编号)
reID int(10) 父栏目编号
topID int(10)
sortrank smallint(6) 排序编号
typename varchar(30) 栏目名称
typedir varchar(100) 栏目目录
isdefault smallint(6) 栏目列表选项(1链接到默认页 0链接到列表第一页 -1使用动态页)
defaultname varchar(20) 默认页的名称
issend smallint(6) 是否支持投稿
channeltype smallint(6) 频道类型
maxpage int(11) 保留
ispart smallint(6) 栏目属性
corank smallint(6) 浏览权限
tempindex varchar(60) 封面模板
templist varchar(60) 列表模板
temparticle varchar(60) 文章模板
tempone varchar(60) 单独页面模板
namerule varchar(50) 文章命名规则
namerule2 varchar(50) 列表命名规则
modname varchar(30) 模板名称
description varchar(200) 栏目介绍
keywords varchar(100) 关键词
moresite smallint(6) 多站点支持
siterefer smallint(6) 多站点站点根目录属性
sitepath varchar(60) 多站点站点根目录
siteurl varchar(60) 多站点绑定域名
ishidden smallint(6) 是否隐藏栏目
dede_area 地区表

eid int(11) 地区编号
name varchar(20) 地区名称
rid int(11) 编号属性


    
[3]mysqli_set_charset和SET NAMES优劣分析
    来源:    发布时间: 2013-10-15

最近公司组织了个PHP安全编程的培训, 其中涉及到一部分关于Mysql的”SET NAMES”和mysql_set_charset (mysqli_set_charset)的内容:

说到, 尽量使用mysqli_set_charset(mysqli:set_charset)而不是”SET NAMES”, 当然, 这个内容在PHP手册中也有叙及, 但是却没有解释为什么.

最近有好几个朋友问我这个问题, 到底为什么?

问的人多了, 我也就觉得可以写篇blog, 专门介绍下这部分的内容了.

首先, 很多人都不知道”SET NAMES”到底是做了什么,

我之前的文章深入MySQL字符集设置中, 曾经介绍过character_set_client/character_set_connection/character_set_results这三个MySQL的”环境变量”, 这里再简单介绍下,

这三个变量, 分别告诉MySQL服务器, 客户端的编码集, 在传输给MySQL服务器的时候的编码集, 以及期望MySQL返回的结果的编码集.

比如, 通过使用”SET NAMES utf8″, 就告诉服务器, 我用的是utf-8编码, 我希望你也给我返回utf-8编码的查询结果.

一般情况下, 使用”SET NAMES”就足够了, 也是可以保证正确的. 那么为什么手册又要说推荐使用mysqli_set_charset(PHP>=5.0.5)呢?

首先, 我们看看mysqli_set_charset到底做了什么(注意星号注释处, mysql_set_charset类似):

1 //php-5.2.11-SRC/ext/mysqli/mysqli_nonapi.c line 342
2 PHP_FUNCTION(mysqli_set_charset)
3 {
4 MY_MYSQL*mysql;
5 zval*mysql_link;
6 char *cs_name = NULL;
7 unsigned int len;
8
9 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis()
10 , "Os", &mysql_link, mysqli_link_class_entry, &cs_name, &len) == FAILURE) {
11 return;
12 }
13 MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, "mysqli_link"
14 , MYSQLI_STATUS_VALID);
15
16 if (mysql_set_character_set(mysql->mysql, cs_name)) {
17 //** 调用libmysql的对应函数
18 RETURN_FALSE;
19 }
20 RETURN_TRUE;
21 }

那mysql_set_character_set又做了什么呢?

1 //mysql-5.1.30-SRC/libmysql/client.c, line 3166:
2 int STDCALLmysql_set_character_set(MYSQL*mysql, const char *cs_name)
3 {
4 structcharset_info_st *cs;
5 const char *save_csdir= charsets_dir;
6
7 if (mysql->options.charset_dir)
8 charsets_dir= mysql->options.charset_dir;
9
10 if (strlen(cs_name) < MY_CS_NAME_SIZE &&
11 (cs= get_charset_by_csname(cs_name, MY_CS_PRIMARY, MYF(0))))
12 {
13 char buff[MY_CS_NAME_SIZE + 10];
14 charsets_dir= save_csdir;
15 /* Skip execution of "SET NAMES" for pre-4.1 servers */
16 if (mysql_get_server_version(mysql) < 40100)
17 return 0;
18 sprintf(buff, "SET NAMES %s", cs_name);
19 if (!mysql_real_query(mysql, buff, strlen(buff)))
20 {
21 mysql->charset= cs;
22 }
23 }
24 //以下省略

我们可以看到, mysqli_set_charset除了做了”SET NAMES”以外, 还多做了一步:

1 sprintf(buff, "SET NAMES %s", cs_name);
2 if (!mysql_real_query(mysql, buff, strlen(buff)))
3 {
4 mysql->charset= cs;
5 }

而对于mysql这个核心结构的成员charset又有什么作用呢?

这就要说说mysql_real_escape_string()了, 这个函数和mysql_escape_string的区别就是, 它会考虑”当前”字符集. 那么这个当前字符集从哪里来呢?

对了, 你猜的没错, 就是mysql->charset.

mysql_real_string在判断宽字符集的字符的时候, 就根据这个成员变量来分别采用不同的策略, 比如如果是utf-8, 那么就会采用libmysql/ctype-utf8.c.

看个实例, 默认mysql连接字符集是latin-1, (经典的5c问题):

1 <?php
2 $db = mysql_connect('localhost:3737', 'root' ,'123456');
3 mysql_select_db("test");
4 $a = "\x91\x5c";//"慭"的gbk编码, 低字节为5c, 也就是ascii中的"\"
5
6 var_dump(addslashes(
    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3