分类: PHP教程 |

 公司之前一直用没加密的smtp服务,上周突然要求全部换成ssl的连接方式,强制停止了不使用ssl的smtp服务,导致了原本很多使用smtp的程序不能正常工作。

有一个程序原来是用PHPMailer来发邮件的,好在PHPMailer支持ssl的smtp,我以为改下端口,加下SMTPSecure设置就可以了。事实当然没那么简单,加了下面这句代码后PHPMailer一直提示不能连接到主机。

查看更多...

Tags: php openssl

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 13711

管道实现PHP与Python相互通信

 之前在公司做项目的时候碰到了一个解23个系数的回归方程的问题,当时只记得在大学的时候听数学老师讲过回归计算,后来也就还回去了。在网上也只能找到一个Python解回归方程的代码,而我用的主语言是PHP,对Python也只略懂些语法,所以只能想办法让PHP启一个Python进程再用进程间通信的方法来解决了。

 
看看管道文件的打开规则。

查看更多...

Tags: php 管道

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 7309

php回调函数必需知道的几种方法

 php回调函数的几种方法

 
PHP回调函数用的场合还是挺多的,特别是一些用到模式的地方。这篇文章就小小的总结一下PHP的回调函数的几种形式。
 
先看下PHP手册对一个函数的介绍,因为实现调用回调函数和这个函数分不开。

call_user_func_array

(PHP 4 >= 4.0.4, PHP 5)

call_user_func_array --  Call a user function given with an array of parameters

Description

mixed call_user_func_array ( callback function, array param_arr )

Call a user defined function given by function, with the parameters in param_arr

查看更多...

Tags: php 回调函数

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 11466

PHP中的错误处理、异常处理机制

 在编写php程序时,错误处理是一个重要的部分。如果程序中缺少错误检测代码,那么看上去很不专业,也为安全风险敞开了大门

 
 
例:
<?php 
    $a = fopen('test.txt','r');
    //这里并没有对文件进行判断就打开了,如果文件不存在就会报错
?>
 
那么正确的写法应该如下:
<?php
    if(file_exists('test.txt')){
        $f=fopen('test.txt','r');
        //使用完后关闭
        fclose($f);
    } 
?>
 
一、PHP错误处理的三种方式
A、简单的die()语句;
    等价于exit();
例:
    if(!file_exists('aa.txt')){
        die('文件不存在');
    } else {
        //执行操作
    }
    //如果上面die()被触发,那么这里echo接不被执行
    echo 'ok';
 
    简洁写法:
    file_exits('aaa.txt') or die('文件不存在');
    echo 'ok';
 
B、自定义错误和错误触发器
 
1、错误处理器(自定义错误,一般用于语法错误处理)
        创建自定义错误函数(处理器),该函数必须有能力处理至少两个参数(error_level和errormessage),但是可以接受最多五个参数(error_file、error_line、error_context)
        语法:
        function error_function($error_level,$error_message,$error_file,$error_line,$error_context)
        //创建好后还需要改写set_error_handler();函数
        set_error_handler('error_function',E_WARNING);//这里error_function对应上面创建的自定义处理器名,第二个参数为使用自定义错误处理器的错误级别;
错误报告级别(了解即可)
 
这些错误报告级别是错误处理程序旨在处理的错误的不同的类型:
 

查看更多...

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 4806

在文章的开始,我首先要声明一点:本篇文章不是讲解的ThinkPHP的多语言转换,而是关于ThinkPHP使用公共语言包来代替模板文件中的汉字的教程.

我们知道,Css方便之处在于它可以让你定义一个样式,只要你修改下这个样式,那么所有的样式都会随之改变,而ThinkPHP的公共语言包功能也是这个原理,我们可以设置一个数组,该数组中包含了模板中用到的语言.如果要修改模板中的多处相同的文字是比较麻烦的,但是如果只是修改数组中的某一项就简单多了.下面我们就来看下,如何在ThinkPHP下建立自己的语言包.

首先,我假设你已经初始化了Thinkphp(生成了文件的架构),在这里就拿我的一个项目为例子来讲解下.

我的项目文件夹是SitePHP(APP_PATH),那么我们首先要配置下语言包的使用环境,我们找到SitePHP/Conf/config.php(如果没有就新建一个)

添加如下语句

 

return array{ 
'LANG_AUTO_DETECT'=> false,
'LANG_SWITCH_ON' => true,
'DEFAULT_LANG' =>'cn', 
}

 

好了,下一步我们需要,在SitePHP/Lang文件夹下建立cn文件夹,因为ThinkPHP系统会自动调用默认语言文件夹下的common.php文件,那么我们就建立一个common.php文件,然后在common.php文件中添加如下内容:

return array( 
'site_name' =>'我的网站', 
'site_keywords' =>'网站,SEO',
)

下面是最关键的一步,(笔者因为忽略了这一步好久没有调用成功),在SitePHP/Conf/下 建立一个tags.php文件,然后加入如下内容

 

