快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

php作wap开发时碰到的问题

 

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

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


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


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


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


2.编码

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

3.适配

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

1)一份具体的手机适配资料表,里面应具体的说明手机所能支持的铃声,图片格式,还得有手机型号等信息
2)要准确的获取手机的UA,什么是UA,就是(user agent),实际上就是用户的手机信息.

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

 /**
* 类名: mobile
* 描述: 手机信息类
* 其他: 偶尔 编写
*/
class mobile
{
/**
* 函数名称: getPhoneNumber
* 函数功能: 取手机号
* 输入参数: none
* 函数返回值: 成功返回号码,失败返回false
* 其它说明: 说明
*/
function getPhoneNumber()
{
if (isset($_SERVER[\\'HTTP_X_NETWORK_INFO\\']))
{
$str1 = $_SERVER[\\'HTTP_X_NETWORK_INFO\\'];
$getstr1 = preg_replace(\\'/(.*,)(11[d])(,.*)/i\\',\\'\\',$str1);
Return $getstr1;
}
elseif (isset($_SERVER[\\'HTTP_X_UP_CALLING_LINE_ID\\']))
{
$getstr2 = $_SERVER[\\'HTTP_X_UP_CALLING_LINE_ID\\'];
Return $getstr2;
}
elseif (isset($_SERVER[\\'HTTP_X_UP_SUBNO\\']))
{
$str3 = $_SERVER[\\'HTTP_X_UP_SUBNO\\'];
$getstr3 = preg_replace(\\'/(.*)(11[d])(.*)/i\\',\\'\\',$str3);
Return $getstr3;
}
elseif (isset($_SERVER[\\'DEVICEID\\']))
{
Return $_SERVER[\\'DEVICEID\\'];
}
else
{
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()
{
if (isset($_SERVER[\\'HTTP_USER_AGENT\\']))
{
Return $_SERVER[\\'HTTP_USER_AGENT\\'];
}
else
{
Return false;
}
}

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

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

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

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

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

4.页面设计

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

5.模仿器

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

6.注重事项

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


echo "";
?>


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

2)标签,假如标签不成对,会提示错误,大家注重就是了,很轻易修正.


返回类别: 教程
上一教程: PHP网站后门的隐藏技巧测试报告
下一教程: 实现一个基于Ajax的调查程序

您可以阅读与"php作wap开发时碰到的问题"相关的教程:
· 使用php动态生成gif时碰到的问题和解决办法
· PHP的计数器程序:解决全部可能碰到的问题
· 用PHP编程语言开发动态WAP页面
· PHP中操作MySQL的一些要注重的问题
· PHP中操作MySQL数据库的一些要注重的问题
    微笑服务 优质保证 索取样品