2011
Dec
08
MCrypt是一个功能强大的加密算法扩展库,它包括有22种算法。Mac OS X 7预安装了PHP5.3.6,但没有安装MCrypt扩展,下面我们安装此扩展(据说安装前要先在电脑里安装XCODE,要不编译不了软件,因为我已经安装了xcode,所以无法验证是否必须先安装xcode);
1.下载并解压libmcrypt-2.5.8.tar.bz2;
2.在终端执行如下命令:
......2011
Mar
14
有时,在没有声明任何实例的情况下访问类中的函数或者基类中的函数和变量很有用处。而 :: 运算符即用于此情况。
<?php
class A {
function example() {
echo "I am the original function A::example().<br />\n";
}
}
class B extends A {
function example() {
echo "I am the redefined function B::example().<br />\n";
A::example();
}
}
// A 类没有对象,这将输出
// I am the original function A::example().<br />
A::example();
// 建立一个 B 类的对象
$b = new B;
// 这将输出
// I am the redefined function B::example().<br />
// I am the original function A::example().<br />
$b->example();
?>
上面的例子调用了 A 类的函数 example(),但是这里并不存在 A 类的对象,因此不能这样用 $a->example() 或者类似的方法调用 example()。反而我们将 example() 作为一个类函数来调用,也就是说,作为一个类自身的函数来调用,而不是这个类的任何对象。
这里有类函数,但没有类的变量。实际上,在调用函数时完全没有任何对象。因而一个类的函数可以不使用任何对象(但可以使用局部或者全局变量),并且可以根本不使用 $this 变量。
......2010
Dec
28
2010
Dec
10
最近做项目时需要用到无刷新上传图片并预览,在网上找了一些教程,似乎最简单的方法就是iframe上传。一个最原始最简单的iframe上传例子:
前台上传页面index.html,主要是一个表单与一个js回调函数。上传文件时,form表单的method、 enctype属性必须和下面代码一样。然后将target的值设为iframe的name,这样就可以实现无刷新上传文件。
<!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" /> <title>上传文件</title> </head> <body> <script> function CallbackFunction(str){ alert("上传成功"); } </script> <form action="uploadfile.php" enctype="multipart/form-data" method="post" target="iframeUpload"> <iframe name="iframeUpload" src="" width="350" height="35" frameborder=0 SCROLLING="no" style="display:NONE"></iframe> <input id="test_file" name="test_file" type="file"> <input value="上传文件" type="submit"> </form> </body> </html>
后台上传处理页面uploadfile.php,这段代码为简单的上传代码,没有进行错误及异常处理。上传代码执行完成后,要告诉父页面已经上传完毕了,因此,在这个页面里调用父页面的回调函数CallbackFunction,这个函数可以有参数,形式自己定义。
......2010
Oct
25
1.echo和print的区别
PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的。echo输出后没有返回值,但print有返回值,当其执行失败时返回flase。因此可以作为一个普通函数来使用,例如执行下面的代码后变量$r的值将为1:
2.include与require的区别
include()与require()的功能也基本相同(包含),但在用法上也有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。例如在下面代码中,如果变量$a为真,则将包含文件a.php:
2010
Sep
17
看PHP100视频教程有段时间了,但是都是断断续续,无聊时才会去看看,不过确实学到了不少东西,是我见过最好的PHP视频教程,建议有这方面爱好的盆友都去看看。
一集集的从PHP100的官网上下载是很繁琐的事情,特别是每一集都要新开一个页面,然后选择一个下载点。加上中间有部分需要解压密码,就更麻烦了。
今天在上网搜解压密码时找到了一个全集视频教程下载的地址,并且附带解压密码,需要下载的童鞋方便啦。
......2010
Aug
16
几个月前看了PHP100的视频教程,其中有一课是关于PHP操作SQLite的的方法,按照教程中的方法,怎么都不能让PHP支持SQLite,郁闷了半天都没解决问题,这个疑惑一直到今天才解开。
今天在逛PHP100官网时,一个偶然的机会看到有人在论坛问题关于SQLite的设置问题,不经意点开,发现他也是PHP无法支持SQLite。看到二楼的回答,恍然大悟,难道我也是因为php_pdo.dll与php_sqlite.dll顺序问题而导致的,打开php.ini一看,果然,需要先加载pdo,再加载sqlite,修改顺序后重启apache,用phpinfo查看,加载SQLite成功!
[PHP_PDO] extension=php_pdo.dll [PHP_PDO_SQLITE] extension=php_pdo_sqlite.dll [PHP_SQLITE] extension=php_sqlite.dll
官方的演示用的好像是集成的环境,看不到顺序。而我安装的是独立包,配置环境的时候没有安装这些扩展,于是就到网上下载了一个PHP的zip压缩包,将这些扩展手动复制到扩展文件夹,再将php.ini的该行注释去掉,这样顺序就很容易出错。嗯,以后多注意。
......2010
Jun
26
今天在网上闲逛,发现了一个很好用的PHP生成RSS的类:FeedCreator。尝试了一下,很不错,使用也非常简单,不多说,看实现代码:
<?php
include("feedcreator.class.php");
$rss = new UniversalFeedCreator();
$rss->useCached(); // use cached version if age<1 hour
$rss->title = "PHP news";
$rss->description = "daily news from the PHP scripting world";
//optional
$rss->descriptionTruncSize = 500;
$rss->descriptionHtmlSyndicated = true;
$rss->link = "http://www.dailyphp.net/news";
$rss->syndicationURL = "http://www.dailyphp.net/".$_SERVER["PHP_SELF"];
$image = new FeedImage();
$image->title = "dailyphp.net logo";
$image->url = "http://www.dailyphp.net/images/logo.gif";
$image->link = "http://www.dailyphp.net";
$image->description = "Feed provided by dailyphp.net. Click to visit.";
//optional
$image->descriptionTruncSize = 500;
$image->descriptionHtmlSyndicated = true;
$rss->image = $image;
// get your news items from somewhere, e.g. your database:
mysql_select_db($dbHost, $dbUser, $dbPass);
$res = mysql_query("SELECT * FROM news ORDER BY newsdate DESC");
while ($data = mysql_fetch_object($res)) {
$item = new FeedItem();
$item->title = $data->title;
$item->link = $data->url;
$item->description = $data->short;
//optional
$item->descriptionTruncSize = 500;
$item->descriptionHtmlSyndicated = true;
$item->date = $data->newsdate;
$item->source = "http://www.dailyphp.net";
$item->author = "John Doe";
?>
$rss->addItem($item);
}
点击此处下载feedcreator.class.php
注:(1)、该类默认时区为+01:00,如需修改请修改feedcreator.class.php第159行;
(2)该类默认编码为ISO-8859-1,如需修改请修改feedcreator.class.php第159行。
2010
Jun
12
最近在看PHP100的视频教程,呵呵,虽然以前编程天天都在用PHP,但是很多知识都是一知半解,看了PHP100的视频教程之后发现自己了解的东西真的很少。上面的视频教程很不错,推荐大家去看看。
今天看的是PHP生成验证码那节,按照教程做的,运行时却发现报错,如图:
......2010
May
22
大家经常会用到MysQL、SqlServer、Access等数据库,但它们都有一个缺点,就是需要服务器的支持。今天给大家介绍一款不需要任何服务器支持的数据库:SQLite。
也许你以前从未听说过该数据库,其实我也是前些时候才接触到的。SQLite是开源的,并且速度比Mysql、PostgreSQL都要快。刚接触它的时候你也许会觉得它和Access很像,但是Access需要安装Office中的Access才能新建,而SQLite不需要安装任何软件,由程序生成。它的嵌入式也许是最大优点,手机、iPhone等设备中使用非常方便。SQLite还有很多优点:
1、支持大部分SQL语句;
2、它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了;
3、它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java等,还有ODBC接口;
4、支持数据库大小至2TB;
5、储存在单一磁盘文件中的一个完整的数据;
6、支持多种开发语言,C, PHP, Perl, Java, ASP.NET,Python;
7、管理方便,可以使用sqlitemanager或者火狐的SQLite插件管理
附:
1、用PHP操作sqlite数据库:
晚上和爸妈吃个饭。 (2月6日)
装修好累哟
(2月4日)
《斯巴达克斯:复仇》 (2月3日)
白
JankoAtWarpSpeed对...