return array(
'app_begin'=>
       array('CheckLang'),
);

好了,你已经配置好一切了,可以随便调用了,如果你想在Action中调用,那么可以使用

L(“site_name”)

如果你想在模板中调用,你可以使用{:L(“site_name”)},这样一来如果你想修改网站的名称直接修改site_name的值就可以了,是不是很方便呢?

上面我只是说了一些比较大众的设置,如果你设置了分组,以及TMPL_FILE_DEPR,那么相对就要根据不同的情况来命名语言包了

具体的语言包文件命名规范如下:

项目公共语言包 语言目录/common.php
项目分组语言包 语言目录/分组名.php
项目模块语言包 不存在分组情况:语言目录/模块名(小写).php
存在分组的情况:语言目录/分组名/模块名(小写).php

分组的模块语言包定义受TMPL_FILE_DEPR参数配置影响,如果你修改了TMPL_FILE_DEPR参数,例如:

  1. ‘TMPL_FILE_DEPR’=>’_',

那么,分组的模块语言包定义方式应该改为:
语言目录/分组名_模块名(小写).php

 

 

 

查看更多...

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 6142

ThinkPHP模板替换与系统常量及应用

默认的模板替换规则:

../Public : 会被替换成当前项目的公共模板目录 通常是 / 项目目录 /Tpl/default/Public/

__PUBLIC__ :会被替换成当前网站的公共目录 通常是 /Public/

__TMPL__ : 会替换成项目的模板目录 通常是 / 项目目录 /Tpl/default/

__ROOT__ : 会替换成当前网站的地址(不含域名)

__APP__ : 会替换成当前项目的 URL 地址 (不含域名)

__URL__ : 会替换成当前模块的 URL 地址(不含域名)

__ACTION__ :会替换成当前操作的 URL 地址 (不含域名)

__SELF__ : 会替换成当前的页面 URL

 

还可以通过在项目配置文件中配置TMPL_PARSE_STRING的值来自定义替换规则,如:

TMPL_PARSE_STRING  => array(

      '__PUBLIC__' =>  '/Common' ,   //  更改默认的 __PUBLIC__ 替换规则

      '__UPLOAD__' =>  '/Public/Uploads/' ,   //  增加新的上传路径替换规则

)

查看更多...

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 5820

ThinkPHP笔记——开启debug调试模式

 debug+trace模式可以查看开发过程中TP的错误信息,可以更好地帮助开发者debug。但是debug模式的开启还不是简单的在配置文件中中设置就可以的,经过查资料摸索,找到一种有效的方法。
首先在你已经部署好了ThinkPHP的项目目录
 
然后注意是在入口文件开启调试模式,在入口文件index.php 中写入一下代码define(‘APP_DEBUG’,true); 首先删除Runtime目录 ,然后再次运行一下,你会发现runtime目录下面的~runtime.php 文件没有了,说明你的调试模式开启成功了
 
之所以这个~runtime.php文件删除 ,这个文件是编译后的文件 会有缓存,所以在调试模式期间我们不用担心因为缓存而造成其他错误
 
trace页面的 也是我们开发者获取错误信息的而一个途径,所以我们需要开启trace页面,在THinkPHp3.0版本中trace页面是默认没有开启的,需要我们手动 的在项目配置文件中添加
 
‘SHOW_PAGE_TRACE’        =>true,   // 显示页面Trace信息
 
想要看看trace信息是否开启了,只要我们在 IndexAction.class.php 中的index方
 
法中加上$this->display();
 
 
 
然后再次运行如果你看到了如下界面,说明你的调试模式,以及trace 以及开启了

 

查看更多...

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 8981

基于Thinkphp的开源CMS系统即将面世

本CMS系统基于Thinkphp开发而成,旨在提供中小型企业网站和地方门户的解决方案。由于本CMS系统是使用Thinkphp开发的,而又由于Thinkphp的简单易学(大道至简,开发由我),所以本系统可以很方便的增减功能,非常的适合于二次开发。

主要特色:

1.基于Thinkphp开发,非常适合于二次开发。(这也是本系统的初衷)

2.完整的后台系统,包含网站栏目管理,文章管理,会员管理,管理员设置,系统变量设置等常用模型。

查看更多...

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 10950

 今天做一个企业站,需要实现这么个功能,参考了一下网上的资料。实现了这么个功能!

可以实现多个字段的筛选

所有改动均在arc.listview.class.php这个文件中

1.大概在45行左右,添加如下代码

查看更多...

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 7039

PHP5.4下DEDE登录后白板的解决方法

  dede安装完成后登录后台出现空白,经过分析代码,发现登录验证的时候用到了这个函数session_register() 原来我的php版本是5.4版本的,经过一系列的搜寻,发现这个函数在PHP5.4版本中已经被弃用了,已经被删除了。 也就是这个函数不再可用了。直接注释掉就可以了,不用进行注册就可以声明session。

 

另外的解决方法就是在include/userlogin.class.php 中声明一个函数

查看更多...

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 5924

从PHP5.2.10版本开始(现在有PHP5.2.10和5.3两个版本),有None-Thread Safe与Thread Safe两种版本的可供选择,这两种版本有何不同,作为使用者来说又应该如何选择呢?下面将为您讲述。


 

先从字面意思上理解,None-Thread Safe就是非线程安全,在执行时不进行线程(thread)安全检查;Thread Safe就是线程安全,执行时会进行线程(thread)安全检查,以防止有新要求就启动新线程的 CGI 执行方式耗尽系统资源。


 

再来看PHP的两种执行方式:ISAPI和FastCGI。FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以 FastCGI(无论搭配 IIS 6 或 IIS 7)执行 PHP ,都建议下载、执行 non-thread safe 的 PHP (PHP 的二進位檔有兩種包裝方式:msi 、zip ,請下載 zip 套件)。而线程安全检查正是为ISAPI方式的PHP准备的,因为有许多php模块都不是线程安全的,所以需要使用Thread Safe的PHP。

查看更多...

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 4722

CURL之用POST方法发送数据

 对CURL还不了解的同学请移步

http://www.zeroplace.cn/article.asp?id=797

当发起GET请求时,数据可以通过“查询字串”(query string)传递给一个URL。例如,在google中搜索时,搜索关键即为URL的查询字串的一部分:

http://www.google.com/search?q=nettuts

查看更多...

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 11261

curl简介及php中的curl

CURL简介

 curl是利用URL语法在命令行方式下工作的文件传输工具。

它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。

 

curl同样支持HTTPS认证,HTTP POST方法, HTTP PUT方法, FTP上传, kerberos认证,HTTP上传, 代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,上载文件断点续传,,http代理服务器管道( proxy tunneling), 甚至它还支持IPv6, socks5代理服务器,,通过http代理服务器上传文件到FTP服务器等等,功能十分强大。

 

查看更多...

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 5974

php截取html文章

PHP截取html代码,考虑了html标签的闭合问题

查看更多...

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 6517

HTTP Content-type对照表

 是不是经常找不到某个HTTP Content-type?以后就照这里找吧!!

查看更多...

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 14454

PHP5魔術方法的 调用实例

 PHP5魔術方法

魔术函数:  

1。__construct()

  构造函数 : 实例化对象时被调用,

查看更多...

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 5122

Javascript中定义类

 今天工作需要,又要封装一些类,总觉得还有些东西理解的不够,今天看了下面文章,感觉透彻了,分享给大家。


Javascript本身并不支持面向对象,它没有访问控制符,它没有定义类的关键字class,它没有支持继承的extend或冒号,它也没有用来支持虚函数的virtual,不过,Javascript是一门灵活的语言,下面我们就看看没有关键字class的Javascript如何实现类定义,并创建对象。

查看更多...

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 5224

正则表达式 贪婪与非贪婪

      在使用修饰匹配次数的特殊符号时,有几种表示方法可以使同一个表达式能够匹配不同的次数,比如:"{m,n}", "{m,}", "?", "*", "+",具体匹配的次数随被匹配的字符串而定。这种重复匹配不定次数的表达式在匹配过程中,总是尽可能多的匹配。比如,针对文本 "dxxxdxxxd",举例如下:

查看更多...

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 6146

asp base64编码中文

 在网上找了很久,终于找到一个可以用的!

<%

 

查看更多...

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 6473

php 正则表达式后缀

 Perl风格的正则表达式允许把单个字符选项(标志)放在正则表达式模式后面来修改匹配的解释或行为。例如,要进行不区分大小写的匹配,可以简单地使用i标志:

preg_match('/cat/i', 'Stop, Catherine!');        // returns true返回true

表4-12显示了在Perl兼容正则表达式中支持的来自Perl的修饰符:

表4-12:Perl标志

修饰符

意 义

/regexp/i

不区分大小写的匹配

/regexp/s

使句点(.)匹配任何字符,包括换行符(\n)

/regexp/x

从模式中删除空白符和注释

/regexp/m

使^匹配换行符 (\n)之后的内容,美元符号($)匹配换行符 (\n)之前的内容

/regexp/e

如果替换字符串是PHP代码,使用eval()执行该代码来得到实际的替换字符串。

PHP的Perl兼容正则表达式函数也支持在Perl中不支持的其他修饰符,如表4-13所示:

表4-13:其他的PHP标志

修饰符

意 义

/regexp/U

颠倒子模式的贪婪性;*和+尽可能少地匹配而不是尽可能多。

/regexp/u

把模式字符串当作UTF-8编码对待

/regexp/X

如果一个反斜杠之后跟着没有特殊意义的字符,将产生一个错误

/regexp/A

把锚定位在字符串的开头就像模式中有^一样

/regexp/D

使$字符仅匹配一行的末尾

/regexp/S

使表达式解析器更加小心地检查模式的结构,使得第二次运行时(如在一个循环中)加快速度

查看更多...

Tags: php php正则表达式

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 5417