IIS7运行php,增加rewrite支持

第一步:

下载rewrite_2.0_rtw_x64.msi,在IIS7的服务器上安装,安装后,重启IIS,这时再打开IIS,会发现多了一个新的模块:URL Rewrite

第二步:

在php网站根目录下新建web.config文件,如果已存在,则编辑该文件,内容如下:

<?xml version=”1.0″ encoding=”UTF-8″?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name=”UrlRewriteRule1″ enabled=”true” stopProcessing=”true”>
<match url=”.*” />
<conditions logicalGrouping=”MatchAll”>
<add input=”{REQUEST_FILENAME}” matchType=”IsFile” negate=”true” />
<add input=”{REQUEST_FILENAME}” matchType=”IsDirectory” negate=”true” />
</conditions>
<action type=”Rewrite” url=”url.php?url={R:0}” />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

在iis下添加php支持并启用rewrite后的问题

最近想把php网站从Linux服务器搬到Windows服务器下,因为Windows服务器已安装IIS,80端口被占用,无法安装Apache,所以只能往IIS添加php支持。

系统是Windows Server 2003,IIS为6.0,添加php支持百度一下一大堆,按照教程来,没问题,唯一要注意的是文件夹的权限问题。

因为这个php网站要使用apache的rewrite功能,IIS没有这个功能,搜索了下,发现有个ISAPI_Rewrite的插件,支持Apache的.htaccess文件,语法基本一致,所以就是它了。

下载安装,没什么问题,但是使用的时候,发现总取不到正确的值,经测试发现,url上被自动添加了/eurl.axd/GUID这样的字符串,导致了正则匹配出错了。这个是ASP.NET 4.0添加的,网上的解释是:

ASP.NET 4.0在安装的时候,会在IIS6注册一个ISAPI Filter,叫做”aspnet_filter.dll”,ISAPI Filter会先于ISAPI处理程序前执行,它会在所有的的无后缀的URL后面加一串字符“/eurl.axd/GUID”, 同时ASP.NET 4.0还会在IIS默认添加一个请求映射规则“*.axd”,映射到aspnet_isapi.dll。此时,所有的无后缀URL加上“/eurl.axd/GUID”后都会变成带.axd后缀,这样就匹配*.axd的映射规则进行ASP.NET的处理通道。在进入ASP.NET通道后,ASP.NET处理程序会删除掉“/eurl.axd/GUID”,让它还原到无后缀的原始情况,并且不会对后续的请求处理带来任何影响。此时,所有的无后缀请求,就进入了ASP.NET的处理通道中。

解决办法也很简单,打开iis管理器,在网站上右击→属性→ISAPI筛选器,删除 ASP.NET_4.0.30319.0 这条记录,然后在你的ASP.NET 4.0网站上,右击→属性→ISAPI筛选器,添加一条记录,名称为ASP.NET_4.0.30319.0,路径为 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll,点确定保存后,就可以了。

【转载】说说JSON和JSONP,跨域请求原理

 前言:

由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现。

当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socket通讯和本地数据库功能,又或者通过HTML5的WebSocket也可以实现与服务器的通讯和服务端推功能,但这两种方式都有其局限性,前者需要PhoneGap支持,后者要求用户设备必须支持WebSocket,因此都不能算是ST2的原生解决方案,原生的只有AJAX。

说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决?这两个问题目前都有不同的解决方案,比如数据可以用自定义字符串或者用XML来描述,跨域可以通过服务器端代理来解决。

但到目前为止最被推崇或者说首选的方案还是用JSON来传数据,靠JSONP来跨域。而这就是本文将要讲述的内容。

JSON和JSONP虽然只有一个字母的差别,但其实他们根本不是一回事儿:JSON是一种数据交换格式,而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议。我们拿最近比较火的谍战片来打个比方,JSON是地下党们用来书写和交换情报的“暗号”,而JSONP则是把用暗号书写的情报传递给自己同志时使用的接头方式。看到没?一个是描述信息的格式,一个是信息传递双方约定的方法。

既然随便聊聊,那我们就不再采用教条的方式来讲述,而是把关注重心放在帮助开发人员理解是否应当选择使用以及如何使用上。

继续阅读

尝试用PhoneGap来做Android应用,未来照浏览器

试了下,发现好麻烦,div+css又不是很懂,很多地方还是得自己写java代码来实现,多平台还是得改来改去。。。

如果你懂网页前台开发,后台不怎么懂,用这个开发倒是蛮适合的。。。

做了个未来照浏览器的新版,功能没旧版多,就比旧版好看了点。。。

有些界面问题,没时间去解决了,比如打开软键盘,页面会变形。。。

 

下载地址:http://dudibo.com/QIq

 

界面:

图标

图标

 

启动界面

启动界面

 

主界面

主界面

 

主界面

主界面

 

打开网页

打开网页

Vista及以上系统UAC权限问题

