GVKun编程网logo

织梦CMS二开php使用json讲解(织梦cms二次开发教程)

16

如果您对织梦CMS二开php使用json讲解感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于织梦CMS二开php使用json讲解的详细内容,我们还将为您解答织梦cms二次开发

如果您对织梦CMS二开php使用json讲解感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于织梦CMS二开php使用json讲解的详细内容,我们还将为您解答织梦cms二次开发教程的相关问题,并且为您提供关于Dedecms创建栏目详细讲解 织梦CMS栏目怎么样创建教程、Linux服务器上安装织梦CMS,linux服务器织梦cms_PHP教程、php – 何时使用json和jsonp使用jquery $.ajax?、php 织梦CMS图片处理类用法的有价值信息。

本文目录一览:

织梦CMS二开php使用json讲解(织梦cms二次开发教程)

织梦CMS二开php使用json讲解(织梦cms二次开发教程)

 

织梦CMS二开php使用json讲解

简 单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。

这个字符串看起来有点儿古怪(稍后会看到几个示例),但是 JavaScript 很容易解释它,而且 JSON 可以表示比名称/值对更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。

简单 JSON 示例

按照*简单的形式,可以用下面这样的 JSON 表示名称/值对:

 

这个示例特别基本,而且实际上比等效的纯文本名称/值对占用更多的空间:

 

但是,当将多个名称/值对串在一起时,JSON 就会体现出它的价值了。首先,可以创建包含多个名称/值对的记录,比如:

 

从语法方面来看,这与名称/值对相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系。

值的数组

当 需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。例如,假设您希望表示一个人名列表。在 XML 中,需要许多开始标记和结束标记;如果使用典型的名称/值对(就像在本系列前面新闻中看到的那种名称/值对),那么必须建立一种专有的数据格式,或者将键 名称修改为person1-firstName 这样的形式。

如果使用 JSON,就只需将多个带花括号的记录分组在一起:

 

这不难理解。在这个示例中,只有一个名为 people 的变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和电子邮件地址。上面的示例演示怎么用括号将记录组合成一个值。当然,可以使用相同的语法表示多个值(每个值包含多个记录):

 

这里*值得注意的是,能够表示多个值,每 个值进而包含多个值。但是还需要注意,在不同的主条目(programmers、authors 和 musicians)之间,记录中实际的名称/值对可以不一样。JSON 是完全动态的,允许在 JSON 结构的中间改变表示数据的方式。

在处理 JSON 格式的数据时,没有需要遵守的预定义的约束。所以,在同样的数据结构中,可以改变表示数据的方式,甚至可以以不同方式表示同一事物。

在 JavaScript 中使用 JSON

掌握了 JSON 格式之后,在 JavaScript 中使用它就很简单了。JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。

将 JSON 数据赋值给变量

例如,可以创建一个新的 JavaScript 变量,然后将 JSON 格式的数据字符串直接赋值给它:

 

这特别简单;现在 people 包含前面看到的 JSON 格式的数据。但是,这还不够,因为访问数据的方式似乎还不明显。

访问数据

尽 管看起来不明显,但是上面的长字符串实际上只是一个数组;将这个数组放进 JavaScript 变量之后,就可以很轻松地访问它。实际上,只需用点号表示法来表示数组元素。所以,要想访问 programmers 列表的*个条目的姓氏,只需在 JavaScript 中使用下面这样的代码:

 

注意,数组索引是从零开始的。所以,这行代码首先访问 people 变量中的数据;然后移动到称为programmers 的条目,再移动到*个记录([0]);*后,访问lastName 键的值。结果是字符串值 “McLaughlin”。

下面是使用同一变量的几个示例。

 

利用这样的语法,可以处理任何 JSON 格式的数据,而不需要使用任何额外的 JavaScript 工具包或 API。

修改 JSON 数据

正如可以用点号和括号访问数据,也可以按照同样的方式轻松地修改数据:

 

在将字符串转换为 JavaScript 对象之后,就可以像这样修改变量中的数据。

转换回字符串

当然,如果不能轻松地将对象转换回本文提到的文本格式,那么所有数据修改都没有太大的价值。在 JavaScript 中这种转换也很简单:

 

这样就行了!现在就获得了一个可以在任何地方使用的文本字符串,例如,可以将它用作 Ajax 应用程序中的请求字符串。

更重要的是,可以将任何 JavaScript 对象转换为 JSON 文本。并非只能处理原来用 JSON 字符串赋值的变量。为了对名为 myObject 的对象进行转换,只需执行相同形式的命令:

 

