linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > php >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·PHP生成静态页面的一些经验
·PHP无限分类与树型论坛的实现方
·php5学习笔记
·入门级PHP程序员面试题
·PHP 和 MySQL初学入门
·PHP入门速成
·vim的代码折叠
·文件下载统计php编程代码
·如何建立自己的新闻发布系统
·织梦CMS中文转换拼音函数研究
·Windows下Apache+Tomcat+MySQL
·PHP初学者头疼问题总结
·Cookie及其使用详细介绍
·生成sessionid和随机密码的例子
·使用无限生命期Session的方法
最新文章
·PHP入门速成
·用php实现广告轮播
·Zend Optimizer 问题浅析
·功能强大的CGI语言----PHP3
·用Session对Web页面进行保护
·PHP--进行模块化设计
·如何将PHP的结果输出到非PHP页
·如何开发一个虚拟域名系统
·PHP4调用自己编写的COM组件
·简单的页面缓冲技术(三)
·简单的页面缓冲技术(二)
·简单的页面缓冲技术(一)
·用Socket发送电子邮件(二)
·用Socket发送电子邮件(一)
·PHP/MySQL 购物车
Google
 
php作wap开发时遇到的问题
[ 作者:  加入时间:2007-11-22 14:38:12  来自:Linux联盟收集整理 ]
1.文件格式 JTMLinux联盟
  首先要遇到的问题肯定是文件格式,在作web开发时,大家都是用的html或xhtml,到了wap开发时,就得用wml了.什么是wml?大家可以去查更详细的资料,我这里只是略微的提到.在我看来wml类似于xml,有非常严格的格式,在作wap页面时,都得用wml来作为显示. JTMLinux联盟
   JTMLinux联盟
  wml的语法非常简单,在用php作动态输出时,一定要发送一个头信息,标明本页面是wml,而不是别的什么*ml. JTMLinux联盟
   JTMLinux联盟
  header("Content-type: text/vnd.wap.wml; charset=\"gb2312\""); JTMLinux联盟
  ?> JTMLinux联盟
   JTMLinux联盟
  这里用的字符集是gb2312,在移动的平台上是没有任何问题的,但在联通的平台上就不行了,一定得用utf-8,为了更通用,还是用utf-8更安全.即 JTMLinux联盟
   JTMLinux联盟
  header("Content-type: text/vnd.wap.wml; charset=\"utf-8\""); JTMLinux联盟
  ?> JTMLinux联盟
   JTMLinux联盟
  2.编码 JTMLinux联盟
   JTMLinux联盟
  上面说了字符集都应采用utf-8,这是一种容纳了多国语言的字符集,一个汉字是占双字节,utf-8占了4个字节,因此其容纳的信息量更大.在手机上编写的汉字,在将页面内码转成utf-8后,以后再打开就可能是一堆乱码.因此大家在作注释时,尽可能的用英文注释,省得以后看不懂.像editplus,ultraedit等工具都可以转文件内码. JTMLinux联盟
   JTMLinux联盟
  3.适配 JTMLinux联盟
   JTMLinux联盟
  世界各大手机厂商真是有病,开发出的手机千奇百怪,可以支持的格式也是五花八门.比如铃声,有的可以支持,16,32,48和弦,支持mid,wmv,有的不完全支持;有的支持gif,png,bmp,有的也不完全支持.这虽然是把手机的档次和成本拉开了,但却苦了作手机开发的兄弟们了.因为不可避免的要对手机所能支持的图片,铃声等多媒体信息作出一个匹配,这个匹配的处理,我们一般叫做手机适配. JTMLinux联盟
  要作手机适配,我们一般得有如下资料. JTMLinux联盟
   JTMLinux联盟
  1)一份详细的手机适配资料表,里面应详细的说明手机所能支持的铃声,图片格式,还得有手机型号等信息 JTMLinux联盟
  2)要正确的获取手机的UA,什么是UA,就是(user agent),实际上就是用户的手机信息. JTMLinux联盟
   JTMLinux联盟
  有了上面的东东我们才能做出适配.以下给出一个我写的在wap开发中用到的类,可以用来取手机号,手机UA. JTMLinux联盟
   JTMLinux联盟
   /** JTMLinux联盟
  * 类名: mobile JTMLinux联盟
  * 描述: 手机信息类 JTMLinux联盟
  * 其他: 偶然 编写 JTMLinux联盟
  */ JTMLinux联盟
  class mobile JTMLinux联盟
  { JTMLinux联盟
  /** JTMLinux联盟
  * 函数名称: getPhoneNumber JTMLinux联盟
  * 函数功能: 取手机号 JTMLinux联盟
  * 输入参数: none JTMLinux联盟
  * 函数返回值: 成功返回号码,失败返回false JTMLinux联盟
  * 其它说明: 说明 JTMLinux联盟
  */ JTMLinux联盟
  function getPhoneNumber() JTMLinux联盟
  { JTMLinux联盟
  if (isset($_SERVER['HTTP_X_NETWORK_INFO'])) JTMLinux联盟
  { JTMLinux联盟
  $str1 = $_SERVER['HTTP_X_NETWORK_INFO']; JTMLinux联盟
  $getstr1 = preg_replace('/(.*,)(11[d])(,.*)/i','',$str1); JTMLinux联盟
  Return $getstr1; JTMLinux联盟
  } JTMLinux联盟
  elseif (isset($_SERVER['HTTP_X_UP_CALLING_LINE_ID'])) JTMLinux联盟
  { JTMLinux联盟
  $getstr2 = $_SERVER['HTTP_X_UP_CALLING_LINE_ID']; JTMLinux联盟
  Return $getstr2; JTMLinux联盟
  } JTMLinux联盟
  elseif (isset($_SERVER['HTTP_X_UP_SUBNO'])) JTMLinux联盟
  { JTMLinux联盟
  $str3 = $_SERVER['HTTP_X_UP_SUBNO']; JTMLinux联盟
  $getstr3 = preg_replace('/(.*)(11[d])(.*)/i','',$str3); JTMLinux联盟
  Return $getstr3; JTMLinux联盟
  } JTMLinux联盟
  elseif (isset($_SERVER['DEVICEID'])) JTMLinux联盟
  { JTMLinux联盟
  Return $_SERVER['DEVICEID']; JTMLinux联盟
  } JTMLinux联盟
  else JTMLinux联盟
  { JTMLinux联盟
  Return false; JTMLinux联盟
  } JTMLinux联盟
  } JTMLinux联盟
   JTMLinux联盟
  /** JTMLinux联盟
  * 函数名称: getHttpHeader JTMLinux联盟
  * 函数功能: 取头信息 JTMLinux联盟
  * 输入参数: none JTMLinux联盟
  * 函数返回值: 成功返回号码,失败返回false JTMLinux联盟
  * 其它说明: 说明 JTMLinux联盟
  */ JTMLinux联盟
  function getHttpHeader() JTMLinux联盟
  { JTMLinux联盟
  $str = ''; JTMLinux联盟
  foreach ($_SERVER as $key=>$val) JTMLinux联盟
  { JTMLinux联盟
  $gstr = str_replace("&","&",$val); JTMLinux联盟
  $str.= "$key -> ".$gstr."\r\n"; JTMLinux联盟
  } JTMLinux联盟
  Return $str; JTMLinux联盟
  } JTMLinux联盟
   JTMLinux联盟
  /** JTMLinux联盟
  * 函数名称: getUA JTMLinux联盟
  * 函数功能: 取UA JTMLinux联盟
  * 输入参数: none JTMLinux联盟
  * 函数返回值: 成功返回号码,失败返回false JTMLinux联盟
  * 其它说明: 说明 JTMLinux联盟
  */ JTMLinux联盟
  function getUA() JTMLinux联盟
  { JTMLinux联盟
  if (isset($_SERVER['HTTP_USER_AGENT'])) JTMLinux联盟
  { JTMLinux联盟
  Return $_SERVER['HTTP_USER_AGENT']; JTMLinux联盟
  } JTMLinux联盟
  else JTMLinux联盟
  { JTMLinux联盟
  Return false; JTMLinux联盟
  } JTMLinux联盟
  } JTMLinux联盟
   JTMLinux联盟
  /** JTMLinux联盟
  * 函数名称: getPhoneType JTMLinux联盟
  * 函数功能: 取得手机类型 JTMLinux联盟
  * 输入参数: none JTMLinux联盟
  * 函数返回值: 成功返回string,失败返回false JTMLinux联盟
  * 其它说明: 说明 JTMLinux联盟
  */ JTMLinux联盟
  function getPhoneType() JTMLinux联盟
  { JTMLinux联盟
  $ua = $this->getUA(); JTMLinux联盟
  if($ua!=false) JTMLinux联盟
  { JTMLinux联盟
  $str = explode(' ',$ua); JTMLinux联盟
  Return $str[0]; JTMLinux联盟
  } JTMLinux联盟
  else JTMLinux联盟
  { JTMLinux联盟
  Return false; JTMLinux联盟
  } JTMLinux联盟
  } JTMLinux联盟
   JTMLinux联盟
  /** JTMLinux联盟
  * 函数名称: isOpera JTMLinux联盟
  * 函数功能: 判断是否是opera JTMLinux联盟
  * 输入参数: none JTMLinux联盟
  * 函数返回值: 成功返回string,失败返回false JTMLinux联盟
  * 其它说明: 说明 JTMLinux联盟
  */ JTMLinux联盟
  function isOpera() JTMLinux联盟
  { JTMLinux联盟
  $uainfo = $this->getUA(); JTMLinux联盟
  if (preg_match('/.*Opera.*/i',$uainfo)) JTMLinux联盟
  { JTMLinux联盟
  Return true; JTMLinux联盟
  } JTMLinux联盟
  else JTMLinux联盟
  { JTMLinux联盟
  Return false; JTMLinux联盟
  } JTMLinux联盟
  } JTMLinux联盟
   JTMLinux联盟
  /** JTMLinux联盟
  * 函数名称: isM3gate JTMLinux联盟
  * 函数功能: 判断是否是m3gate JTMLinux联盟
  * 输入参数: none JTMLinux联盟
  * 函数返回值: 成功返回string,失败返回false JTMLinux联盟
  * 其它说明: 说明 JTMLinux联盟
  */ JTMLinux联盟
  function isM3gate() JTMLinux联盟
  { JTMLinux联盟
  $uainfo = $this->getUA(); JTMLinux联盟
  if (preg_match('/M3Gate/i',$uainfo)) JTMLinux联盟
  { JTMLinux联盟
  Return true; JTMLinux联盟
  } JTMLinux联盟
  else JTMLinux联盟
  { JTMLinux联盟
  Return false; JTMLinux联盟
  } JTMLinux联盟
  } JTMLinux联盟
   JTMLinux联盟
  /** JTMLinux联盟
  * 函数名称: getHttpAccept JTMLinux联盟
  * 函数功能: 取得HA JTMLinux联盟
  * 输入参数: none JTMLinux联盟
  * 函数返回值: 成功返回string,失败返回false JTMLinux联盟
  * 其它说明: 说明 JTMLinux联盟
  */ JTMLinux联盟
  function getHttpAccept() JTMLinux联盟
  { JTMLinux联盟
  if (isset($_SERVER['HTTP_ACCEPT'])) JTMLinux联盟
  { JTMLinux联盟
  Return $_SERVER['HTTP_ACCEPT']; JTMLinux联盟
  } JTMLinux联盟
  else JTMLinux联盟
  { JTMLinux联盟
  Return false; JTMLinux联盟
  } JTMLinux联盟
  } JTMLinux联盟
   JTMLinux联盟
  /** JTMLinux联盟
  * 函数名称: getIP JTMLinux联盟
  * 函数功能: 取得手机IP JTMLinux联盟
  * 输入参数: none JTMLinux联盟
  * 函数返回值: 成功返回string JTMLinux联盟
  * 其它说明: 说明 JTMLinux联盟
  */ JTMLinux联盟
  function getIP() JTMLinux联盟
  { JTMLinux联盟
  $ip=getenv('REMOTE_ADDR'); JTMLinux联盟
  $ip_ = getenv('HTTP_X_FORWARDED_FOR'); JTMLinux联盟
  if (($ip_ != "") && ($ip_ != "unknown")) JTMLinux联盟
  { JTMLinux联盟
  $ip=$ip_; JTMLinux联盟
  } JTMLinux联盟
  return $ip; JTMLinux联盟
  } JTMLinux联盟
  } JTMLinux联盟
  ?> JTMLinux联盟
   JTMLinux联盟
  4.页面设计 JTMLinux联盟
   JTMLinux联盟
  作wap开发时,wap页面是非常简单的.比html来说是简单到不能再简单了.在wap1.0里是没有表格之类的乱七八糟的东西的.所有的标签都是写在一个叫card的标签之内.可以用来分段.所以做页面的算是轻松了. JTMLinux联盟
   JTMLinux联盟
  5.模拟器 JTMLinux联盟
   JTMLinux联盟
  作wap开发免不了要用各式各样的模拟器来测试,比较好的有m3gate,openwave,opera,还有一个叫winwap的,大家最好别用他来作测试,他的兼容性太好了,即使页面有错误都能给忽略掉.测试时跟用浏览器测试web页面一样,输入网址就可以了.没有比这更容易的事了. JTMLinux联盟
   JTMLinux联盟
  6.注意事项 JTMLinux联盟
   JTMLinux联盟
  1)空格,特别是在定义DTD时, JTMLinux联盟
   JTMLinux联盟
   JTMLinux联盟
  echo ""; JTMLinux联盟
  ?> JTMLinux联盟
   JTMLinux联盟
   JTMLinux联盟
  里面如果哪个地方少个空格,就有你受的了.以前写的时候用了页面重排之后,把一些空格给干掉了,整整找了两天才找出错误来,大家千万别步我的后尘. JTMLinux联盟
   JTMLinux联盟
  2)标签,如果标签不成对,会提示错误,大家注意就是了,很容易修正. JTMLinux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·PHP IPwhois类  (2007-11-22 14:37:07)
 ·php+odbc+access数据库操作函数  (2007-11-22 14:36:40)
 ·用PHP与XML联手进行网站编程  (2007-11-22 14:34:59)
 ·PHP SOCKET 技术研究  (2007-11-22 14:34:33)
 ·php分别做为cgi和module来运行的配置  (2007-11-22 14:32:59)
 ·php中数据的批量导入(csv文件)  (2007-11-22 14:32:26)
 ·BS结构中使用PHP访问ORACLE LOB  (2007-11-22 14:31:59)
 ·PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)  (2007-11-22 14:24:00)
 ·用PHP生成PDF文件 with FPDF  (2007-11-22 14:23:31)
 ·在同一窗体中使用PHP来处理多个提交任务  (2007-11-22 14:22:40)