今天在Win8上测试了下我发布的程序,发现装在系统盘,读写一些文件会失败,一定要右键获取管理员权限才能使用。看来明天得升级所有的程序,在代码里请求管理员权限,这样就没问题了。如果你开启了UAC,那么会弹出对话框要求管理员权限;如果你关闭了UAC,那么就不会有提示,程序能直接获取到管理员权限。看来测试的还不够,最近发现了好几个问题了。。。大家多多测试吧,欢迎提意见!!!

C#在Vista及以上系统,申请管理员权限的方法

VS2010上的添加方法为,在可执行项目上右击,选择添加->新建项,然后选择应用程序清单文件,添加一个app.manifest文件,然后把 <requestedExecutionLevel  level=”asInvoker” uiAccess=”false” /> 这一行修改为 <requestedExecutionLevel  level=”requireAdministrator” uiAccess=”false” /> ,重新生成后,在Vista已以上系统运行时会弹出UAC对话框,请求管理员权限。

Android桌面widgets和AppWidget框架(译)

【Android开发者】aimself

本文翻译自Android Developers Blog:Introducing home screen widgets and the AppWidget framework

Android 1.5 SDK一个令人兴奋的新特性是AppWidget framework,这个框架允许开发者开发widgets,这些widgets可以被用户拖到用户的桌面并且可以交互。widgets可以提供一个full-featured apps的预览,例如可以显示即将到来的日历事件,或者一首后台播放的歌曲的详细信息。

当widgets被拖到桌面上,他们被指定一个保留的空间来显示应用提供的自定义内容。用户可以通过这个widget来和你的应用交互,例如暂停或切换歌曲。如果你有一个后台服务,你可以按照你自己的schedule更新你的widget,或者使用AppWidget framework提供的一个自动的更新机制。

在更高层次上,每个widget就是一个BroadcastReceiver,他们用XML metadata来描述widget的细节。AppWidget framework通过broadcast intents和你的widget通信,例如当需要更新的时候。Widget更新使用RemoteViews被构建和发送。这个RemoteViews被包装成一个layout和特定内容来显示到桌面上。 继续阅读

Symbian S60平台JAVA开发环境搭建步骤

花了很长时间,终于成功安装了诺基亚S60的JAVA开发环境,网上介绍的方法不多,有些还有问题,于是就想把过程写出来了,大家可以参考一下。 

1、软件准备

1.1 JDK或者JRE下载

为了运行Eclipse必须安装JRE(当然JDK也可以),这个可以到http://www.oracle.com/technetwork/java/javase/downloads/index.html下载。  

1.2 nS60_jme_sdk_3rd_e_FP1

  

nS60_jme_sdk_3rd_e_FP1是诺基亚官方提供的开发包,正式名称为S60 Platform SDKs for Symbian OS, for Java™,里面包含了模拟器和类库,下载地址是:http://www.forum.nokia.com/info/sw.nokia.com/id/6e772b17-604b-4081-999c-31f1f0dc2dbb/S60_Platform_SDKs_for_Symbian_OS_for_Java.html ,选择“3rd Edition,FP 1(240MB)”下载。下载时会提示登录然后才能下载,如果没有账号,可以注册一个,不过中文注册页面似乎有问题,注册时会提示“地区名无效”,去英文注册页面就可以了,地址为:https://www.forum.nokia.com/Profile/Join.xhtml?locale=en。下载后点击安装包中的setup.exe进行安装。  

1.3 Eclipse下载

   继续阅读

XML啊,总算把你解决了,累啊。。。

国庆前那个Android读取xml的程序终于搞定了,先前读取出来对象的值都是一样的,今天终于发现是对象放入ArrayList后放第二个对象的时候没有新建对象,而是使用了第一次建的那个对象,导致了放进去的所有对象的值都和最后放进去的那个值一样。估计ArrayList放进去的是指向那个对象的类似指针的东西,对象被修改后,在ArrayList里也相当于被修改了。看来这些细节方面的不注意就会导致很多问题啊。
前面那个程序,读取放在网上的xml很正常,但是在我自己电脑上搭建的web服务器上的xml时却怎么也读取不出来,而且xml文件还常常在浏览器上解析出错,DOM生成xml有点复杂,所以用php的echo直接生成xml,不知是编码问题还是别的问题,浏览器一直提示有问题,最后把php文件编码改回了ANSI,又用 iconv(‘gb2312′,’utf-8’,$xml); 处理,放在服务器上后,Android终于读取出了。。。过程之艰辛啊。。。有问题只能去问百度,旁边也没人能问的,有时真的很痛苦啊。。。
既然解决了这个问题,我打算做个游戏,很简单的一个游戏,猜数字,然后加个网络排名,玩家可以把自己的成绩上传到网上,应该还不错的吧,估计过程会很艰辛,又会出现各种各样的问题。。。祝我好运吧。。。