这就是 JSON 与本系列讨论的其他数据格式之间*大的差异。如果使用 JSON,只需调用一个简单的函数,就可以获得经过格式化的数据,可以直接使用了。对于其他数据格式,需要在原始数据和格式化数据之间进行转换。即使使用 Document Object Model 这样的 API(提供了将自己的数据结构转换为文本的函数),也需要学习这个 API 并使用 API 的对象,而不是使用原生的 JavaScript 对象和语法。

#p#分页标题#e#

*终结论是,如果要处理大量 JavaScript 对象,那么 JSON 几乎肯定是一个好选择,这样就可以轻松地将数据转换为可以在请求中发送给服务器端程序的格式。

JSON在PHP中的应用

互联网的今天,AJAX已经不是什么陌生的词汇了。说起AJAX,可能会立即想起因RSS而兴起的XML。XML的解析,恐怕已经不是什么难题了,非常是 PHP5,大量的XML解析器的涌现,如*轻量级的SimpleXML。不过对于AJAX来说,XML的解析更倾向于前台Javascript的支持度。 我想所有解析过XML的人,都会因树和节点而头大。不可否认,XML是很不错的数据存储方式,但是其灵活恰恰造成了其解析的困难。当然,这里所指的困难, 是相对于本文的主角--JSON而言。

JSON为何物?我就不重复概念了。通俗的说,它是一种数据的存储格式,就像PHP序列化后的字符串一样。它是一种数据描述。比如我们将一 个数组序列化后存放,就可以很容易的反序列化后应用。JSON也是如此,只不过他搭建的是客户端Javascript和服务端PHP的交互桥梁。我们用 PHP生成JSON后的字符串,然后把这个字符串传给前台Javascript,Javascirpt就可以很容易的将其反JSON然后应用。说通俗点, 它真的很像数组。

言归正传,怎么使用JSON。PHP5.2开始内置了JSON的支持。当然,如果低于这个版本的话,那么市面上有很多PHP版本的实现,随 便下一个用就OK啦。现在主要是说说PHP内置支持的JSON。很简单,两个函数:json_encode和json_decode(跟序列化很像啦)。 一个编码,一个解码。先看看编码的使用:

$arr = array(

'name' => 'Linux',

'nick' => 'php',

'contact' => array(

'邮箱' => '邮箱',

'website' => ',

)

);

$json_string = json_encode($arr);

echo $json_string;

很简单的将一个数组JSON了。需要指出的是,在非UTF-8编码下,中文字符将不可被encode,结果会出来空值,所以,如果你使用 gb2312编写PHP代码,那么就需要将包含中文的内容使用iconv或者mb转为UTF-8再进行json_encode,我都说了和序列化很像,你还不信。编码后就要解码,PHP提供了相应的函数json_decode,json_decode执行后,将会得到一个对象,操作如下:

$arr = array(

'name' => 'Linux',

'nick' => 'php',

'contact' => array(

'邮箱' => '邮箱',

'website' => ',

)

);

$json_string = json_encode($arr);

$obj = json_decode($json_string);

print_r($obj);

访问对象内的属性会吧?$obj->name,这样子的,当然,也可以把它转位数组,方便调用啦:

$json_string = json_encode($arr);

$obj = json_decode($json_string);

$arr = (array) $obj;

print_r($arr);

PHP转来转去的用途不是非常大,除了缓存生成,感觉还不如直接存数组呢,不过,当你和前台交互的时候,它的作用就出来咯,下面看看我如何用Javascript来使用这段字符。

上面中,直接将这个字符串赋给一个变量,它就变成一个Javascript数组了(专业化术语需要不叫数组,不过由于PHP的习惯问题,我就 一直叫数组好了,方便理解)。这样,可以很方便的对arr进行遍历或者任意做你想做的事情了。写到这里,好像都没提到AJAX哦?是哦,联想一下,如果服 务端返回的responseText用JSON过的字符串代替XML的话,前台Javascript处理起来是不是很方便呢?狗皮膏药就是这样用的。

其实写到这里,除了数据的存储格式不太一样外,JSON和XML也没什么太大区别哦,不过下面我说的一点。虽然和XML没多大关系,不过, 可以说明JSON更大范围的应用,那就是,跨域的数据调用。由于安全性问题,AJAX不支持跨域调用,这样要调用不同域名下的数据,很麻烦哦,虽然有解决 方法(stone在他的讲座上提到过了代理啊什么的虽然听不懂但是知道能解决)。我写两个文件,足以展示跨域调用了。

主调文件index.html

 

被调文件profile.php

$arr = array(

'name' => 'Linux',

'nick' => 'php',

'contact' => array(

'邮箱' => '邮箱',

'website' => ',

)

);

$json_string = json_encode($arr);

echo "getProfile($json_string)";

?>

#p#分页标题#e#

