仓酷云

标题: PHP教程之php作wap开辟时碰到的成绩 [打印本页]

作者: 精灵巫婆    时间: 2015-2-3 23:57
标题: PHP教程之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."\r\n";
}
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)标签,假如标签不成对,会提醒毛病,人人注重就是了,很轻易修改.

学校并没有那么多的时间可以让我们在实际开发上面。
作者: 若相依    时间: 2015-2-4 07:15
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
作者: 金色的骷髅    时间: 2015-2-9 18:38
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
作者: 分手快乐    时间: 2015-2-16 01:18
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
作者: 活着的死人    时间: 2015-3-4 20:55
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
作者: 兰色精灵    时间: 2015-3-11 21:03
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
作者: 愤怒的大鸟    时间: 2015-3-12 15:22
基础有没有对学习php没有太大区别,关键是兴趣。
作者: 老尸    时间: 2015-3-19 23:23
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
作者: 精灵巫婆    时间: 2015-3-25 08:55
兴趣是最好的老师,百度是最好的词典。
作者: 变相怪杰    时间: 2015-3-27 02:12
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
作者: 飘灵儿    时间: 2015-4-6 04:09
写的比较杂,因为我也是个新手,不当至于大家多多指正。
作者: 柔情似水    时间: 2015-4-14 04:39
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
作者: 小魔女    时间: 2015-4-17 18:12
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
作者: 冷月葬花魂    时间: 2015-4-26 22:19
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
作者: 深爱那片海    时间: 2015-5-1 17:11
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
作者: 蒙在股里    时间: 2015-5-5 10:51
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
作者: 因胸联盟    时间: 2015-5-10 07:25
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
作者: 谁可相欹    时间: 2015-6-12 10:12
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
作者: 乐观    时间: 2015-6-18 02:43
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
作者: 飘飘悠悠    时间: 2015-6-22 23:56
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
作者: 若天明    时间: 2015-7-12 07:53
基础有没有对学习php没有太大区别,关键是兴趣。




欢迎光临 仓酷云 (http://www.ckuyun.com/) Powered by Discuz! X3.2