Submitted by gouki on 2009, August 15, 7:02 AM
遗憾的是,g1居然不支持我的博客,失望啊。
自 WAP 发表
Misc | 评论:3
| 阅读:16166
Submitted by gouki on 2009, August 13, 10:18 PM
这是我的开发心得,但说白了,其实很简单。只要几个简单的步骤就可以了
1、到ucenter里创建一个新的应用,设定好你的路径,还有就是接收信息的文件,默认是uc.php,还有,是否同步登录,是否接受通知。
2、保存后,再编辑,你会发现最下面有一些define的字段,COPY出来,存为uc_config.php,放到你的项目里,留着被引用
3、到其他的dz程序里把uc.php COPY出来,进行简单的修改。根据第一步的设定,以确定你的最少action是什么。
- 默认action中一定要有test,否则会通讯不成功
- 如果开启通知,则一定要有updateapps,updateapps中有两个步骤:1是把所有的应用的缓存写入uc_client/data/cache/ucapps.php(好象文件名没记错)中;2是把当前APP_ID对应的配置重写为uc_config.php里
- 如果开启同步登录,则需要有synlogin,synlogout两个action
- 其他的就看你自己了,请对应手册,比如updatepwd,rename等操作。
4、部分uc_client函数返回是html代码,请echo出来看看是什么代码,如果是script的,请直接echo,否则无法与其他app同步。这个要切记切记。(为了这个,我测试了将近三天。可恨的是DZ代码中根本没有说明,只说返回HTML代码。)
其他就没有什么了。在你需要使用的时候调用一下uc_xxx的方法就行了。
Tags: discuz, comsenz, ucenter, uc_client
PHP | 评论:0
| 阅读:20624
Submitted by gouki on 2009, August 12, 12:12 PM
虽然有想过用PHP来实现datagrid,但由于php是解释性语言,而且对于数据库没有很好的长连接功能(或者说连接池吧),因此要实现datagrid的意义就不是特别大了。
但datagrid并非没有用处,如果用在网站的后台就可以简化很多操作了。或许有人会说ext不是更漂亮吗?但,这需要对JS了解的很多方可实现。为了实现一个datagrid,再去学EXT,成本有点高,因此,这个PHP的class就可以尝试试用了。
不过,我自己一般不太会用这个东西(但并不反对在项目后台使用它),如果是我自己个人开发的话,或许会采用PHP代码+jQuery的table插件吧?
原文如下,或许可以做个参考:
最近想做一个通过PHP实现DataGrid功能的东西,这样可以直接修改数据库中表的内容,而不用开发【新增数据页面】,【编辑页面】,于是乎在网上找 了找,类似的东西也有几个,开源的、付费的都有,不过基本都是基于MySQL。由于需要连接Oracle所以从二次开发和页面样式来说个人觉得 phpMyDataGrid还是比较好上手。本篇首先介绍基于MySQL的使用方法,再简单介绍对于Oracle连接(基于sqlrelay)的二次开 发。
1. 创建测试数据库和表
SQL代码
- create database `guru`;
-
- USE `guru`;
-
- CREATE TABLE `employees` (
- `id` int(6) NOT NULL auto_increment,
- `name` char(20) default NULL,
- `lastname` char(20) default NULL,
- `salary` float default NULL,
- `age` int(2) default NULL,
- `afiliation` date default NULL,
- `status` int(1) default NULL,
- `active` tinyint(1) default NULL,
- `workeddays` int(2) default NULL,
- `photo` char(30) default NULL,
- PRIMARY KEY (`id`)
- )
-
- insert into `employees`
- (`id`,`name`,`lastname`,`salary`,`age`,`afiliation`,`status`,`active`,`workeddays`,`photo`)
- values (1, 'Ana', 'Trujillo',2000,45, '2005-05-13',1,1,10, '1.jpg');
- insert into `employees`
- (`id`,`name`,`lastname`,`salary`,`age`,`afiliation`,`status`,`active`,`workeddays`,`photo`)
- values (2, 'Jennifer', 'Aniston',3500,23, '2004-10-22',1,0,0, '2.jpg');
- insert into `employees`
- (`id`,`name`,`lastname`,`salary`,`age`,`afiliation`,`status`,`active`,`workeddays`,`photo`)
- values (3, 'Michael', 'Norman',1200,19, '2007-01-10',1,1,5, '3.jpg');
- insert into `employees`
- (`id`,`name`,`lastname`,`salary`,`age`,`afiliation`,`status`,`active`,`workeddays`,`photo`)
- values (4, 'Vanessa', 'Black',6500,31, '2000-11-05',1,1,30, '4.jpg');
- insert into `employees`
- (`id`,`name`,`lastname`,`salary`,`age`,`afiliation`,`status`,`active`,`workeddays`,`photo`)
- values (5, 'Michael', 'Strauss',3200,45, '2006-10-21',2,0,22, '5.jpg');
- insert into `employees`
- (`id`,`name`,`lastname`,`salary`,`age`,`afiliation`,`status`,`active`,`workeddays`,`photo`)
- values (6, 'William', 'Brown',2300,21, '2001-03-10',3,1,10, '6.jpg');
- insert into `employees`
- (`id`,`name`,`lastname`,`salary`,`age`,`afiliation`,`status`,`active`,`workeddays`,`photo`)
- values (7, 'Lucca', 'Normany',2800,36, '2006-10-02',3,1,20, '7.jpg');
2. PHP程序介绍
phpMyDataGrid主要是通过phpmydatagrid.class.php,dgscripts.js来实现的,总共加起来不到100kB, 又是一个小巧的软件。对于这两个文件就不多讲了,感兴趣的同学可以“打包带走”回去慢慢品。主要介绍该软件的使用方法,即实例 datagrid_for_mysql.php。先看一下页面示意图:
测试代码:
PHP代码
- <?php
- include ("phpmydatagrid.class.php");
- $objGrid = new datagrid;
-
- $objGrid->closeTags(true);
- $objGrid->friendlyHTML();
- $objGrid->methodForm("get");
-
- $objGrid->conectadb("127.0.0.1", "root", "root", "guru");
-
- $objGrid->salt("Myc0defor5tr0ng3r-Pro3EctiOn");
- $objGrid->language("en");
-
- $objGrid->buttons(true,true,true,true);
-
- $objGrid->form('employee', true);
-
- $objGrid->searchby("name,lastname");
-
- $objGrid->tabla("employees");
-
- $objGrid->keyfield("id");
-
- $objGrid->datarows(20);
-
- $objGrid->orderby("name", "ASC");
-
- $objGrid->FormatColumn("id", "ID Employee", 5, 5, 1, "50", "center", "integer");
- $objGrid->FormatColumn("name", "Name", 30, 30, 0, "150", "left");
- $objGrid->FormatColumn("lastname", "Last name", 30, 30, 0, "150", "left");
- $objGrid->FormatColumn("age", "Age", 5, 5, 0, "50", "right");
-
- $objGrid->FormatColumn("afiliation", "Afiliation Date", 10, 10, 0, "100", "center", "date:dmy:/");
-
- $objGrid->FormatColumn("status", "Status", 5, 5, 0, "60", "left", "select:1_Single:2_Married:3_Divorced");
-
- $objGrid->FormatColumn("active", "Active", 2, 2, 0,"50", "center", "check:No:Yes");
-
- $objGrid->FormatColumn("salary", "Salary", 10, 10, 0, "90", "right", "money:€");
-
- $objGrid->FormatColumn("workeddays", "Work days", 5, 2, 0, "50", "right", "chart:percent:val:31");
- $objGrid->checkable();
- $objGrid->setHeader();
- $objGrid->ajax('silent');
- echo '<html>
- <head><title>PHPDataGrid</title></head>
- <body><div align="center"><br />';
-
- $objGrid->grid();
- echo '</div></body></html>';
-
- $objGrid->desconectar();
- ?>
3. 基于Oracle简介
对于Oracle的读取主要是把phpmydatagrid.class.php中与MySQL连接的函数修改为Oracle,本篇是通过sqlrelay(可参考http://sqlrelay.sourceforge.net/)进行的Oracle连接,当然也可以使用PHP自带的OCI8模块(效率有些低),修改后另存为phporadatagrid.class.php即可在其他程序(datagrid_for_oracle.php)中调用。以上涉及的所有程序均可在压缩包中找到。
希望对大家有用!
4. 源程序下载
点击下载(原来的是iframe,用IE打开后就会自动下载,所以改作链接了,该链接不是我上传的,请下载后解压前主动测试。谢谢合作)
作者: Gnie
出处: {GnieTech} (http://www.cnblogs.com/gnielee/)
PHP | 评论:0
| 阅读:16714
Submitted by gouki on 2009, August 11, 9:15 PM
不知道大家是否还记得08年的5月12日,那一天,所有的网页都是灰色的,纪念那逝去的生命。
对于网页开发者来说,为了让用户看到灰色的页面,大多数人都采取了直接修改CSS的方式,使得image的alpha通道为gray,然而,这个方法是不支持FF的。N多办法都不支持。
这是一个JS的特效。它有N多处理图片的方法,可以按需加载,网址是:http://www.nihilogic.dk/labs/imagefx/,可以看到一些效果。
根据网上提供的JS,下载下来后,直接src一下就能用了。然而在测试的时候只有IE有效,firefox下是无效的。打开firebug,发现在执行后报错:
开始的时候一直没有细看,发现上面写的是"code:"也没有什么代码。就利用firebug的watch功能监视。然而死活找不到问题。
代码与网络上是一模一样,问题在哪里呢?
再仔细看出错代码,发现,前两个单词居然是:Security error,难道是安全问题?FF对本地代码的执行进行了限制?
立马把代码拷到虚拟机下运行,果然一切正常。
唉。。。
原来我为了这样一个问题折腾了将近一周。不仔细看出错信息导致的呀。。
顺便贴一个开心网的BUG图片:
Javascript | 评论:0
| 阅读:16498
Submitted by gouki on 2009, August 11, 4:36 PM
一直都是关注着用PHP调用其他的soap方式的web service。偶尔看到一篇用php做web service的。有点感觉新鲜,备个案。哈哈
仅做了解。对于php做webservice,我还不知道性能如何呢。现在andot等人又在推出所谓性能超过phprpc的hprose,也不知道何时能够出来。。。
既然是用PHP做webservice,那么在看过phprpc之后,其实应该感觉用phprpc发布这些东西会更方便吧?不知道为什么不用phprpc或者hprose。。。。
纯记录,作者来自博客园的三聪,地址为:http://www.cnblogs.com/gateluck/archive/2009/08/10/php_web_service.html
原文如下:
最近一个项目由"WinForm直接访问DB2"移植到"WinForm通过PHP Web Service来访问DB2”。
(优点是php可以架在Linux上,而Linux是免费的)
这个命题的难点不是访问DB2,而是.NET调用PHP的Web Service。对于我这个长期作.NET,之前一直以为只有.NET才可以做Web Service……的人来说,真是有点强“聪”所难了。
但是问题还是要解决的,期限就摆在眼前呢。经过一番调查,终于有了眉目,现在分享给大家。
首先要说明的,PHP服务器需要至少需要两个文件——一个WSDL文件和一个PHP文件。WSDL文件是一种机读的XML文件,用于描述WebService提供的服务和调用方法(对于.NET则可以自动生成调用代码,十分好用),php文件就是真正实现的WEB服务了。
1)PHP服务器端代码
1-1)TestWebService.php代码
[代码]
1-2)TestWebService.wsdl代码
[代码]
WSDL的代码比较长,当方法很多时,手敲代码是不太可能的。有一个巧的办法,就是也用.NET实现一个不含真正方法体的Web Serivce,然后通过
http://***/TestWebService.asmx?wsdl的方法生成wsdl代码文件。
关于WSDL文件,我要说明特别说明两点:
(1)soap:address结点是声明WebService的地址,在部署时要改成相应地址;
(2)一维数组的声明类型为ArrayOfType,字符串数组为ArrayOfString。如果Type不是简单类型,则Type需要另外声明。
2).NET客户端代码
先要添加Web引用,地址为WSDL文件的Http地址。
调用代码(C#)
[代码]
总结: (一)PHP是一种弱类型语言,检查错误比较困难。array类型也与一般理解的数组不同,它也有类似Hashtable的用法。
(二)PHP Web Service方法的传入参数、返回值都至多有一个,因为真正调用时的参数和返回值,都是包装到一个对象中传送的。
(三)PHP Web Service也支持自定义类型和自定义类型数组等复杂类型,但不支持多组数组。
(四)若返回值需要是多张二维表时,我浅薄的以为,可以传化一组字符串数组传送,格式为
[表1行数],[表1列数],[表1列名1],[表1列名2],……[表1列名N],[表1中按行列存放的值]
[表2行数],[表2列数],[表2列名1],[表2列名2],……[表2列名N],[表2中按行列存放的值]
……
[表M行数],[表M列数],[表M列名1],[表M列名2],……[表M列名N],[表2中按行列存放的值]
按顺序将上面[]中的内容串成字符串数组,效率还不错,我测试10000行240列的数据,我有现成编解代码,有兴趣的可以向我索取.
PHP | 评论:0
| 阅读:17795