很显然,当index.html调用profile.php时,JSON字符串生成,并作为参数传入getProfile,然后将昵称插入到div中,这样一次跨域数据交互就完成了,是不是非常简单。既然JSON这么简单易用而且好用,还等什么呢?^_^

本文章网址:http://www.ppssdd.com/code/22156.html。转载请保留出处,谢谢合作!

Dedecms创建栏目详细讲解 织梦CMS栏目怎么样创建教程

Dedecms创建栏目详细讲解 织梦CMS栏目怎么样创建教程

这篇文章是对Dedecms系统创建栏目详细讲解教程
我们在建立好一个Dedecms网站后都要添加自己内容的栏目,像企业站点就会有 关于我们,新闻中心,产品展示等等...这些栏目都是要在织梦CMS后台中创建,这样才能在前台调用出来,具体怎么样才可以网站栏目呢?在这里我们以图文说明给大家说一下。
首先我们进入后台,点击核心 — 网站栏目管理(如下图)进入栏目管理菜单。

创建栏目演示


在我们进入栏目管理之后我们会看到栏目管理菜单的顶部右上方会有如下图显示

增加栏目按钮


点击【增加顶级栏目】后会看到如下图所示的一个表单,其他的三个按钮这里就不多做解释了,自己研究一下吧。

增加栏目表单信息


第一:我们先来详细解释下【常规选项】这个表单各个选项的意思以及设置后有什么影响影响:
1.是否支持投稿:如果选支持投稿的话那么就会允许其他人比如说会员向该栏目投稿,选择不支持投稿的话那么会员则无法进行投稿的操作,一般来说为了安全起见我们都将他设置为不支持投稿。
2.是否隐藏栏目:这个的意思是否让他在导航菜单中显示找个栏目,如果选择了隐藏那么模板是自动调用顶级栏目的情况下就不会显示出这个栏目,一般来说我们都是选择显示栏目。
3.内容模型:这是一个下拉菜单选项,其中有五个选项分别是:普通文章|article、分类信息|infos、图片集|image、商品|shop、软件|soft
这五个选项所对应的意思如下
普通文章|article            选择这个选项的意思就是这个栏目为一个文档栏目,也就是我们说的新闻文章类型的栏目;
分类信息|infos             选择这个选项的意思是该栏目作为一个分类信息栏目,支持分类信息模型,分类信息大家都知道这个我们就不说了;
图片集|image               选择这个选项就是该栏目为图片集栏目,图片站一般都是选择这个模型;
商品|shop                    选择这个选项就是说改栏目支持商品模型,商城站一般选择这个模型;
软件|soft                      这个选项的意思就是该栏目支持软件下载,下载站都是选择这个模型;
 
4.栏目名称:这个就是该栏目的显示名称大家都理解不说这个了。
5.排列顺序:这个设置的意思就是说如果有很多栏目,那么这个就是控制所有栏目的排序的,每个栏目设置一个数字,栏目就会根据数字的大小由小到达排序。
6.浏览权限:这个是控制文档的浏览权限的,一般我们不做设置,这里也不讲了。
7.上级目录:这个系统会根据你的设置选择栏目的上级目录,后台默认的是全部文档都放在 a 目录下,也可以直接放在根目录下,需要在后台系统-核心设置中设置一下。
8.文件保存目录:这个就是存放改栏目文档的名称 比若说新闻中心,我们可以将其填成news,当然你可以根据有自己的需要随意填写,如果留空那么默认的是你填写的栏目名称的汉语拼音。
9.目录相对位置:
选择上级目录   那么该栏目的存放目录就是 http://www.dede58.com/a/上级栏目/当前栏目/ 这个是二级栏目的存放路径,三级的栏目以此类推,
CMS根目录   那么改栏目的存放目录就是直接http://www.dede58.com/当前栏目/ 可以有效的缩短URL的长度,一般我们会选择这个选项。
站点根目录   如果你的Dedecms站点是装在子目录里的可以使用这个选项,一般我们装在根目录下就不需要设置这个。
10.栏目列表选项:这个直接选择默认即可
11.默认页的名称: 如果你没有特殊的需求这个就保持默认
12.栏目属性: 最终列表栏目(允许在本栏目发布文档,并生成文档列表)  选择这个就是我们可以再此栏目下发布文章比如说:新闻中心类   频道封面(栏目本身不允许发布文档) 选择这个就是该栏目不支持发布文章,比如说关于我们,就只有一个单独的页面
外部连接(在"文件保存目录"处填写链接网址) 选择这个选项那么该栏目只作为一个站外链接,不能发布文章。
 
13.栏目交叉:就是否获取交叉栏目的文档,这个我们一般不做处理,选择不交叉。
 
