专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »PHP教程 » phpwap开发教程:PHP作WAP开发时遇到的问题 »正文

phpwap开发教程:PHP作WAP开发时遇到的问题

来源: 发布时间:星期一, 2009年1月12日 浏览:7次 评论:0
  1.文件格式

  首先要遇到问题肯定是文件格式,在作web开发时,大家都是用html或xhtml,到了wap开发时,就得用wml了.什么是wml?大家可以去查更详细资料,我这里只是略微提到.在我看来wml类似于xml,有非常严格格式,在作wap页面时,都得用wml来作为显示.

  wml语法非常简单,在用php作动态输出时,定要发送个头信息,标明本页面是wml,而不是别什么*ml.

header("Content-type: text/vnd.wap.wml; char="gb2312"");
?>


  这里用集是gb2312,在移动平台上是没有任何问题,但在联通平台上就不行了,定得用utf-8,为了更通用,还是用utf-8更安全.即

header("Content-type: text/vnd.wap.wml; char="utf-8"");
?>


  2.编码

  上面说了集都应采用utf-8,这是种容纳了多国语言集,个汉字是占双字节,utf-8占了4个字节,因此其容纳信息量更大.在手机上编写汉字,在将页面内码转成utf-8后,以后再打开就可能是堆乱码.因此大家在作注释时,尽可能用英文注释,省得以后看不懂.像 editplus,ultraedit等工具都可以转文件内码.

  3.适配

  世界各大手机厂商真是有病,开发出手机千奇百怪,可以支持格式也是 5花 8门.比如铃声,有可以支持,16,32,48和弦,支持mid, wmv,有不完全支持;有支持g,png,bmp,有也不完全支持.这虽然是把手机档次和成本拉开了,但却苦了作手机开发兄弟们了.不可避免要对手机所能支持图片,铃声等多媒体信息作出个匹配,这个匹配处理,我们般叫做手机适配.

  要作手机适配,我们般得有如下资料.

  1)份详细手机适配资料表,里面应详细介绍说明手机所能支持铃声,图片格式,还得有手机型号等信息

  2)要正确获取手机UA,什么是UA,就是(user agent),实际上就是用户手机信息.

  有了上面东东我们才能做出适配.以下给出个我写在wap开发中用到类,可以用来取手机号,手机UA.

/**
* 类名: mobile
* 描述: 手机信息类
* 其他: 偶然 编写
*/
mobile
{
/**
* 名称: getPhoneNumber
* 功能: 取手机号
* 输入参数: none
* 返回值: 成功返回号码失败返回false
* 其它介绍说明: 介绍说明
*/
function getPhoneNumber
{
(is($_SERVER['HTTP_X_NETWORK_INFO']))
{
$str1 = $_SERVER['HTTP_X_NETWORK_INFO'];
$getstr1 = preg_replace('/(.*,)(11[d])(,.*)/i','',$str1);
Return $getstr1;
}
(is($_SERVER['HTTP_X_UP_CALLING_LINE_ID']))
{
$getstr2 = $_SERVER['HTTP_X_UP_CALLING_LINE_ID'];
Return $getstr2;
}
(is($_SERVER['HTTP_X_UP_SUBNO']))
{
$str3 = $_SERVER['HTTP_X_UP_SUBNO'];
$getstr3 = preg_replace('/(.*)(11[d])(.*)/i','',$str3);
Return $getstr3;
}
(is($_SERVER['DEVICEID']))
{
Return $_SERVER['DEVICEID'];
}

{
Return false;
}
}
/**
* 名称: getHttpHeader
* 功能: 取头信息
* 输入参数: none
* 返回值: 成功返回号码失败返回false
* 其它介绍说明: 介绍说明
*/
function getHttpHeader
{
$str = '';
foreach ($_SERVER as $key=>$val)
{
$gstr = str_replace("&","&",$val);
$str.= "$key -> ".$gstr."rn";
}
Return $str;
}
/**
* 名称: getUA
* 功能: 取UA
* 输入参数: none
* 返回值: 成功返回号码失败返回false
* 其它介绍说明: 介绍说明
*/
function getUA
{
(is($_SERVER['HTTP_USER_AGENT']))
{
Return $_SERVER['HTTP_USER_AGENT'];
}

{
Return false;
}
}
/**
* 名称: getPhoneType
* 功能: 取得手机类型
* 输入参数: none
* 返回值: 成功返回失败返回false
* 其它介绍说明: 介绍说明
*/
function getPhoneType
{
$ua = $this->getUA;
($ua!=false)
{
$str = explode(' ',$ua);
Return $str[0];
}

{
Return false;
}
}
/**
* 名称: isOpera
* 功能: 判断是否是opera
* 输入参数: none
* 返回值: 成功返回失败返回false
* 其它介绍说明: 介绍说明
*/
function isOpera
{
$uainfo = $this->getUA;
(preg_match('/.*Opera.*/i',$uainfo))
{
Return true;
}

{
Return false;
}
}
/**
* 名称: isM3gate
* 功能: 判断是否是m3gate
* 输入参数: none
* 返回值: 成功返回失败返回false
* 其它介绍说明: 介绍说明
*/
function isM3gate
{
$uainfo = $this->getUA;
(preg_match('/M3Gate/i',$uainfo))
{
Return true;
}

{
Return false;
}
}
/**
* 名称: getHttpAccept
* 功能: 取得HA
* 输入参数: none
* 返回值: 成功返回失败返回false
* 其它介绍说明: 介绍说明
*/
function getHttpAccept
{
(is($_SERVER['HTTP_ACCEPT']))
{
Return $_SERVER['HTTP_ACCEPT'];
}

{
Return false;
}
}
/**
* 名称: getIP
* 功能: 取得手机IP
* 输入参数: none
* 返回值: 成功返回
* 其它介绍说明: 介绍说明
*/
function getIP
{
$ip=getenv('REMOTE_ADDR');
$ip_ = getenv('HTTP_X_FORWARDED_FOR');
(($ip_ != "") && ($ip_ != "unknown"))
{
$ip=$ip_;
}
$ip;
}
}
?>




  4.页面设计

  作wap开发时,wap页面是非常简单.比html来说是简单到不能再简单了.在wap1.0里是没有表格的类乱 7 8糟东西.所有标签都是写在个叫card标签的内.可以用来分段.所以做页面算是轻松了.

  5.模拟器

  作wap开发免不了要用各式各样模拟器来测试,比较好有m3gate,openwave,opera,还有个叫winwap,大家最好别用他来作测试,他兼容性太好了,即使页面有都能给忽略掉.测试时跟用浏览器测试web页面样,输入网址就可以了.没有比这更容易事了.

  6.注意事项

  1)空格,特别是在定义DTD时,

  echo "";

  ?>

  里面如果哪个地方少个空格,就有你受了.以前写时候用了页面重排的后,把些空格给干掉了,整整找了两天才找出来,大家千万别步我后尘.

  2)标签,如果标签不成对,会提示,大家注意就是了,很容易修正.



0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: