2015年03月18日

PHP生成新浪t.cn短URL

Filed under: PHP » 实践经验 — cmpan @ 2015-03-18 20:55:18

网页内容里面显示URL时,如果在电脑上显示,问题不大,但是如果在手机上的话,一个加入SEO优化关键词的URL,占了手机好几行,所以短URL这个时候就发挥作用了。
有时候淘宝会禁止从某个网站跳转来,我们把淘宝页面做成短URL后,再放入网站中,短网址就成了一个中转站,这样淘宝就当点击来自短网址网站。

1
2
3
4
5
6
7
8
9
<?php
$key = '2270845191';
$r = file_get_contents('http://api.t.sina.com.cn/short_url/shorten.json?source=' . $key . '&url_long=http://yulans.cn/&url_long=http://www.yulans.cn/');
if($r) {
    $items = json_decode($r);
    foreach($items as $item) {
        print "{$item->url_long} => \n{$item->url_short}\n----------\n";
    }
}

Views – 2570

2014年04月6日

【原创】PHP的动态特性

Filed under: PHP » PHP » 实践经验 — cmpan @ 2014-04-06 13:21:15

原文2008年写,发布在PHP杂志2009.1第十五期,看PDF文档效果会更好点。
PHPer15.pdf 下载
作者:流水孟春 121169238(at)qq.com
本文主要总结给对PHP 特性不了解的新手看的,因此演示代码占比较多的篇幅。
大家看还缺哪些给补充吧。欢迎来邮件或在PHPChina 的《PHPer》杂志版块纠正错误。
动态语言就是能够在运行时改变程序结构和变量类型的语言。例如:新的类和对
象可以被加载和创建,新的函数或方法可以加入和去除等等,比如Smalltalk、Ruby、
Python、PHP、Lua、Perl、Groovy 等。反之则是静态语言,比如C/C++、Java、C#等。
动态语言的动态特性决定它开发的时候需要更少的代码,有更高的灵活性。PHP
的动态特性奠定了它存在的价值,熟悉PHP 的动态特性让我们更能活用PHP。
(全文 …)

Views – 2867

2012年12月28日

PHP兼容公有云平台附件存贮的设计方案(原创)

Filed under: 云&开放平台 » PHP » 实践经验 — cmpan @ 2012-12-28 23:57:37

我们网站上常上传的附件有视频、音频、压缩包、文本文件、图片等文件,并且我们常需要对图片文件生成缩略图、或者是对已上传的文件改变大小并打上水印,而且会场将某一个文件夹里面的临时文件全部删除。在我们的便准环境里,直接用gd或imagemagick函数就可以直接读取文件系统里的图片处理后再存贮。但是共有云平台是不允许对代码目录进行写操作的,而是使用独立的文件系统来存贮附件。我们通过filesize()获取图片大小,或用imagecreatefromjpeg()来创建图片对象等,我们传入的参数这时候就会是通过http协议url了(否则用自定义的wrapper)。我们都知道,通过http来读文件相对于程序运行时间来说是很话时间的,是程序性能的瓶颈所在。这都不行,那啥办?使用自定义wrapper。
(全文 …)

Views – 1817

2012年11月17日

改善PHP开发方式

Filed under: PHP » PHP » 实践经验 — cmpan @ 2012-11-17 18:13:41

使用好的开发方式,我们可以提高开发效率、避免和减少出错概率、保证代码质量、提高系统可维护性、避免灾难事故发生,可以花更多的时间找凉快的地方凉快去。
(全文 …)

Views – 2135

2012年10月29日

【转】支持快速迭代的LAMP解决方案 ——贴吧LAMP解决方案

Filed under: PHP » PHP » 实践经验 — cmpan @ 2012-10-29 20:58:14

摘要:天下武功,唯快不破,互联网竞争的利器就是快!且听贴吧LAMP解决方案如何全面支持快速迭代。
关键词:LAMP,快速迭代
领域:架构

(全文 …)

Views – 1550

【转】漫谈社区PHP 业务开发

Filed under: PHP » PHP » 实践经验 — cmpan @ 2012-10-29 20:55:24

在当前这个互联网业务飞速发展时期,新的产品如雨后春笋般涌出,老产品线新业务也在不断突破和尝试。这就对快速开发迭代提出了更高的要求。

(全文 …)

Views – 1675

2012年10月23日

给ecshop添加可选择多语言

Filed under: PHP » PHP » 实践经验 — cmpan @ 2012-10-23 14:36:51

需求:
前台默认使用英文(en_us),可选择使用中文(zh_cn),同时英文页面依然是英文。

思路:
通过在访问的url上加上 lang=zh_cn变量来使用中文,没有lang变量的时候使用默认的语言