第二:我们再详细说明下【高级选项】这个表单各个选项的意义以及设置后的影响:

栏目高级设置演示


1.多站点支持: 如果这个是多个织梦站点需要配置,我们默认选择不启用
2.绑定域名: 如果网站需要绑定二级域名,就必须在“系统参数”中设定“支持多站点”,设置后可以通过二级域名而不是目录形式访问这个栏目。
3.封面模板:这个栏目如果第二步栏目属性我们设置的是频道封面,那么这个栏目所使用的模板,默认的是模板index_article.htm,这个就是封面模板,这个只需要将其改成你使用的模板中的封面模板即可,比如说在模板说明中说明了singlepage.htm这个为封面模板,这个时候我们只需要将其改成singlepage.htm就可以了。
4.列表模板:这个就是新闻列表页模板,织梦cms的新闻列表页一般都是命名为list_article.htm有其他说明的模板需要根据说明进行选择设置,如果是产品展示的列表需要显示图片的,这样织梦的一般来说都命名为了list_product.htm或者list_shop.htm,我们相应修改下就好。
5.文章模板:一般来说都是命名为article_article.htm,如果是产品的话,织梦CMS的模板一般命名为了article_product.htm或者article_shop.htm
6.文章命名规则:{typedir}/{Y}/{M}{D}/{aid}.html    默认的这种形式 就是 http://www.dede58.com/a/目录/年/月/日/文档id.htm,为了缩短url的目录我们可以将他设置为{typedir}/{aid}.html  直接省略年月日,修改后的路径变成了http://www.dede58.com/a/目录/文档id.htm
7.SEO标题: 这个就是针对这个栏目写一个栏目标题,不然的话调用的是默认栏目名称,
8.关键字: 同上所说,写这个栏目的关键字
9.栏目描述:这里就是说明这个栏目的描述
 
第三:我们再详细讲解下【栏目内容 】这个表单各个选项的意义以及设置后有什么影响:

栏目内容设置


栏目内容,这是一个html网页内容编辑器,在里面可以写下对这个栏目的说明简介,可以像文档一样,支持HTML代码。如果是封面页比如说联系我们,公司简介,使用这样的就只有一个单页而不能发布文章的(也就是在这里增加内容)。

Linux服务器上安装织梦CMS,linux服务器织梦cms_PHP教程

Linux服务器上安装织梦CMS,linux服务器织梦cms_PHP教程

linux服务器上安装织梦cms,linux服务器织梦cms

安装篇

第一步:配置防火墙(默认情况下,端口80和3306是拒绝访问的,在防火墙上进行配置):

  1. vi /etc/sysconfig/iptables(在"COMMIT"的上一行加上如下两句) 
  2. -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT(允许80端口通过防火墙) 
  3. -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT(允许3306端口通过防火墙) 

接着重启防火墙使得配置生效:

  1. /etc/init.d/iptables restart 

第二步:安装Apache

 

立即学习“PHP免费学习笔记(深入)”;

使用以下命令安装Apache:

  1. yum install httpd 

如果出下下面所示的语句,说明已经安装了Apache了,不需要重新安装:

 

立即学习“PHP免费学习笔记(深入)”;

安装完之后,重新启动Apache:/etc/init.d/httpd restart

接着将Apache设置为开机启动:chkconfig httpd on.(这一步使得服务器不需要在每次重启的时候都要手动启动httpd服务)

要查看httpd服务的启动状态,可以使用命令:chkconfig --list httpd(会显示httpd在各个级别(level)下的启动状态)

第三步:安装MySQL

1、使用以下命令安装MySQL:

  1. yum install mysql mysql-server 

同样,如果出现提示已安装的话,就说明系统安装了MySQL了,可以跳过这一步,否则,系统接下来会自动安装MySQL。

 

立即学习“PHP免费学习笔记(深入)”;

安装完成了之后,启动MySQL:/etc/init.d/mysql start

将MySQL设置为开机启动:chkconfig mysqld on
最后,拷贝配置文件:cp /usr/share/mysql/my-medium.cnf  /etc/my.cnf (在/etc下有个my.cnf文件,直接覆盖就行了)

2、用以下命令给root账户设置密码     

  1. mysql_secure_installation 

根据提示输入2次密码,就设置成功了。注意,在设置过程中,会提示删除是否anonymous用户,是否拒绝root的远程访问,是否删除测试用的数据库等,这些都需要根据自己的实际情况进行选择。最后出现:Thanks for using MySQL!,设置密码成功了。

 

立即学习“PHP免费学习笔记(深入)”;

重新启动MySQL:/etc/init.d/mysqld restart

第四步:安装PHP

1、使用以下命令安装PHP:

  1. yum install php 

 

立即学习“PHP免费学习笔记(深入)”;

根据提示往下安装就行了。安装完之后重新启动Apache:/etc/init.d/httpd restart
2、安装PHP组件,是PHP支持MySQL

可以使用命令:yum search php来查看PHP的组件,选择需要的模块进行安装:

 yum install php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt

安装完之后,重启Apache:/etc/init.d/httpd restart 

重启MySQL:/etc/init.d/mysqld restart

 

立即学习“PHP免费学习笔记(深入)”;

到了这一步,LAMP中的AMP都已经安装完毕了,但是web服务器此时并不能被访问,因为要访问服务器,还需要对Apache和PHP进行相应的配置。

配置篇

第一步:配置Apache

修改Apache配置文件:vi /etc/httpd/conf/httpd.conf,并在文件中查找下面所在行,进行修改(查找可以在vi的一般模式下输入“/要查找的字符”进行查找):

ServerTokens OS           修改为:     ServerTokens Prod                       (在出现错误页的时候不显示服务器操作系统的名称)
ServerSignature On        修改为:     ServerSignature Off                      (在错误页中不显示Apache的版本)
Options Indexes FollowSymLinks     修改为:     Options Includes ExecCGI FollowSymLinks             (允许服务器执行CGI及SSI,禁止列出目录)
#AddHandler cgi-script .cgi           修改为:     AddHandler cgi-script .cgi .pl                                       (允许扩展名为.pl的CGI脚本运行)
AllowOverride None                      修改为:     AllowOverride All                                 (允许.htaccess)
AddDefaultCharset UTF-8            修改为:     AddDefaultCharset GB2312                                     (添加GB2312为默认编码)

Options Indexes MultiViews FollowSymLinks      修改为      Options MultiViews FollowSymLinks        (不在浏览器上显示树状目录结构)
DirectoryIndex index.html index.html.var             修改为:  DirectoryIndex index.html index.htm Default.html Default.htm index.php Default.php index.html.var  (设置默认首页文件,增加index.php)
KeepAlive Off                                  修改为:     KeepAlive On                                (允许程序性联机)
MaxKeepAliveRequests 100           修改为:     MaxKeepAliveRequests 1000   (增加同时连接数)

 

立即学习“PHP免费学习笔记(深入)”;

修改好之后保存配置,重新启动Apache:/etc/init.d/httpd restart

建议删除默认的测试页面:rm -f /etc/httpd/conf.d/welcome.conf /var/www/error/noindex.html 

第二步:配置PHP

修改PHP配置文件:vi /etc/php.ini,以下需要修改的行的位置可以通过vi的查找命令来查找:

date.timezone = PRC                    #把前面的分号去掉,改为date.timezone = PRC

disable_functions =                             passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru, stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

#列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。

expose_php = Off                                     #禁止显示php版本的信息

display_errors = OFF                               #关闭错误提示
register_globals = OFF                           #关闭注册全局变量
magic_quotes_gpc = On                        #打开magic_quotes_gpc来防止SQL注入
log_errors = On                                         #记录错误日志
error_log = /var/log/php/error_log.log   #设置错误日志存放目录,文件必须允许apache用户的和组具有写的权限(注意,在修改之前,要先创建文件/var/log/php/error_log.log,然后在修改其属性,使其属于apache用户和用户组。chown apache /var/log/php/error_log.log和chgrp apache /var/log/php/error_log.log)

open_basedir = .:/tmp/                             #设置表示允许访问当前目录(即PHP脚本文件所在之目录)和/tmp/目录,可以防止php木马跨站

 

立即学习“PHP免费学习笔记(深入)”;

经过安装和配置之后,web服务器基本上已经搭建起来了,可以对其进行访问。

 

立即学习“PHP免费学习笔记(深入)”;

测试篇

在目录/var/www/html下:cd /var/www/html

创建php文件:vi index.php

phpinfo();
?>

那么,在浏览器中输入本机地址的时候,就可以访问到刚才创建的index.php网页文件了。

注意:apache的默认程序目录是:/var/www/html,网页文件放在这里就可以被访问到。需要保证这个目录是属于用户apache和用户组apache的。

             MySQL的数据库目录是:/var/lib/mysql

 

立即学习“PHP免费学习笔记(深入)”;

写到这里,LAMP就安装配置完毕了,浏览器只要输入服务器的IP地址或者是域名的话,就能够访问到服务器上的网页文件了。

有错漏的地方,欢迎大家随时指出修改意见,谢谢大家的支持。

Linux系统中常用的命令:

 

立即学习“PHP免费学习笔记(深入)”;

