2012年9月19日星期三

jQuery load() 方法在 IE7、IE8的Bug

    今天在做项目的时候,发现在HTML页面中用jQuery的load()方法去加载一个PHP文件的时候在IE7、IE8下无法正常显示,但在Chrome、Firefox和IE9都没有问题。

load()的链接
load()的url
load() 成功的正常显示
load()后正常的显示
IE7、IE8 load() 后无法正常显示

     后来发现原来是因为load() 的内容最前面有多余的空格,去掉就可以了。

load() 的内容
load() 后的内容
    PS:我用的jQuery版本是1.7.2的。

2012年9月13日星期四

浏览器下载文件,PHP服务器端的处理

   在做Web开发时,用户下载附件是经常遇到的一种情况。在HTML页面中,我们只要给个链接就可以了,但在服务器端要做怎样的处理呢?


   以下的代码是用PHP语言写的,当用户用浏览器下载文件时,服务端所要做的处理。不管用Java还是.Net,基本原理是一样的,涉及的都是关于Http协议。


$file_path = ROOT_PATH . '/uploads/accessories/'. $_GET ['name'];//文件的物理路径。一般来说,我们都是把文件(Excel、Word)直接存在硬盘上,而不是数据库

header ( 'Content-Disposition: attachment; filename=' . urlencode ( $_GET ['filename'] ) );//如果文件名是中文的,
urlencode 之后在IE不会出现中文乱码

header ( 'Content-type: application/octet-stream' );

header ( 'Content-Length: ' . filesize ( $file_path ) );//文件的大小

readfile ( $file_path );



exit ();





PS:简单补充一下HTTP协议的简单介绍:
http://www.cnblogs.com/skynet/archive/2010/12/11/1903347.html

2012年9月9日星期日

PHP MemCached高级缓存配置

1、什么是MemCached?

    memcache是一个高性能的分布式的内存对象缓存系统,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。使用Memcache的网站一般流量都是比较大的,为了缓解数据库的压力,让Memcache作为一个缓存区域,把部分信息保存在内存中,在前端能够迅速的进行存取。

memcache图示说明


2、Memcache在Windows平台的安装

   (1)下载 memcached 1.2.4

   (2)解压到自定义目录。如(D:\memcached)

   (3)打开DOS,输入以下命令
 
          D:\memcached\memcached.exe -d install

    (4) 再输入


          D:\memcached\memcached.exe -d start


       启动。以后memcached将作为Windows的一个服务每次开机时自动启动。

    (5) D:\memcached\memcached.exe -h    显示帮助,得到各种命令的用法

3、Memcache Win32 的安装和PHP中的配置


(1)下载:php_memcache.dll 组件 (WAMP自带了,由于 php_memcache 是第三方的扩展,所以原始PHP是没有自带的,可以到官方网站下载)

(2)复制 php_memcache.dll 到指定的组件目录,默认在 php\ext\

(3)在PHP.ini 加入一句话:extension=php_memcache.dll

(4)重启WEB服务,使用 phpinfo() 函数查看启用情况

4、用PHP连接Memcache

$mem = new Memcache;//初始化一个实例
$mem->connect('127.0.0.1', 11211) or die ("连接失败");//连接服务器地址和默认端口
$version = $mem->getVersion();//获得版本信息
echo $version;

一键安装PHP开发环境

    对于刚学习PHP的菜鸟来说,配置开发环境是一件挺纠结的事。

    今天就来介绍一款在Windows平台下集成了Apache、Mysql、PHP和phpmyadmin的集成开发环境——WampServer,它简单易用、界面友好,操作起来非常方便。你只要到官方网站下载就行了,然后双击安装。

      不仅如此,它还集成了 Xdebug,极大的方便了开发者的调试和跟踪。

      如果你想自己一步一步地安装开发环境,也是有益处的。提供一些安装的参考资源:

      下载 PHP: http://www.php.net/downloads.php
      下载 MySQL 数据库: http://www.mysql.com/downloads/
      下载 Apache Server: http://httpd.apache.org/download.cgi

      安装教程: http://www.blabla.cn/php/install_apache_php_index.html.html 
    
下一篇:Apache下建立虚拟站点

2012年9月6日星期四

jQuery框架EasyUI

    EasyUI 是一个富客户端的JS框架,封装了很多Web开发经常要用到的组件,有点类似于ExtJS。它们的差异在于EasyUI的各个组件是分离的,类似于jQuery UI;而 ExtJS 的所有组件都封装在一个 JS 文件中。

    EasyUI 与 jQuery UI 的共同点是有详细的API和demo,看它们提供的例子就能快速掌握其用法,学习曲线低;差别在于EasyUI提供的插件比较丰富。

    它比较适用于做一些系统的界面或者网站的后台。

    还有一点,它是通过 GPL 发布的,这意味着你可以用于商业目的并改进次程序。

    目前版本是 1.3 。

    下面是EasyUI官方提供的例子 http://www.jeasyui.com/demo/index.php。

2012年9月5日星期三

多条件查询用到的SQL

    在做Web开发的时候,经常会遇到这样的情形。那就是多条件查询。对很多PHP初学者都感到很棘手。

    举个简单例子来说,我们有个user的用户表。用户可以在界面上输入姓名、性别、年龄来搜索用户信息。

id name sex age
1 小林 女 18
2 小亮 男 17

    我们在后台该怎么处理呢?


<?php
$name = $_POST['name'];
$sex = $_POST['sex'];
$age = $_POST['age'];
$sql = $name ? "SET @name = '$name'":"SET @name = NULL";
mysql_query($sql);
$sql = $sex ? "SET @sex = '$sex'":"SET @sex = NULL";
mysql_query($sql);
$sql = $age ? "SET @age = '$age'":"SET @age = NULL";
$sql = "SELECT * FROM user WHERE `name`=(CASE WHEN @name IS NULL THEN name ELSE @name END) 
AND `sex`=(CASE WHEN @sex IS NULL THEN sex ELSE @sex END) AND 
`age`=(CASE WHEN @age IS NULL THEN age ELSE @age END)";
$result = mysql_query($sql);
while($item = mysql_fetch_array($result)) {
//……
}
?>  

   是不是很简单呢?SQL的case语句是处理多查询的极好方法。

2012年9月4日星期二

Joomla集成QQ、新浪第三方登录

   首先,你必须做一些准备工作,了解一下关于第三方登录的原理。这里有一篇不错的文章 http://www.cnblogs.com/highend/archive/2012/07/06/oautn2_authorization_code.html




 
   接下来,我们来讲述一下,Joomla的登录机制是怎么样的。打开 Joomla\components\com_users\controllers\user.php 的文件,可以看到是通过 login() 这个方法来完成登录过程,它把实现的细节封装起来了。

    事实上,Joomla登录的实现是通过插件来完成的,即 login() 方法调用了登录的插件。登录到Joomla的后台我们发现我们可以有3种登录的认证方式。没错,如果你启用了   Authentication - GMail 插件,你也可以用 GMail的帐号来登录你的网站。所以想要集成QQ、新浪的登录,只要以插件的形式来实现就可以了,但是实现形式稍微复杂些。


     你可以点击这里下载源代码,根据里面的配置就可以运行了。