方案:
当url没有lang变量的时候,如果已登录用户设置了$_SESSION['lang'],则使用$_SESSION['lang']作为默认语言,如果未登录用户设置了$_COOKIE['lang'],则使用$_COOKIE['lang']作为默认语言,否则使用’en_us’作为默认语言。
(全文 …)

Views – 2650

2012年07月13日

discuz!X2.5个人空间DIY模块开发

Filed under: discuzx » PHP » PHP » 实践经验 — 标签: — cmpan @ 2012-07-13 18:12:30

1、在source/language/lang_space.php
的 $lang['blockdata']数组添加 ‘block下标’ => ‘模块显示名称’

程序将通过: http://localhost/dzx25/home.php?mod=spacecp&ac=index&op=getblock&blockname=block下标&inajax=1
获取内容

2、在source/function/function_space.php function getblockhtml() 的switch块中添加 ‘block下标’ switch条件并实现返回内容。

3、默认启用模块设置:

修改 source/function/function_home.php 的 getuserdefaultdiy() 函数
‘block`block下标’ => array(‘attr’ => array(‘name’=>’block下标’))

Views – 2649

2012年02月16日

zend studio打开已存在项目的方法

Filed under: PHP » Zend Studio » PHP » 实践经验 — cmpan @ 2012-02-16 20:31:02

我们用zend studio创建一个php项目以后,把项目文件夹复制到其他电脑上以或切换工作区后,是可以直接打开该项目的。

打开方法:
File > Import > General > Existing Projects into Workspace

然后选择项目所在文件夹即可。

Zend Studio每个工作区下创建一个.metadata和RemoteSystemsTempFiles文件夹来保存项目相关信息。
我们打开zend studio的时候,它打开了一个Workspace,这个Workspace里面可以有多个项目,项目文件可以再工作区文件夹里面,也可以在外面。

不像VS打开单个项目,而是打开一个Workspace,而项目则在Workspace中,如果想打开其他不在工作区中的项目,则把项目导入工作区即可。

Views – 5041

2012年02月15日

Zend studio 8+设置默认使用UTF-8编码

Filed under: PHP » Zend Studio » PHP » 实践经验 — cmpan @ 2012-02-15 12:42:21

Zend Studio 8+默认使用系统编码,也就是GBK,当我们用Zend Studio 用从SVN服务器导出项目的时候,如果项目使用UTF-8字符集,打开文件的时候中文将会出现乱码。
解决:
将如下设置为使用UTF-8编码
1、Project > Properties > Resource
2、Window > Preferences > General > Workspace
3、Window > Preferences > Web > HTML Files
4、Window > Preferences > Web > CSS Files
5、Window > Preferences > PHP > Debug

Views – 4313

2011年11月11日

用Flash理跨域上传或异步请求不能传Cookie的解决方案

Filed under: PHP » PHP » 实践经验 — cmpan @ 2011-11-11 03:09:00

用flash上传或flash做代理异步请求的时候,因为flash不能直接传递浏览器中的cookie到服务器,引起SESSION无法识别身份。想当年刚碰到这个问题的时候会非常头痛。其实在PHP里面,解决时很容易的。

客户端:把cookie变量添加到URL

1
2
3
4
5
6
7
    var url = 'http://www.vkas.net/index.php?user/account/getInfo';
    if(document.cookie.length > 0) {
        var cookies = document.cookie.split(';');
        for(var i in cookies) {
            url += '&' + encodeURI(cookies[i].replace(/^\s+|\s+$/g, ''));
        }
    }

服务器端:把URL中传的cookie.session.name设置到session id。这个过程必须在session_start()之前做。

1
2
3
4
    // 解决Flash不能传Cookie
    if (!empty($_GET[session_name()])) {
        session_id($_GET[session_name()]);
    }

Views – 2671

2011年10月26日

对于PHP大型开发框架的看法

Filed under: PHP » PHP » 实践经验 — cmpan @ 2011-10-26 10:00:09

PHP从诞生以来就受到广大编程爱好者的喜欢,成为中小站长的好帮手,并培养了大量的PHP编程人员,但是随着PHP的应用越发广泛,很多时候已不限于从事中小网站的应用,一些大型PHP项目也屡见不鲜。
(全文 …)

Views – 2117

2011年09月29日

最丑陋的PHP命名空间

Filed under: PHP » PHP » 实践经验 — cmpan @ 2011-09-29 13:12:29

PHP5.3加入了命名空间,很高兴有了这个特性,把自己写的框架改成使用命名空间的,发现很不爽。

写了个没有命名空间的函数 function myFnc(){}
调用的时候如果页面里声明了命名空间,就必须用 \myFnc() 来调用。
写了一个没有命名空间的类 class MyClass {}
调用的时候如果页面里声明了命名空间,就必须用 new \MyClass() 来调用。

为什么声明了命名空间就不能直接用 myFnc()、new MyClass() 类调用全局函数和类呢?
万恶之源在于画蛇的时候添了一足。
那条足在哪呢?
就是相对命名空间

我定义了如下命名空间
namespace sp\A;
namespace sp\A\B;
namespace sp\A\B\C;

在namespace sp\A;中,我可以使用 use B\ClassName、use B\C\ClassName来使用命名空间 namespace sp\A\B和namespace sp\A\B\C下的类,这是使用相对命名空间来访问命名空间,这造成混乱不少。
有相对就会有绝对,而绝对访问方式是:
use \spA\B\ClassName;
use \sp\A\B\C\ClassName;

看见use中的开头的反斜杠“\”了吗?他就是万恶之源中的万恶之源。

为什么一定要搞个相对命名空间出来而不统一直接用
use spA\B\ClassName;
use sp\A\B\C\ClassName;

如果这样我们没有命名空间的类可以直接用 new MyClass(),而不用 new \MyClass(),
调用没有命名空间的函数就可以直接用 muFnc(),而不必用 \myFnc()

画蛇何必添足呢!

Views – 2167

2011年09月17日

PHP数据类型隐性转换的陷阱

Filed under: PHP » PHP » 实践经验 — cmpan @ 2011-09-17 05:45:04

之前写过一篇《PHP的动态特性》总结了部分PHP的特性,因为动态语言的特性,我们使用PHP时倍感便利,但是便利的同时会引来一些陷阱,不得不防。
(全文 …)

Views – 2322

2011年09月1日

PHP读取服务器端文件提供弹出下载窗口

Filed under: PHP » PHP » 实践经验 — cmpan @ 2011-09-01 16:10:09

有些文件需要经过身份验证以后才能下载,我们不容用户知道下载的地址,甚至文件不存放在web文件夹下,感觉是不是做起来比较难呢?用PHP几行就可以了。这是在PHP官方手册提供的例子。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$file = 'monkey.gif';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
}
?>

Views – 2096

2011年07月22日

PHP错误处理及异常处理

Filed under: PHP » PHP » 实践经验 — cmpan @ 2011-07-22 11:25:40

给新人总结一下PHP的错误处理。

PHP提供了错误处理和日志记录的功能. 这些函数允许你定义自己的错误处理规则,以及修改错误记录的方式. 这样,你就可以根据自己的需要,来更改和加强错误输出信息以满足实际需要.

通过日志记录功能,你可以将信息直接发送到其他日志服务器,或者发送到指定的电子邮箱(或者通过邮件网关发送),或者发送到操作系统日志等,从而可以有选择的记录和监视你的应用程序和网站的最重要的部分。

错误报告功能允许你自定义错误反馈的级别和类型,可以是简单的提示信息或者使用自定义的函数进行处理并返回信息.

(全文 …)

Views – 2974

2011年06月4日

Flash请求不能传Cookie的PHP解决方案

Filed under: WEB » PHP » 实践经验 — cmpan @ 2011-06-04 16:53:47

用flash 通过GET或POST发送数据到服务器,服务器端再绑定到对应的SESSION

1
2
3
4
5
6
// 解决Flash不能传Cookie
if (!empty($_POST[session_name()])) {
    $uesid = $_POST[session_name()];
    $_COOKIE[session_name()] = $uesid;
    session_id($uesid);
}

注意:服务器端不能用$_REQUEST来获取$uesid,$_REQUEST[ini_get('session.name')]取得的是没有被程序修改过的$_COOKIE[ini_get('session.name')]

Views – 1995

2011年05月27日

如何寻找一个不会让你后悔的PHP开发框架

Filed under: PHP » 实践经验 — cmpan @ 2011-05-27 09:04:39

(转载)
目前,有人使用的PHP框架有400多。很多开发了发布的PHP框架可以说是近乎上千个之多。在选择PHP开发框架时,很多人都会陷入迷茫,或因此走很多弯路。

因此,我们这里简单讲一下,如何寻找一个不会让你后悔的PHP开发框架。
(全文 …)

Views – 1768

2011年01月5日

php启用curl时命令行下出现找不到zlib.dll解决办法

Filed under: PHP » PHP » 实践经验 — cmpan @ 2011-01-05 14:06:20

到zlib的老巢http://www.zlib.net/下载http://zlib.net/zlib125-dll.zip,把里面的zlib1.dll解压到php所在目录并改名成zlib1.dll

过去没太注意这个问题,命令行下出这个问题的时候,我直接在ie中浏览就OK了。现在看不过去了弄掉它。

Views – 2050

2010年03月16日

备份规范不可少

Filed under: PHP » 实践经验 — cmpan @ 2010-03-16 10:16:51

给客户开发网站的时候,svn不可少,要经常提交

Views – 1754

Older Posts »
Copyright © 2009 流水孟春 版权所有
Web技术,LAMP,Nginx,Web2.0,前端技术
Powered by WordPress & UI Designed by 流水孟春