一、Linux常用命令
1.1.权限分配chmod命令
chmod 777 dir/file
1.2.参考链接
1.http://blog.sina.com.cn/s/blog_3fe048830100gp0e.html
二、对mysql数据库常用操作命令
2.1.修改MySQL字符集
1.修改my.cnf
vi /etc/my.cnf
在[client]下添加
default-character-set=utf8
在[mysqld]下添加
default-character-set=utf8
2.重新启动MySQL
service mysqld restart
3.查看字符集设置
show variables like ''character_set_%'';
2.2.其他的一些设置方法
1.修改数据库的字符集
mysql>use mydb
mysql>alter database mydb character set utf-8;
2.创建数据库指定数据库的字符集
mysql>create database mydb character set utf-8;
3.通过MySQL命令行修改
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_database=utf8;
set character_set_results=utf8;
set character_set_server=utf8;
set character_set_system=utf8;
set collation_connection=utf8;
set collation_database=utf8;
set collation_server=utf8;
2.3.备份还原数据库
1.备份
mysqldump -u root -p voice>voice.sql;
2.还原
source voice.sql;
mysql -u root -p voice2.3.参考链接
1.http://blog.chinaunix.net/uid-26727991-id-4742248.html

 

立即学习“PHP免费学习笔记(深入)”;

参考链接:http://www.linuxidc.com/Linux/2012-06/63847.htm

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1134601.htmlTechArticleLinux服务器上安装织梦CMS,linux服务器织梦cms 安装篇 第一步:配置防火墙 (默认情况下,端口80和3306是拒绝访问的,在防火墙上进行配置):...

php – 何时使用json和jsonp使用jquery $.ajax?

php – 何时使用json和jsonp使用jquery $.ajax?

在我们的网站中,有些页面是SSL,有些是非SSL.

例如:

http://www.example.com/search/patients
https://www.example.com/patients

现在我在http://www.example.com/search/patients页面上搜索病人,并通过jQuery $.ajax函数和dataType = json将服务器请求发送到https://www.example.com/patients.我无法获取数据.

问题:

>当我们从http请求https或https到同一服务器上的http时,我应该使用jsonp吗?
>如果我对两个URL都使用SSL,那么它只适用于dataType = json

谢谢

解决方法:

由于Same Origin Policy,只有在以下情况下才允许您的ajax请求:
域名,应用层协议和(在大多数浏览器中)端口
运行脚本的HTML文档的编号是相同的

在您的情况下,应用程序层协议是不同的,这就是您的脚本失败的原因.

可能的解决方案是

> JSONP,必须由服务器提供
> CORS,这是一个更“优雅”和干净的解决方案,但尚未完全支持IE(IE7不支持它,IE8有一些限制)

php 织梦CMS图片处理类用法

php 织梦CMS图片处理类用法

PHP织梦CMS图片处理类,感兴趣的小伙伴,下面一起跟随小编 jb51.cc的小编来看看吧。
经测试代码如下:

<?PHP
if(!defined('DEDEINC')) exit('Dedecms');
/**
 * 图像处理类
 *
 * @param 
 * @author 小编 jb51.cc jb51.cc
 **/
class image
{
    var $attachinfo;
    var $targetfile;    //图片路径
    var $imagecreatefromfunc;
    var $imagefunc;
    var $attach;
    var $animatedgif;
    var $watermarkquality;
    var $watermarktext;
    var $thumbstatus;
    var $watermarkstatus;
    
    // 析构函数,兼容PHP4
    function image($targetfile,$cfg_thumb,$cfg_watermarktext,$photo_waterpos,$photo_diaphaneity,$photo_wheight,$photo_wwidth,$cfg_watermarktype,$photo_marktrans,$trueMarkimg,$attach = array())
    {
        $this->__construct($targetfile,$attach);
    }
    // 析构函数
    function __construct($targetfile,$attach = array())
    {
        $this->thumbstatus = $cfg_thumb;
        $this->watermarktext = $cfg_watermarktext;
        $this->watermarkstatus = $photo_waterpos;
        $this->watermarkquality = $photo_marktrans;
        $this->watermarkminwidth = $photo_wwidth;
        $this->watermarkminheight = $photo_wheight;
        $this->watermarktype = $cfg_watermarktype;
        $this->watermarktrans = $photo_diaphaneity;
        $this->animatedgif = 0;
        $this->targetfile = $targetfile;
        $this->attachinfo = @getimagesize($targetfile);
        $this->attach = $attach;

        switch($this->attachinfo['mime'])
        {
            case 'image/jpeg':
                $this->imagecreatefromfunc = function_exists('imagecreatefromjpeg') ? 'imagecreatefromjpeg' : '';
                $this->imagefunc = function_exists('imagejpeg') ? 'imagejpeg' : '';
                break;
            case 'image/gif':
                $this->imagecreatefromfunc = function_exists('imagecreatefromgif') ? 'imagecreatefromgif' : '';
                $this->imagefunc = function_exists('imagegif') ? 'imagegif' : '';
                break;
            case 'image/png':
                $this->imagecreatefromfunc = function_exists('imagecreatefrompng') ? 'imagecreatefrompng' : '';
                $this->imagefunc = function_exists('imagepng') ? 'imagepng' : '';
                break;
        }//为空则匹配类型的函数不存在
        $this->attach['size'] = empty($this->attach['size']) ? @filesize($targetfile) : $this->attach['size'];
        if($this->attachinfo['mime'] == 'image/gif')
        {
            $fp = fopen($targetfile,'rb');
            $targetfilecontent = fread($fp,$this->attach['size']);
            fclose($fp);
            $this->animatedgif = strpos($targetfilecontent,'netscape2.0') === false ? 0 : 1;
        }
    }
    /**
     *  生成缩略图
     *
     * @access    public
     * @param     int  $thumbwidth  图片宽度
     * @param     int  $thumbheight  图片高度
     * @param     int  $preview  是否预览
     * @return    void
     */
    function thumb($thumbwidth,$thumbheight,$preview = 0)
    {
        $this->thumb_gd($thumbwidth,$preview);
        if($this->thumbstatus == 2 && $this->watermarkstatus)
        {
            $this->image($this->targetfile,$this->attach);
            $this->attach['size'] = filesize($this->targetfile);
        }
    }
    /**
     *  图片水印
     *
     * @access    public
     * @param     int   $preview  是否预览
     * @return    void
     */
    function watermark($preview = 0)
    {
        if($this->watermarkminwidth && $this->attachinfo[0] <= $this->watermarkminwidth && $this->watermarkminheight && $this->attachinfo[1] <= $this->watermarkminheight)
        {
            return ;
        }
        $this->watermark_gd($preview);
    }
    /**
     *  使用gd生成缩略图
     *
     * @access    public
     * @param     int  $thumbwidth  图片宽度
     * @param     int  $thumbheight  图片高度
     * @param     int  $preview  是否预览
     * @return    void
     */
    function thumb_gd($thumbwidth,$preview = 0)
    {
        if($this->thumbstatus && function_exists('imagecreatetruecolor') && function_exists('imagecopyresampled') && function_exists('imagejpeg'))
        {
            $imagecreatefromfunc = $this->imagecreatefromfunc;
            $imagefunc = $this->thumbstatus == 1 ? 'imagejpeg' : $this->imagefunc;
            list($imagewidth,$imageheight) = $this->attachinfo;
            if(!$this->animatedgif && ($imagewidth >= $thumbwidth || $imageheight >= $thumbheight))
            {
                $attach_photo = $imagecreatefromfunc($this->targetfile);
                $x_ratio = $thumbwidth / $imagewidth;
                $y_ratio = $thumbheight / $imageheight;
                if(($x_ratio * $imageheight) < $thumbheight)
                {
                    $thumb['height'] = ceil($x_ratio * $imageheight);
                    $thumb['width'] = $thumbwidth;
                }
                else
                {
                    $thumb['width'] = ceil($y_ratio * $imagewidth);
                    $thumb['height'] = $thumbheight;
                }
                $targetfile = !$preview ? ($this->thumbstatus == 1 ? $this->targetfile.'.thumb.jpg' : $this->targetfile) : './watermark_tmp.jpg';
                $thumb_photo = imagecreatetruecolor($thumb['width'],$thumb['height']);
                imagecopyresampled($thumb_photo,$attach_photo,$thumb['width'],$thumb['height'],$imagewidth,$imageheight);
                if($this->attachinfo['mime'] == 'image/jpeg')
                {
                    $imagefunc($thumb_photo,$targetfile,100);
                }
                else
                {
                    $imagefunc($thumb_photo,$targetfile);
                }
                $this->attach['thumb'] = $this->thumbstatus == 1 ? 1 : 0;
            }
        }
    }
    /**
     *  使用gd进行水印
     *
     * @access    public
     * @param     int   $preview  是否预览
     * @return    void
     */
    function watermark_gd($preview = 0)
    {
        if($this->watermarkstatus && function_exists('imagecopy') && function_exists('imagealphablending') && function_exists('imagecopymerge'))
        {
            $imagecreatefunc = $this->imagecreatefromfunc;
            $imagefunc = $this->imagefunc;
            list($imagewidth,$imageheight) = $this->attachinfo;
            if($this->watermarktype < 2)
            {
                $watermark_file = $this->watermarktype == 1 ? DEDEDATA.'/mark/mark.png' : DEDEDATA.'/mark/mark.gif';
                $watermarkinfo = @getimagesize($watermark_file);
                $watermark_logo = $this->watermarktype == 1 ? @imagecreatefrompng($watermark_file) : @imagecreatefromgif($watermark_file);
                if(!$watermark_logo)
                {
                    return ;
                }
                list($logowidth,$logoheight) = $watermarkinfo;
            }
            else
            {
                $Box = @imagettfbBox($this->watermarktext['size'],$this->watermarktext['angle'],$this->watermarktext['fontpath'],$this->watermarktext['text']);
                $logowidth = max($Box[2],$Box[4]) - min($Box[0],$Box[6]);
                $logoheight = max($Box[1],$Box[3]) - min($Box[5],$Box[7]);
                $ax = min($Box[0],$Box[6]) * -1;
                $ay = min($Box[5],$Box[7]) * -1;
            }
            $wmwidth = $imagewidth - $logowidth;
            $wmheight = $imageheight - $logoheight;
            if(($this->watermarktype < 2 && is_readable($watermark_file) || $this->watermarktype == 2) && $wmwidth > 10 && $wmheight > 10 && !$this->animatedgif)
            {
                switch($this->watermarkstatus)
                {
                    case 1:
                        $x = +5;
                        $y = +5;
                        break;
                    case 2:
                        $x = ($imagewidth - $logowidth) / 2;
                        $y = +5;
                        break;
                    case 3:
                        $x = $imagewidth - $logowidth - 5;
                        $y = +5;
                        break;
                    case 4:
                        $x = +5;
                        $y = ($imageheight - $logoheight) / 2;
                        break;
                    case 5:
                        $x = ($imagewidth - $logowidth) / 2;
                        $y = ($imageheight - $logoheight) / 2;
                        break;
                    case 6:
                        $x = $imagewidth - $logowidth - 5;
                        $y = ($imageheight - $logoheight) / 2;
                        break;
                    case 7:
                        $x = +5;
                        $y = $imageheight - $logoheight - 5;
                        break;
                    case 8:
                        $x = ($imagewidth - $logowidth) / 2;
                        $y = $imageheight - $logoheight - 5;
                        break;
                    case 9:
                        $x = $imagewidth - $logowidth - 5;
                        $y = $imageheight - $logoheight -5;
                        break;
                }
                $dst_photo = @imagecreatetruecolor($imagewidth,$imageheight);
                $target_photo = $imagecreatefunc($this->targetfile);
                imagecopy($dst_photo,$target_photo,$imageheight);
                if($this->watermarktype == 1)
                {
                    imagecopy($dst_photo,$watermark_logo,$x,$y,$logowidth,$logoheight);
                }
                elseif($this->watermarktype == 2)
                {
                    if(($this->watermarktext['shadowx'] || $this->watermarktext['shadowy']) && $this->watermarktext['shadowcolor'])
                    {
                        $shadowcolorrgb = explode(',',$this->watermarktext['shadowcolor']);
                        $shadowcolor = imagecolorallocate($dst_photo,$shadowcolorrgb[0],$shadowcolorrgb[1],$shadowcolorrgb[2]);
                        imagettftext($dst_photo,$this->watermarktext['size'],$x + $ax + $this->watermarktext['shadowx'],$y + $ay + $this->watermarktext['shadowy'],$shadowcolor,$this->watermarktext['text']);
                    }
                    $colorrgb = explode(',$this->watermarktext['color']);
                    $color = imagecolorallocate($dst_photo,$colorrgb[0],$colorrgb[1],$colorrgb[2]);
                    imagettftext($dst_photo,$x + $ax,$y + $ay,$color,$this->watermarktext['text']);
                }
                else
                {
                    imagealphablending($watermark_logo,true);
                    imagecopymerge($dst_photo,$logoheight,$this->watermarktrans);
                }
                $targetfile = !$preview ? $this->targetfile : './watermark_tmp.jpg';
                if($this->attachinfo['mime'] == 'image/jpeg')
                {
                    $imagefunc($dst_photo,$this->watermarkquality);
                }
                else
                {
                    $imagefunc($dst_photo,$targetfile);
                }
                $this->attach['size'] = filesize($this->targetfile);
            }
        }
    }
}//End Class


/***   代码来自小编 jb51.cc(jb51.cc)   ***/

关于织梦CMS二开php使用json讲解织梦cms二次开发教程的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Dedecms创建栏目详细讲解 织梦CMS栏目怎么样创建教程、Linux服务器上安装织梦CMS,linux服务器织梦cms_PHP教程、php – 何时使用json和jsonp使用jquery $.ajax?、php 织梦CMS图片处理类用法的相关知识,请在本站寻找。

本文标签: