<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Everyday NetLog]]></title> 
<link>https://blog.zhoz.com/index.php</link> 
<description><![CDATA[z-NetLog]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Everyday NetLog]]></copyright>
<item>
<link>https://blog.zhoz.com/read.php?673</link>
<title><![CDATA[携帯端末のHTTPリクエスト、携帯側デバッグツール]]></title> 
<author> &lt;&gt;</author>
<category><![CDATA[WAP]]></category>
<pubDate>Wed, 10 Mar 2010 02:41:59 +0000</pubDate> 
<guid>https://blog.zhoz.com/read.php?673</guid> 
<description>
<![CDATA[ 
	FireMobileSimulatorは、主要３キャリア（DoCoMo/Au/SoftBank）の携帯端末ブラウザをシミュレートして、モバイルサイト開発を容易にするために作成されたFirefoxのアドオンです。携帯端末のHTTPリクエスト、絵文字表示、位置情報送信機能などの動作をシミュレートすることができます。<br/><br/>モバイルサイトをPCで閲覧するために、従来からある方法として、キャリア公式シミュレータの使用、Proxyの使用、Firefoxの useragentswitcher+modify headersの組み合わせ等、色々と手段はありましたが、これらの方法はそれぞれに不足している機能があったり、またITに詳しくない人にとっては導入が面倒かつ困難という面があります。<br/><br/>FireMobileSimulatorは、「誰でも簡単に導入できる」かつ「高機能である」ことを目的に作成された新しい携帯シミュレーターです。<br/><br/>主な機能 †<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* [全キャリア]UID送信<br/>&nbsp;&nbsp;&nbsp;&nbsp;* [DoCoMo]UTN送信<br/>&nbsp;&nbsp;&nbsp;&nbsp;* [DoCoMo]iモードID送信<br/>&nbsp;&nbsp;&nbsp;&nbsp;* [全キャリア]絵文字表示<br/>&nbsp;&nbsp;&nbsp;&nbsp;* [DoCoMo/Au]位置情報送信機能<br/>&nbsp;&nbsp;&nbsp;&nbsp;* [SoftBank]端末製造番号送信<br/>&nbsp;&nbsp;&nbsp;&nbsp;* [全キャリア]User-Agent偽装<br/>&nbsp;&nbsp;&nbsp;&nbsp;* [全キャリア]各種HTTPリクエストヘッダのシミュレート<br/>&nbsp;&nbsp;&nbsp;&nbsp;* 端末情報の追加・編集・削除機能<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Content-TypeのWMLとXHTMLをHTMLに強制変換(FirefoxのXML整形式チェックによる表示エラーを回避するため）<br/>&nbsp;&nbsp;&nbsp;&nbsp;* [全キャリア]アクセスキーへの対応<br/><br/><br/><a href="http://firemobilesimulator.org/?%A5%C0%A5%A6%A5%F3%A5%ED%A1%BC%A5%C9" target="_blank">ダウンロードはこちらから</a><br/>Tags - <a href="https://blog.zhoz.com/tag.php?tag=%25E6%25B5%258F%25E8%25A7%2588%25E5%2599%25A8" rel="tag">浏览器</a> , <a href="https://blog.zhoz.com/tag.php?tag=wap1.1%252Cwap1.2%252Cwap2.0" rel="tag">wap1.1,wap1.2,wap2.0</a> , <a href="https://blog.zhoz.com/tag.php?tag=%25E3%2582%25AD%25E3%2583%25A3%25E3%2583%25B3%25E3%2583%259A%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B3%25E3%2583%25BC%25E3%2583%2589" rel="tag">キャンペーンコード</a> , <a href="https://blog.zhoz.com/tag.php?tag=%25E8%25BD%25AF%25E4%25BB%25B6%25E6%25B5%258B%25E8%25AF%2595" rel="tag">软件测试</a>
]]>
</description>
</item><item>
<link>https://blog.zhoz.com/read.php?433</link>
<title><![CDATA[2008年全球手机游戏市场规模将突破26亿美元]]></title> 
<author> &lt;&gt;</author>
<category><![CDATA[WAP]]></category>
<pubDate>Mon, 06 Oct 2008 01:19:10 +0000</pubDate> 
<guid>https://blog.zhoz.com/read.php?433</guid> 
<description>
<![CDATA[ 
	　　iResearch艾瑞咨询整理e-Marcket发布的2007-2012年全球手机游戏市场用户及收入规模数据显示，2008年全球手机游戏市场规模将达到26.7亿美元；其中，手机游戏广告市场规模将达2亿美元。<br/>　　艾瑞咨询认为，作为娱乐性较强的手机应用，手机游戏已成为重要的游戏平台之一，其商业价值并未得到充分挖掘。随着市场发展，用户认知将逐步提升，产业链各环节应在进行市场营销推广的同时充分重视终端及手机游戏的更新升级，以不断完善的产品服务满足用户需求。在用户认知的基础上，实现手机游戏商业价值的提升。<br/><a href="http://pic.iresearch.cn/charts/0413/20080928/0043@12759.gif" target="_blank"><img src="http://pic.iresearch.cn/charts/0413/20080928/0043@12759.gif" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>Tags - <a href="https://blog.zhoz.com/tag.php?tag=%25E8%25B0%2583%25E7%25A0%2594%25E6%258A%25A5%25E5%2591%258A" rel="tag">调研报告</a> , <a href="https://blog.zhoz.com/tag.php?tag=wap1.1%252Cwap1.2%252Cwap2.0" rel="tag">wap1.1,wap1.2,wap2.0</a>
]]>
</description>
</item><item>
<link>https://blog.zhoz.com/read.php?421</link>
<title><![CDATA[国内wap取机种信息常用php类]]></title> 
<author> &lt;&gt;</author>
<category><![CDATA[WAP]]></category>
<pubDate>Mon, 22 Sep 2008 06:43:04 +0000</pubDate> 
<guid>https://blog.zhoz.com/read.php?421</guid> 
<description>
<![CDATA[ 
	昨天有朋友问到关于取一些机种信息的类，由于上次分区数据丢失了，一时没有找到。现在放上来收藏一下。<br/>主要功能：取手机号，头信息，UA，手机类型，IP等。<br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?
 /**
* 类名: get mobile info
* 描述: 手机信息类
* 其他: zhoz.com 
*/
class MobileInfo &#123;
&nbsp;&nbsp;/**
&nbsp;&nbsp;* 函数名称: getPhoneNumber
&nbsp;&nbsp;* 函数功能: 取手机号
&nbsp;&nbsp;* 输入参数: none
&nbsp;&nbsp;* 函数返回值: 成功返回号码，失败返回false
&nbsp;&nbsp;* 其它说明: http://log.zhoz.com
&nbsp;&nbsp;*/
&nbsp;&nbsp;function getPhoneNumber() &#123;
&nbsp;&nbsp;&nbsp;&nbsp;if (isset($_SERVER[&#039;HTTP_X_NETWORK_INFO&#039;])) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$str1 = $_SERVER[&#039;HTTP_X_NETWORK_INFO&#039;];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$getstr1 = preg_replace(&#039;/(.*,)(11[d])(,.*)/i&#039;,&#039;&#039;,$str1);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return $getstr1;
&nbsp;&nbsp;&nbsp;&nbsp;&#125; elseif (isset($_SERVER[&#039;HTTP_X_UP_CALLING_LINE_ID&#039;])) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$getstr2 = $_SERVER[&#039;HTTP_X_UP_CALLING_LINE_ID&#039;];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return $getstr2;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;elseif (isset($_SERVER[&#039;HTTP_X_UP_SUBNO&#039;])) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$str3 = $_SERVER[&#039;HTTP_X_UP_SUBNO&#039;];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$getstr3 = preg_replace(&#039;/(.*)(11[d])(.*)/i&#039;,&#039;&#039;,$str3);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return $getstr3;
&nbsp;&nbsp;&nbsp;&nbsp;&#125; elseif (isset($_SERVER[&#039;DEVICEID&#039;])) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return $_SERVER[&#039;DEVICEID&#039;];
&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return false;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&#125;
&nbsp;&nbsp;
&nbsp;&nbsp;/**
&nbsp;&nbsp;* 函数名称: getHttpHeader
&nbsp;&nbsp;* 函数功能: 取头信息
&nbsp;&nbsp;* 输入参数: none
&nbsp;&nbsp;* 函数返回值: 成功返回号码，失败返回false
&nbsp;&nbsp;* 其它说明: http://log.zhoz.com
&nbsp;&nbsp;*/
&nbsp;&nbsp;function getHttpHeader()&#123;
&nbsp;&nbsp;&nbsp;&nbsp;$str = &#039;&#039;;
&nbsp;&nbsp;&nbsp;&nbsp;foreach ($_SERVER as $key=&gt;$val) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$gstr = str_replace(&quot;&amp;&quot;,&quot;&amp;&quot;,$val);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$str.= &quot;$key -&gt; &quot;.$gstr.&quot;&#92;r&#92;n&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;Return $str;
&nbsp;&nbsp;&#125;
&nbsp;&nbsp;
&nbsp;&nbsp;/**
&nbsp;&nbsp;* 函数名称: getUA
&nbsp;&nbsp;* 函数功能: 取UA
&nbsp;&nbsp;* 输入参数: none
&nbsp;&nbsp;* 函数返回值: 成功返回号码，失败返回false
&nbsp;&nbsp;* 其它说明: http://log.zhoz.com
&nbsp;&nbsp;*/
&nbsp;&nbsp;function getUA() &#123;
&nbsp;&nbsp;&nbsp;&nbsp;if (isset($_SERVER[&#039;HTTP_USER_AGENT&#039;])) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return $_SERVER[&#039;HTTP_USER_AGENT&#039;];
&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return false;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&#125;
&nbsp;&nbsp;
&nbsp;&nbsp;/**
&nbsp;&nbsp;* 函数名称: getPhoneType
&nbsp;&nbsp;* 函数功能: 取得手机类型
&nbsp;&nbsp;* 输入参数: none
&nbsp;&nbsp;* 函数返回值: 成功返回string，失败返回false
&nbsp;&nbsp;* 其它说明: http://log.zhoz.com
&nbsp;&nbsp;*/
&nbsp;&nbsp;function getPhoneType() &#123;
&nbsp;&nbsp;&nbsp;&nbsp;$ua = $this-&gt;getUA();
&nbsp;&nbsp;&nbsp;&nbsp;if($ua!=false) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$str = explode(&#039; &#039;,$ua);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return $str[0];
&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return false;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&#125;
&nbsp;&nbsp;
&nbsp;&nbsp;/**
&nbsp;&nbsp;* 函数名称: isOpera
&nbsp;&nbsp;* 函数功能: 判断是否是opera
&nbsp;&nbsp;* 输入参数: none
&nbsp;&nbsp;* 函数返回值: 成功返回string，失败返回false
&nbsp;&nbsp;* 其它说明: http://log.zhoz.com
&nbsp;&nbsp;*/
&nbsp;&nbsp;function isOpera() &#123;
&nbsp;&nbsp;&nbsp;&nbsp;$uainfo = $this-&gt;getUA();
&nbsp;&nbsp;&nbsp;&nbsp;if (preg_match(&#039;/.*Opera.*/i&#039;,$uainfo)) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return true;
&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return false;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&#125;
&nbsp;&nbsp;
&nbsp;&nbsp;/**
&nbsp;&nbsp;* 函数名称: isM3gate
&nbsp;&nbsp;* 函数功能: 判断是否是m3gate
&nbsp;&nbsp;* 输入参数: none
&nbsp;&nbsp;* 函数返回值: 成功返回string，失败返回false
&nbsp;&nbsp;* 其它说明: http://log.zhoz.com
&nbsp;&nbsp;*/
&nbsp;&nbsp;function isM3gate() &#123;
&nbsp;&nbsp;&nbsp;&nbsp;$uainfo = $this-&gt;getUA();
&nbsp;&nbsp;&nbsp;&nbsp;if (preg_match(&#039;/M3Gate/i&#039;,$uainfo)) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return true;
&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return false;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&#125;
&nbsp;&nbsp;
&nbsp;&nbsp;/**
&nbsp;&nbsp;* 函数名称: getHttpAccept
&nbsp;&nbsp;* 函数功能: 取得HA
&nbsp;&nbsp;* 输入参数: none
&nbsp;&nbsp;* 函数返回值: 成功返回string，失败返回false
&nbsp;&nbsp;* 其它说明: 说明
&nbsp;&nbsp;*/
&nbsp;&nbsp;function getHttpAccept() &#123;
&nbsp;&nbsp;&nbsp;&nbsp;if (isset($_SERVER[&#039;HTTP_ACCEPT&#039;])) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return $_SERVER[&#039;HTTP_ACCEPT&#039;];
&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return false;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&#125;
&nbsp;&nbsp;
&nbsp;&nbsp;/**
&nbsp;&nbsp;* 函数名称: getIP
&nbsp;&nbsp;* 函数功能: 取得手机IP
&nbsp;&nbsp;* 输入参数: none
&nbsp;&nbsp;* 函数返回值: 成功返回string
&nbsp;&nbsp;* 其它说明: 说明
&nbsp;&nbsp;*/
&nbsp;&nbsp;function getIP() &#123;
&nbsp;&nbsp;&nbsp;&nbsp;$ip=getenv(&#039;REMOTE_ADDR&#039;);
&nbsp;&nbsp;&nbsp;&nbsp;$ip_ = getenv(&#039;HTTP_X_FORWARDED_FOR&#039;);
&nbsp;&nbsp;&nbsp;&nbsp;if (($ip_ != &quot;&quot;) &amp;&amp; ($ip_ != &quot;unknown&quot;)) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ip=$ip_;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;return $ip;
&nbsp;&nbsp;&#125;
&#125;
?&gt;
</textarea><br/>Tags - <a href="https://blog.zhoz.com/tag.php?tag=%25E6%259C%25BA%25E7%25A7%258D%25E4%25BF%25A1%25E6%2581%25AF" rel="tag">机种信息</a> , <a href="https://blog.zhoz.com/tag.php?tag=%25E6%25B5%258F%25E8%25A7%2588%25E5%2599%25A8" rel="tag">浏览器</a> , <a href="https://blog.zhoz.com/tag.php?tag=wap1.1%252Cwap1.2%252Cwap2.0" rel="tag">wap1.1,wap1.2,wap2.0</a>
]]>
</description>
</item><item>
<link>https://blog.zhoz.com/read.php?415</link>
<title><![CDATA[中国手机网民：2008年网行为调研报告]]></title> 
<author> &lt;&gt;</author>
<category><![CDATA[WAP]]></category>
<pubDate>Wed, 17 Sep 2008 01:29:00 +0000</pubDate> 
<guid>https://blog.zhoz.com/read.php?415</guid> 
<description>
<![CDATA[ 
	看到统计报告才发现：中国人的收入水平增强了！而手机网民主要是中高阶层收入者，至少我还没有应用的上。<br/>当然如果是没有收入依靠家里，我还是不希望看到了。<br/>2008年移动电子商务用户规模将达到770万人，比2007年增长120.0%。<br/>2008年手机网民18-30岁的用户所占份额达82.4%。手机网民主体呈现以青年人群为主体、有学历层次较高及消费能力较高的特征。<br/>2008年手机网民月均扣除手机上网费后的手机资费平均达到83元，较中国手机用户月均扣除手机上网费后的手机资费约70元的水平（2007年中国移动和中国联通财报数据）高出约20％。<br/><br/>Tags - <a href="https://blog.zhoz.com/tag.php?tag=%25E8%25B0%2583%25E7%25A0%2594%25E6%258A%25A5%25E5%2591%258A" rel="tag">调研报告</a>
]]>
</description>
</item><item>
<link>https://blog.zhoz.com/read.php?381</link>
<title><![CDATA[AUユーザーエージェントとデバイスID取得PHP]]></title> 
<author> &lt;&gt;</author>
<category><![CDATA[WAP]]></category>
<pubDate>Thu, 07 Aug 2008 07:17:19 +0000</pubDate> 
<guid>https://blog.zhoz.com/read.php?381</guid> 
<description>
<![CDATA[ 
	HTTP Requestヘッダ情報のHTTP_USER_AGENTの内容を確認することによって、アクセスしてきた機種を判別することが可能です。<br/>au W21SA であれば<br/>HTTP_USER_AGENT=KDDI-SA31 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0　と表示されます。<br/>これは、<br/><a href="https://blog.zhoz.com/attachment.php?fid=160" target="_blank"><img src="https://blog.zhoz.com/attachment.php?fid=160" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>という構成になります。<br/><br/>※ WAP2.0ブラウザ搭載端末用に (i-mode用などの) HTMLで記述したページを表示させる場合、User_Agent中の「KDDI」の文字列の有無により判定することが可能です。<br/>「KDDI」有り:HTMLコンテンツを配信<br/>「KDDI」無し:HDMLコンテンツを配信<br/>なお、デバイスIDの部分の記述は下記の一覧の通りとなります。<br/><br/><strong>auデバイスID取得、正規表現を使った方法</strong><br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php
$agent = $_SERVER[&#039;HTTP_USER_AGENT&#039;];
if(ereg(&quot;^KDDI&quot;, $agent))&#123;
&nbsp;&nbsp;&nbsp;&nbsp;// デバイスID取得
&nbsp;&nbsp;&nbsp;&nbsp;preg_match(&quot;/^KDDI-(.+) UP.Browser&#92;/.+&#92;/.+/&quot;, $agent, $value);
&nbsp;&nbsp;&nbsp;&nbsp;$dvice_id = $value[1];
&#125;
if(ereg(&quot;^UP.Browser&quot;, $agent))&#123;
&nbsp;&nbsp;&nbsp;&nbsp;// デバイスID取得
&nbsp;&nbsp;&nbsp;&nbsp;preg_match(&quot;/^UP&#92;.Browser&#92;/[0-9]+&#92;.[0-9]+&#92;-(.+).+/&quot;, $agent, $value);
&nbsp;&nbsp;&nbsp;&nbsp;$dvice_id = $value[1];
&#125;
echo(&quot;デバイスID = $dvice_id&quot;);
?&gt;
</textarea><br/>HTTP Requestヘッダ情報では、この他にHTTP_X_UP_SUBNOフィールドにてEZ番号が確認できます。<br/>EZ番号は、ユーザの端末操作によって、送出しない設定にすることが可能です。ユーザが「送出しない」設定にした場合、本フィールドは送出されません。<br/><br/>機種名称 デバイスID 機種名称 デバイスID 機種名称 デバイスID <br/>W64SA SA3E W62CA CA3B W62H HI3D <br/>W62SH SH35 re SN3F W63K KC3H <br/>Sportio TS3K W62T TS3J W63SA SA3D <br/>W62K KC3G W61S SN3D W61SA SA3C <br/>W62S SN3E W61T TS3I W61H HI3C <br/>W62SA ST34 W61PT PT33 W61P MA33 <br/>W61CA CA3A W61K KC3D W54SA SA3B <br/>W61SH SH34 W54S SN3C W56T TS3H <br/>W55T TS3G W53H HI3B W53K/W64K KC3B <br/>INFOBAR 2 ST33 W44K IIカメラなしモデル KC3E W53S SN3B <br/>W53CA CA39 W53SA ST32 W54T TS3E <br/>W52SH SH33 W52CA CA38 W52P MA32 <br/>W52S SN3A W53T TS3D W52SA SA3A <br/>W52H HI3A MEDIA SKIN KC3A W51SH SH32 <br/>W51S SN39 W52T TS3C W51T TS3B <br/>W51SA SA39 W51H HI39 W51CA CA37 <br/>W51P MA31 W51K KC39 DRAPE TS39 <br/>W47T TS3A W44S SN38 W44K/K II KC38 <br/>W43SA SA38 W45T TS38 W43CA CA35 <br/>W43H/H II HI38 W43S SN37 W43K KC37 <br/>W42SA ST31 W41SH SH31 W42CA CA34 <br/>W42H HI37 W44T/T II/T III TS37 neon TS35 <br/>W43T TS36 W42S SN36 W42K KC36 <br/>W41K KC35 W41SA SA36 W41T TS34 <br/>W41H HI36 W41CA CA33 W41S SN34 <br/>PENCK HI34 W33SA/SA II SA35 W32T TS33 <br/>W32SA SA34 W32K KC34 W32H HI35 <br/>W32S SN33/SN35 W31CA CA32 W31T TS32 <br/>W31S SN32 W31K/K II KC33 W31SA/SA II SA33 <br/>W22SA SA32 W22H HI33 W21CA/CA II CA31 <br/>W21T TS31 W21SA SA31 W21S SN31 <br/>W21K KC32 W21H HI32 W11K KC31 <br/>W11H HI31 E03CA CA36 E02SA SA37 <br/> <br/><br/>■CDMA 1X <br/><br/>機種名称 デバイスID 機種名称 デバイスID 機種名称 デバイスID <br/>Sweets cute ST2C Sweets pure ST29 G&#039;zOne TYPE-R CA28 <br/>Sweets ST26 talby ST25 INFOBAR ST22 <br/>A5529T TS2E A5528K KC2A A5527SA SA2A <br/>A5526K KC29 A5525SA ST2D A5523T TS2D <br/>A5522SA SA29 A5521K KC28 A5520SA/SA II ST2A <br/>A5518SA ST28 A5517T TS2C A5516T TS2B <br/>A5515K KC27 A5514SA ST27 A5512CA CA27 <br/>A5511T TS2A A5509T TS29 A5507SA ST24 <br/>A5506T TS28 A5505SA SA27 A5504T TS27 <br/>A5503SA SA26 A5502K KC24/KC25 A5501T TS26 <br/>A5407CA CA26 A5406CA CA25 A5405SA ST23 <br/>A5404S SN25 A5403CA CA24 A5402S SN24 <br/>A5401CA II CA23 A5401CA CA23 A5306ST ST21 <br/>A5305K KC22 A5304T TS24 A5303H II HI24 <br/>A5303H HI23 A5302CA CA22 A5301T TS23 <br/>A3015SA SA22 A1407PT PT23 A1406PT PT22 <br/>A1405PT PT21 A1404S/S II SN29 A1403K KC26 <br/>A1402S II SN27 A1402S II<br/>カメラ無し<br/> SN28 A1402S SN26 <br/>A1401K KC23 A1305SA SA28 A1304T II TS25 <br/>A1304T TS25 A1304T<br/>カメラ無し<br/> TS25 A1303SA SA25 <br/>A1302SA SA24 A1301S SN23 B01K<br/> KC26<br/> <br/> <br/><br/>■cdmaOne<br/><br/>機種名称 デバイスID 機種名称 デバイスID 機種名称 デバイスID <br/>A3014S SN21 A3013T TS22 A3012CA CA21 <br/>A3011SA SA21 A1101S SN22 C5001T TS21 <br/>C3003P MA21 C3002K KC21 C3001H&nbsp;&nbsp;HI21<br/><br/>Tags - <a href="https://blog.zhoz.com/tag.php?tag=%25E6%259C%25BA%25E7%25A7%258D%25E4%25BF%25A1%25E6%2581%25AF" rel="tag">机种信息</a> , <a href="https://blog.zhoz.com/tag.php?tag=%25E6%2597%25A5%25E6%259C%25AC%25E8%25AA%259E" rel="tag">日本語</a> , <a href="https://blog.zhoz.com/tag.php?tag=%25E6%25AD%25A3%25E5%2588%2599%25E8%25A1%25A8%25E8%25BE%25BE%25E5%25BC%258F" rel="tag">正则表达式</a>
]]>
</description>
</item><item>
<link>https://blog.zhoz.com/read.php?347</link>
<title><![CDATA[携帯端末の個体識別情報(uid)取得方法]]></title> 
<author> &lt;&gt;</author>
<category><![CDATA[WAP]]></category>
<pubDate>Wed, 18 Jun 2008 05:43:33 +0000</pubDate> 
<guid>https://blog.zhoz.com/read.php?347</guid> 
<description>
<![CDATA[ 
	携帯サイトでユーザー認証をする方法はいくつかあります。一番簡単なのは、ユーザ名とパスワードを使う方法です。しかし、毎回入力するのはユーザにとっては面倒ですよね。PCサイトならばクッキーを使ってこれらの情報を保存しておけるので毎回入力する必要はありません。しかし携帯サイトではクッキーが使えない(一部機種によって可能らしい)ので別の手法を取ることを考えなくてはいけません。そこで出てくるのが、携帯端末の個体識別情報(uid)を使うというやり方です。<br/><br/>携帯電話は電話番号と同じように、その端末を識別するIDのようなものを持っています。<br/>これを利用すれば、アクセスしてきたのがどのユーザなのかを判別することが可能になるというわけです。<br/><br/>キャリアによって取得方法や制限などがあるので、以下に紹介します。<br/>なお、個体識別情報はキャリアによって様々な言い方があるようですが<br/>ここでは便宜上「端末ID」「ユーザーID」という2種類に統一して表記します。<br/><br/>端末ID <br/><br/>端末固有の値で、例えば端末の利用者が変わった場合などにも変わらないので<br/>新利用者が旧利用者のユーザー認証情報をそのまま利用できてしまう危険性があります。<br/><br/>ユーザーID <br/><br/>個体識別情報と違い、利用者が変わればユーザー情報も変わります。<br/>そのため、個体識別情報と比べて安全です。<br/>略して uid と呼ばれることもあります。<br/><br/><span style="color: #FF0000;">Docomo</span> <br/>2つの方法があります。<br/><br/>utnを使う <br/>FORMによる送信時に個体識別情報を送信する方法です。<br/>FORMタグにutn属性を付加します。<br/><br/><div class="code">&lt;form ... utn&gt;<br/>&nbsp;&nbsp;...<br/>&nbsp;&nbsp;&lt;input type=&quot;submit&quot; ...&gt;<br/>&lt;/form&gt;</div><br/><br/>このようにすると、送信時に個体識別情報を一緒に送ることができます。<br/>ただし、毎回利用者に対して確認画面が表示されます。<br/><br/><br/>個体識別情報はUser-Agentの一部として送られます。<br/><br/><br/><strong>FOMA以外</strong> <br/><br/>製造番号(11桁)がUser-Agentの最後に付加されます。<br/><br/>DoCoMo/1.0/X503i/c10/ser***********<br/><br/><br/>*********** の部分に製造番号が入ります。<br/><br/><strong>FOMA </strong><br/><br/>FOMA端末製造番号(15桁)およびFOMAカード製造番号(20桁)がUser-Agentに付加されます。<br/><br/>DoCoMo/2.0 YYYY(c10;serXXXXXXXXXXXXXXX; iccxxxxxxxxxxxxxxxxxxxx)<br/><br/><br/>XXXXXXXXXXXXXXX の部分にFOMA端末製造番号、<br/>xxxxxxxxxxxxxxxxxxxx の部分にFOMAカード製造番号が入ります。<br/><br/><br/>製造番号およびFOMA端末製造番号が「端末ID」で、<br/>FOMAカード製造番号が「ユーザーID」という位置付けになります。<br/><br/><br/>NULLGWDOCOMOを使う <br/>utnを使った方法にはいくつかの欠点があります。<br/><br/><br/>毎回確認画面が表示されてしまう <br/><br/>FORMやAタグの属性として使うので、トップページでは利用できない <br/><br/>FOMA以外の機種では端末IDしか利用できない <br/><br/>これらの欠点を解消する方法として、もう一つの方法を紹介します。<br/>ただし、DOCOMOからの公認が必要となります。<br/>使い方は簡単で、URLに決まったキーワードを付加するだけです。<br/><br/><br/>http://some/foo?uid=NULLGWDOCOMO<br/><br/>このように、uid=NULLGWDOCOMO というパラメータをURLに付加します。<br/><br/><br/>すると、これが自動的にユーザーIDに変換されます。<br/>例えば以下のような感じに。<br/><br/>http://some/foo?uid=012345678901<br/><br/>サイト側ではこの uid を見てユーザー情報を識別できることになります。<br/>Java Servlet ならばこんな感じに。<br/><br/><br/>request.getParameter(&quot;uid&quot;)<br/><br/>ちなみに、2007/1現在 uid は12桁のようですが<br/>これは正式にアナウンスされた情報ではないので今後変わる可能性があります。<br/><br/><br/><span style="color: #FF0000;">Softbank (Vodafone) </span><br/>Vodafone端末は、User-Agentに端末IDを付加します。<br/>ただし、端末の設定により「ユーザID通知」をOFFにしていると付加されません。<br/><br/><br/>Vodafone/1.0/V904SH/SHJ001/SNxxxxxxxxxxxx<br/><br/>xxxxxxxxxxxx の部分に「端末シリアル番号」と呼ばれるものが入ります。<br/>Docomoの製造番号と同じように、端末固有ですので若干の危険性があります。<br/><br/><br/>HTTP_X_JPHONE_UID (x-jphone-uid) を使う <br/>C型と呼ばれる古い機種を除いて、ユーザーIDを取得する方法があります。<br/>この方法の場合、HTTPリクエストヘッダに情報が付加される為<br/>URLを加工したりする必要はありません。<br/><br/><br/>HTTP_X_JPHONE_UID にユーザーIDが入っているのでこれを利用します。<br/>例えば Java Servlet を使うと<br/><br/><br/>request.getHeader(&quot;x-jphone-uid&quot;)<br/><br/>で取得できます。<br/><br/><br/>なお、C型でもSoftbankに登録をすれば<br/>ユーザーIDが取得できるようになるようです。<br/><br/><br/><span style="color: #FF0000;">au</span> <br/>au 端末では、ユーザーIDをEZ番号(サブスクライバ ID)として管理しています。<br/>この情報はHTTPリクエストヘッダに付加されますが、<br/>端末の設定によって付加されないことがあります(EZ番号通知設定)。<br/>ユーザーIDの取得方法は以下の通りです。<br/><br/>request.getHeader(&quot;X-Up-Subno&quot;)<br/><br/>取得結果は、<br/>01234567890123_xx.ezweb.ne.jp のようになります。<br/>Tags - <a href="https://blog.zhoz.com/tag.php?tag=%25E6%25B5%258F%25E8%25A7%2588%25E5%2599%25A8" rel="tag">浏览器</a> , <a href="https://blog.zhoz.com/tag.php?tag=%25E6%2597%25A5%25E6%259C%25AC%25E8%25AA%259E" rel="tag">日本語</a> , <a href="https://blog.zhoz.com/tag.php?tag=%25E6%259C%25BA%25E7%25A7%258D%25E4%25BF%25A1%25E6%2581%25AF" rel="tag">机种信息</a>
]]>
</description>
</item><item>
<link>https://blog.zhoz.com/read.php?103</link>
<title><![CDATA[关于手机屏幕显示图片尺寸]]></title> 
<author> &lt;&gt;</author>
<category><![CDATA[WAP]]></category>
<pubDate>Fri, 30 Nov 2007 06:59:57 +0000</pubDate> 
<guid>https://blog.zhoz.com/read.php?103</guid> 
<description>
<![CDATA[ 
	手机屏幕尺寸分为物理尺寸和显示分辨率两个概念。<br/><br/>物理尺寸是指屏幕的实际大小。大的屏幕同时必须要配备高分辨率，也就是在这个尺寸下可以显示多少个像素，显示的像素越多，可以表现的余地自然越大。两台手机的屏幕大小差不多大，却一个只能显示两行汉字，另一个则可以显示五行汉字，抛开字体大小差别，关键就是屏幕的分辨率，后者分辨率大一些，自然在同样字体大小下可以显示更多行的汉字。彩屏手机的确好，没有足够大分辨率的屏幕表现，再高的颜色质量又有何用。<br/><br/>屏幕分辨率即把lcd格数（单位是点[dot] ）除以屏幕面积得到的就是屏幕分辨率，这个指标是决定画面好坏的最大因素。因此在选购彩色屏幕手机时不仅要注重屏幕能显示的色深，屏幕分辨率也是一个非常重要的决定指标。<br/><br/>qvga屏幕<br/><br/>qvga即“quartervga ”顾名思义就是说 vga的4分之一尺寸。就是在液晶屏幕上输出的分辨率是240×320像素。需要说明的是有些媒体把qvga屏幕当成与tft和tfd等lcd材质相同的东西是错误的，qvga屏幕的说法多见与日本的一些手机中，目前采用微软ppc操作系统的智能手机屏幕也大多是320×240像素的qvga屏幕。 <br/>所谓qvga液晶技术，就是在液晶屏幕上输出的分辨率是240×320的液晶输出方式。这个分辨率其实和屏幕本身的大小并没有关系。比如说，如果2.1英寸液晶显示屏幕可以显示240×320分辨率的图象，就叫做“qvga 2.1英寸液晶显示屏”；如果3.8英寸液晶显示屏幕可以显示240×320的图象，就叫做“qvga 3.8英寸液晶显示屏”，以上两种情况虽然具有相同的分辨率，但是由于尺寸的不同实际的视觉效果也不同，一般来说屏幕小的一个画面自然也会小一些。<br/><br/>其实液晶技术不仅限于手机显示屏，在液晶电视等领域也常见，只不过其输出分辨率较高，<br/>如vga分辨率：640×480，svga: 800×600,xga:1024×768。<br/><br/><br/>Tags - <a href="https://blog.zhoz.com/tag.php?tag=%25E6%259C%25BA%25E7%25A7%258D%25E4%25BF%25A1%25E6%2581%25AF" rel="tag">机种信息</a> , <a href="https://blog.zhoz.com/tag.php?tag=wap1.1%252Cwap1.2%252Cwap2.0" rel="tag">wap1.1,wap1.2,wap2.0</a>
]]>
</description>
</item><item>
<link>https://blog.zhoz.com/read.php?97</link>
<title><![CDATA[PHP做wap开发时常见问题及取机相关种信息类]]></title> 
<author> &lt;&gt;</author>
<category><![CDATA[WAP]]></category>
<pubDate>Mon, 26 Nov 2007 07:35:05 +0000</pubDate> 
<guid>https://blog.zhoz.com/read.php?97</guid> 
<description>
<![CDATA[ 
	<strong>1、文件格式</strong><br/><br/>首先要遇到的问题肯定是文件格式,在作web开发时,大家都是用的html或xhtml,到了wap开发时,就得用wml了.什么是wml?前面的文章有介绍了。这里要用utf-8：<br/><br/><div class="code"><br/>&lt;?php<br/>header(&quot;Content-type: text/vnd.wap.wml; charset=utf-8&quot;);<br/>$header = &quot;&lt;?xml version=&#92;&quot;1.0&#92;&quot; encoding=&#92;&quot;utf-8&#92;&quot;?&gt;&#92;n&quot;;<br/>$header .= &quot;&lt;!DOCTYPE wml PUBLIC &#92;&quot;-//WAPFORUM//DTD WML 1.1//EN&#92;&quot; &#92;&quot;http://www.wapforum.org/DTD/wml_1.1.xml&#92;&quot;&gt;&quot;;<br/>echo $header;<br/>?&gt;<br/></div><br/><br/><strong>2、编码</strong><br/><br/>上面说了字符集都应采用utf-8,这是一种容纳了多国语言的字符集,一个汉字是占双字节,utf-8占了4个字节,因此其容纳的信息量更大.在手机上编写的汉字,在将页面内码转成utf-8后,以后再打开就可能是一堆乱码.因此大家在作注释时,尽可能的用英文注释,省得以后看不懂.像editplus,ultraedit等工具都可以转文件内码。<br/><br/><strong>3、手机适配器</strong><br/><br/>世界各大手机厂商开发出的手机千奇百怪,可以支持的格式也是五花八门.比如铃声,有的可以支持,16,32,48和弦,支持mid,wmv,有的不完全支持;有的支持gif,png,bmp,有的也不完全支持.这虽然是把手机的档次和成本拉开了,但却苦了作手机开发的兄弟们了.因为不可避免的要对手机所能支持的图片,铃声等多媒体信息作出一个匹配,这个匹配的处理,我们一般叫做手机适配.<br/>要作手机适配,我们一般得有如下资料.<br/><br/>1)一份详细的手机适配资料表,里面应详细的说明手机所能支持的铃声,图片格式,还得有手机型号等信息。<br/>2)要正确的获取手机的UA,什么是UA,就是(user agent),实际上就是用户的手机信息。<br/><br/>有了上面的东东我们才能做出适配.以下给出一个我写的在wap开发中用到的类,可以用来取手机号,手机UA.<br/>这里写个统一取机种的类：<br/><div class="code"><br/>&lt;?<br/> /**<br/>* 类名: get mobile info<br/>* 描述: 手机信息类<br/>* 其他: zhoz.com <br/>*/<br/>class MobileInfo &#123;<br/>&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;* 函数名称: getPhoneNumber<br/>&nbsp;&nbsp;* 函数功能: 取手机号<br/>&nbsp;&nbsp;* 输入参数: none<br/>&nbsp;&nbsp;* 函数返回值: 成功返回号码，失败返回false<br/>&nbsp;&nbsp;* 其它说明: http://log.zhoz.com<br/>&nbsp;&nbsp;*/<br/>&nbsp;&nbsp;function getPhoneNumber() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (isset($_SERVER&#91;&#039;HTTP_X_NETWORK_INFO&#039;&#93;)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$str1 = $_SERVER&#91;&#039;HTTP_X_NETWORK_INFO&#039;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$getstr1 = preg_replace(&#039;/(.*,)(11&#91;d&#93;)(,.*)/i&#039;,&#039;&#039;,$str1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return $getstr1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; elseif (isset($_SERVER&#91;&#039;HTTP_X_UP_CALLING_LINE_ID&#039;&#93;)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$getstr2 = $_SERVER&#91;&#039;HTTP_X_UP_CALLING_LINE_ID&#039;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return $getstr2;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;elseif (isset($_SERVER&#91;&#039;HTTP_X_UP_SUBNO&#039;&#93;)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$str3 = $_SERVER&#91;&#039;HTTP_X_UP_SUBNO&#039;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$getstr3 = preg_replace(&#039;/(.*)(11&#91;d&#93;)(.*)/i&#039;,&#039;&#039;,$str3);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return $getstr3;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; elseif (isset($_SERVER&#91;&#039;DEVICEID&#039;&#93;)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return $_SERVER&#91;&#039;DEVICEID&#039;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;* 函数名称: getHttpHeader<br/>&nbsp;&nbsp;* 函数功能: 取头信息<br/>&nbsp;&nbsp;* 输入参数: none<br/>&nbsp;&nbsp;* 函数返回值: 成功返回号码，失败返回false<br/>&nbsp;&nbsp;* 其它说明: http://log.zhoz.com<br/>&nbsp;&nbsp;*/<br/>&nbsp;&nbsp;function getHttpHeader()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$str = &#039;&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;foreach ($_SERVER as $key=&gt;$val) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$gstr = str_replace(&quot;&amp;&quot;,&quot;&amp;&quot;,$val);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$str.= &quot;$key -&gt; &quot;.$gstr.&quot;&#92;r&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Return $str;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;* 函数名称: getUA<br/>&nbsp;&nbsp;* 函数功能: 取UA<br/>&nbsp;&nbsp;* 输入参数: none<br/>&nbsp;&nbsp;* 函数返回值: 成功返回号码，失败返回false<br/>&nbsp;&nbsp;* 其它说明: http://log.zhoz.com<br/>&nbsp;&nbsp;*/<br/>&nbsp;&nbsp;function getUA() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (isset($_SERVER&#91;&#039;HTTP_USER_AGENT&#039;&#93;)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return $_SERVER&#91;&#039;HTTP_USER_AGENT&#039;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;* 函数名称: getPhoneType<br/>&nbsp;&nbsp;* 函数功能: 取得手机类型<br/>&nbsp;&nbsp;* 输入参数: none<br/>&nbsp;&nbsp;* 函数返回值: 成功返回string，失败返回false<br/>&nbsp;&nbsp;* 其它说明: http://log.zhoz.com<br/>&nbsp;&nbsp;*/<br/>&nbsp;&nbsp;function getPhoneType() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$ua = $this-&gt;getUA();<br/>&nbsp;&nbsp;&nbsp;&nbsp;if($ua!=false) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$str = explode(&#039; &#039;,$ua);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return $str&#91;0&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;* 函数名称: isOpera<br/>&nbsp;&nbsp;* 函数功能: 判断是否是opera<br/>&nbsp;&nbsp;* 输入参数: none<br/>&nbsp;&nbsp;* 函数返回值: 成功返回string，失败返回false<br/>&nbsp;&nbsp;* 其它说明: http://log.zhoz.com<br/>&nbsp;&nbsp;*/<br/>&nbsp;&nbsp;function isOpera() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$uainfo = $this-&gt;getUA();<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (preg_match(&#039;/.*Opera.*/i&#039;,$uainfo)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;* 函数名称: isM3gate<br/>&nbsp;&nbsp;* 函数功能: 判断是否是m3gate<br/>&nbsp;&nbsp;* 输入参数: none<br/>&nbsp;&nbsp;* 函数返回值: 成功返回string，失败返回false<br/>&nbsp;&nbsp;* 其它说明: http://log.zhoz.com<br/>&nbsp;&nbsp;*/<br/>&nbsp;&nbsp;function isM3gate() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$uainfo = $this-&gt;getUA();<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (preg_match(&#039;/M3Gate/i&#039;,$uainfo)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;* 函数名称: getHttpAccept<br/>&nbsp;&nbsp;* 函数功能: 取得HA<br/>&nbsp;&nbsp;* 输入参数: none<br/>&nbsp;&nbsp;* 函数返回值: 成功返回string，失败返回false<br/>&nbsp;&nbsp;* 其它说明: 说明<br/>&nbsp;&nbsp;*/<br/>&nbsp;&nbsp;function getHttpAccept() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (isset($_SERVER&#91;&#039;HTTP_ACCEPT&#039;&#93;)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return $_SERVER&#91;&#039;HTTP_ACCEPT&#039;&#93;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;* 函数名称: getIP<br/>&nbsp;&nbsp;* 函数功能: 取得手机IP<br/>&nbsp;&nbsp;* 输入参数: none<br/>&nbsp;&nbsp;* 函数返回值: 成功返回string<br/>&nbsp;&nbsp;* 其它说明: 说明<br/>&nbsp;&nbsp;*/<br/>&nbsp;&nbsp;function getIP() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$ip=getenv(&#039;REMOTE_ADDR&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$ip_ = getenv(&#039;HTTP_X_FORWARDED_FOR&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (($ip_ != &quot;&quot;) &amp;&amp; ($ip_ != &quot;unknown&quot;)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ip=$ip_;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $ip;<br/>&nbsp;&nbsp;&#125;<br/>&#125;<br/>?&gt;<br/></div><br/><br/><strong>4、页面设计</strong><br/><br/>做wap开发时,wap页面是非常简单的.比html来说是简单到不能再简单了.在wap1.0里是没有表格之类的乱七八糟的东西的.所有的标签都是写在一个叫card的标签之内.可以用来分段.所以做页面的算是轻松了.<br/><br/><strong>5、模拟器</strong><br/><br/>要用各式各样的模拟器来测试,比较好的有m3gate,openwave,opera,还有一个叫winwap的,大家最好别用他来作测试,他的兼容性太好了,即使页面有错误都能给忽略掉.测试时跟用浏览器测试web页面一样,输入网址就可以了.没有比这更容易的事了。<br/>Tags - <a href="https://blog.zhoz.com/tag.php?tag=wap1.1%252Cwap1.2%252Cwap2.0" rel="tag">wap1.1,wap1.2,wap2.0</a> , <a href="https://blog.zhoz.com/tag.php?tag=wml" rel="tag">wml</a> , <a href="https://blog.zhoz.com/tag.php?tag=%25E6%25B5%258F%25E8%25A7%2588%25E5%2599%25A8" rel="tag">浏览器</a> , <a href="https://blog.zhoz.com/tag.php?tag=%25E6%259C%25BA%25E7%25A7%258D%25E4%25BF%25A1%25E6%2581%25AF" rel="tag">机种信息</a> , <a href="https://blog.zhoz.com/tag.php?tag=%25E7%25B1%25BB%25E6%2596%25B9%25E6%25B3%2595" rel="tag">类方法</a> , <a href="https://blog.zhoz.com/tag.php?tag=contenttype" rel="tag">contenttype</a>
]]>
</description>
</item><item>
<link>https://blog.zhoz.com/read.php?96</link>
<title><![CDATA[判断URL请求是从WML浏览器来的还是HTML浏览器来的]]></title> 
<author> &lt;&gt;</author>
<category><![CDATA[WAP]]></category>
<pubDate>Mon, 26 Nov 2007 04:03:39 +0000</pubDate> 
<guid>https://blog.zhoz.com/read.php?96</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;既然要利用已经存在的为HTML浏览器编写的代码，就需要知道请求是从HTML浏览器还是从WML浏览器过来的。同样地，如果想重新引导的HTML浏览器直接到相应的HTML文档上，WML浏览器到WML页面上，下面分别有PHP/ASP代码来实现这些。<br/><br/><br/><div class="code"><br/>&lt;?<br/>// Because this script sends out HTTP header information,<br/>// the first characters in the file must be the &lt;? PHP tag.<br/><br/>// relative URL to your HTML file<br/>　　 $htmlredirect = &quot;/html/my_htmlpage.html&quot;;<br/>// ABSOLUTE URL to your WML file　<br/>　　 $wmlredirect = &quot;http://wap.mysite.com/wml/my_wmldeck.wml&quot;;<br/><br/>　　 if(strpos(strtoupper($HTTP_ACCEPT),&quot;VND.WAP.WML&quot;) &gt; 0)<br/>&#123;// Check whether the browser/gateway says it accepts WML.<br/>　　　　 $br = &quot;WML&quot;;<br/>　　 &#125;<br/>　　 else &#123;<br/>　　　　 $browser=substr(trim($HTTP_USER_AGENT),0,4);<br/>　　　　 if($browser==&quot;Noki&quot; &#124;&#124; // Nokia phones and emulators<br/>　　　　　　　 $browser==&quot;Eric&quot; &#124;&#124; // Ericsson WAP phones and emulators<br/>　　　　　　　 $browser==&quot;WapI&quot; &#124;&#124; // Ericsson WapIDE 2.0<br/>　　　　　　　 $browser==&quot;MC21&quot; &#124;&#124; // Ericsson MC218<br/>　　　　　　　 $browser==&quot;AUR &quot; &#124;&#124; // Ericsson R320<br/>　　　　　　　 $browser==&quot;R380&quot; &#124;&#124; // Ericsson R380<br/>　　　　　　　 $browser==&quot;UP.B&quot; &#124;&#124; // UP.Browser<br/>　　　　　　　 $browser==&quot;WinW&quot; &#124;&#124; // WinWAP browser<br/>　　　　　　　 $browser==&quot;UPG1&quot; &#124;&#124; // UP.SDK 4.0<br/>　　　　　　　 $browser==&quot;upsi&quot; &#124;&#124; // another kind of UP.Browser ??<br/>　　　　　　　 $browser==&quot;QWAP&quot; &#124;&#124; // unknown QWAPPER browser<br/>　　　　　　　 $browser==&quot;Jigs&quot; &#124;&#124; // unknown JigSaw browser<br/>　　　　　　　 $browser==&quot;Java&quot; &#124;&#124; // unknown Java based browser<br/>　　　　　　　 $browser==&quot;Alca&quot; &#124;&#124; // unknown Alcatel-BE3 browser (UP based?)<br/>　　　　　　　 $browser==&quot;MITS&quot; &#124;&#124; // unknown Mitsubishi browser<br/>　　　　　　　 $browser==&quot;MOT-&quot; &#124;&#124; // unknown browser (UP based?)<br/>　　　　　　　 $browser==&quot;My S&quot; &#124;&#124;　// unknown Ericsson devkit browser ?<br/>$browser==&quot;WAPJ&quot; &#124;&#124; // Virtual WAPJAG www.wapjag.de<br/>$browser==&quot;fetc&quot; &#124;&#124; // fetchpage.cgi Perl script from www.wapcab.de<br/>$browser==&quot;ALAV&quot; &#124;&#124; // yet another unknown UP based browser ?<br/>　　　　　　　 $browser==&quot;Wapa&quot;) // another unknown browser (Web based &quot;Wapalyzer&quot;?)<br/>　　　　　　　 &#123;<br/>　　　　　　　 $br = &quot;WML&quot;;<br/>　　　　 &#125;<br/>　　　　 else &#123;<br/>　　　　　　 $br = &quot;HTML&quot;;<br/>　　　　 &#125;<br/>　　 &#125;<br/><br/>　　 if($br == &quot;WML&quot;) &#123;<br/>// Force the browser to load the WML file instead<br/>　　　 header(&quot;302 Moved Temporarily&quot;);<br/>　　　 header(&quot;Location: &quot;.$wmlredirect);<br/>　　　 exit;<br/>　　 &#125;<br/>　　 else &#123;<br/>// Force the browser to load the HTML file instead<br/>　　　 header(&quot;302 Moved Temporarily&quot;);<br/>　　　 header(&quot;Location: &quot;.$htmlredirect);<br/>　　　 exit;<br/>　　 &#125;<br/>　 ?&gt;<br/></div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;这个判断是在服务端完成的， PHP代码将首先查看网关是否接收text/vnd.wap.vml MIME类型。如果不是，将检测前面的字符，查看是否为WML浏览器。如果不符合，那么就假设为HTML浏览器。如果有新的WML浏览器，那么ID字符串也要增加。<br/>&nbsp;&nbsp;&nbsp;&nbsp;这个代码基于Robert Whitinger（robert@wapsight.com）的代码，使用了Don Amaro（donamaro.concepcion@nl.unisys.com）提供的列表。<br/>&nbsp;&nbsp;&nbsp;&nbsp;注意：由于只需要四个字符串就可以辨别，因此例如："WapIDE-SDK/2.0;(R320s(Arial))" 可以使用“WapI”来代替是可行的做法，也是足够的。<br/>&nbsp;&nbsp;&nbsp;&nbsp;同样的功能也可以通过ASP来解决。先判断请求的是“/index.wml” 或者 “/index.html” 和所需要的MIME类型。另外以下的脚本辨别的方式和上面不一样。另外还需要网关告诉服务器它能接收 的text/vnd.wap.wml MIME类型。该例子如下所示：<br/><div class="code"><br/>&lt;%<br/>Response.Buffer = TRUE<br/>　 Dim IsWap<br/>　 httpAccept = LCase(Request.ServerVariables(&quot;HTTP_ACCEPT&quot;))<br/>　 if Instr(httpAccept,&quot;wap&quot;) then<br/>　 IsWap=1<br/>　 Else Response.Redirect &quot;/index.html&quot; : Response.Flush : Response.End<br/>End if<br/>%&gt;<br/>&lt;%Response.ContentType = &quot;text/vnd.wap.wml&quot;%&gt;&lt;?xml version=&quot;1.0&quot;?&gt;<br/>&lt;%Response.Flush%&gt;<br/>&lt;!DOCTYPE wml PUBLIC &quot;-//WAPFORUM//DTD WML 1.1//EN&quot;<br/>&quot;http://www.wapforum.org/DTD/wml_1.1.xml&quot;&gt;<br/>　 &lt;wml&gt;<br/>　 &lt;card id=&quot;redirect&quot;&gt;<br/>　 &lt;onevent type=&quot;onenterforward&quot;&gt;<br/>　 &lt;go href=&quot;/index.wml&quot;/&gt;<br/>　 &lt;/onevent&gt;<br/>　 &lt;p&gt;<br/>　 &lt;a href=&quot;/index.wml&quot;&gt;enter&lt;/a&gt;<br/>　 &lt;/p&gt;<br/>　 &lt;/card&gt;<br/>　 &lt;/wml&gt;<br/>　 &lt;%Response.Flush:Response.End%&gt;<br/></div><br/>Tags - <a href="https://blog.zhoz.com/tag.php?tag=%25E6%25B5%258F%25E8%25A7%2588%25E5%2599%25A8" rel="tag">浏览器</a>
]]>
</description>
</item><item>
<link>https://blog.zhoz.com/read.php?95</link>
<title><![CDATA[WAP1.1、WAP1.2和WAP最新版本WAP2.0区别分析]]></title> 
<author> &lt;&gt;</author>
<category><![CDATA[WAP]]></category>
<pubDate>Mon, 26 Nov 2007 03:52:05 +0000</pubDate> 
<guid>https://blog.zhoz.com/read.php?95</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;现在主要的设备和应用或多或少的遵循WAP 1.1协议。WAP Forum 已经发布了WAP 1.2 ，里面没有太多值得注意的不同。毕竟一个协议不能进化得太快。<br/>&nbsp;&nbsp;&nbsp;&nbsp;总的来说，WAP 1.2中有以下几个最重要的新特点。对每个特点最好参考 WAP 1.2 Specifications。　　<br/>&nbsp;&nbsp;&nbsp;&nbsp;WAP2.0 将通过促进下一代无线应用和终端的发展从而加快移动互联网的发展进程。以下是WAP2.0对无线互联网价值链上各环节的意义。<br/><br/><strong>新协议 </strong><br/>UAPROF（User Agent Profile）。它基本上同意用户代理（可以近似理解为浏览器）使用一种方式来告诉内容提供者它有什么样的功能。这样使得提供者可以格式化输出最好的功能到这个专门的用户代理。 <br/>PUSH. PUSHing简单的说就是让应用服务器可以发送数据直接给用户代理。 <br/><br/><strong>WML</strong><br/>accesskey属性加入到&lt;a&gt;、&lt;anchor&gt;和&lt;input&gt;标签中。accesskey属性将允许用户只需要按一个专门的按键转跳到一个专门的锚或者输入框中。 <br/>&lt;pre&gt;标签看起来还没有在发布的版本中公布。我们将假设它和HTML中的pre标签具有同样的意义。 <br/>enctype属性加入到&lt;go&gt;。使用这个可以知道发送的数据将进行加密处理，要么是application/x-www-urlencoded或者multipart/form-data。对于GET，只引用前者。 <br/>align属性增加到&lt;table&gt;。指定对齐内容使用L、R、C和D分别对左，右，中和默认。 <br/>&lt;input&gt;的格式化属性Nf已经从绝对数值变化到可以从0到n。 <br/>字符编码不在依靠指定的专门的&lt;meta&gt;标签。 <br/><strong>WMLScript标准库</strong> <br/>URL库已经确认为RFC2396。 <br/>在字符串中如何表示非US-ASCII字符。非US-ASCII字符必须转换成本地可用的字符集。 <br/><br/>　WAP2.0是为加强WAP的实用性而设计的，迎合了市场的需求，并且适应了当前更高带宽、更快的数据传输速度、更强大的接入能力和不同的屏规格大小等最新的行业发展趋势。利用先进的网络和新增的服务功能，支持WAP2.0的终端将可以接入到各种基于互联网的内容、应用和服务，我们也可以将这视为从PC非常有价值的一个扩展。<br/><br/>　　开发商<br/><br/>　　由于新的标准支持XHTML，这样开发商就可以利用公共的语言基础和开发工具编写PC和WAP客户通用的应用程序，从而缩减开发费用。XHTML的模结构同时也使得开发商在更短的时间更容易地构建能在硬件环境中适应变化的应用。<br/><br/>　　通过CSS的应用，开发商可以把一个或多个XML文件中的风格属性从实际内容中分离出来，从而缩减贮存在浏览器记忆中标识语言代码的容量。 <br/><br/>　　终端制造商<br/><br/>　　终端制造商将可以借新技术开发的机会研发制造支持优化的WAP应用的手机终端。新手机的功能将可以包括彩色显示、多媒体信息、大容量文件的下载、改良的导航功能和友好的用户菜单等。<br/><br/>　　网络运营商<br/><br/>　　WAP2.0将为移动网络运营商带来巨大的利益。网络商将利用WAP2.0的技术优势开发更加有吸引力的新服务。这些新服务将具备促进用户使用量的巨大潜力，为移动网络商在2.5G和3G网络中的投资带来回报和收益。<br/><br/>　　WAP2.0受到业界的广泛支持<br/><br/>　　“GSM协会非常欢迎WAP2.0的标准协议，并且对WAP语言向 XHTML标识语言发展的方向表示赞许”, GSM协会的CEO--Rob Conway说，WAP标准持续发展的重要性不可忽略--WAP2.0将使发展商更加容易地在移动互联网上构建更加引人注目的移动应用。“WAP2.0的发布还将对移动商务的发展和普及进程带来重大的影响”。<br/><br/>　　据悉，三大手机制造厂商Nokia、爱立信以及Motorola公司也声称将在下一代手机产品中支持最新版本的WAP协议。<br/><br/>　技术的演变和WAP2.0带来的利益<br/><br/>　　随着WAP日益向互联网规范的靠拢和融合，最新的版本WAP2.0将全面支持：XHTML, TCP/IP, 超文本传输协议 (HTTP/1.1), 和 传输层安全(TLS)。<br/><br/>　　利用W3C开发的标准，WAP采用了XHTML 和 CSS作为WML2.0的一部分，以减少创建和测试为不同终端开发应用和操作内容所需要的时间。在协议层，WAP2.0采用了IETF以下的规范：在传输层，WAP2.0支持TCP/IP，实现在IP网络上传输数据的能力。在session层，WAP 2.0采用HTTP/1.1作为协定。此外，WAP2.0还加强了传输的安全性能，这包括TLS协议的采用，保证了更可靠的端到端安全，结合有线网络的安全措施，使得移动商务、移动银行应用和相关服务的提供变得更加安全可靠。<br/><br/>　　对WAP2.0来说，可以显著提高用户体验的新技术主要包括数据同步功能、多媒体信息（MMS）、稳定的存储界面、Provisioning 以及 Pictograms。此外的WTA(Wireless Telephony Application )、push、和UAPROF (User Agent Profile) 也将使WAP2.0具备比以往版本更加先进的功能。<br/><br/>　　以下将对这些功能和应用做简要的介绍说明：<br/><br/>　　*WAP2.0的数据同步特色采用了SyncML协议，为不同的终端提供通用的解决方案框架--SyncML同时支持WSP（Wireless Session Protocol）和HTTP/1.1协议。<br/><br/>　　*MMS为开发支持更丰富的信息服务提供了基础架构。基于MMS的信息服务将使短信更加的多采，更加趋向个性化。<br/><br/>　　*稳定的存储界面为终端用户提供了一套完整的存储服务，包括在无线终端上的信息管理、接入、<br/>储存和获取。<br/><br/>　　*“Provisioning”使得网络运营商可以通过一套通用的工具管理网络覆盖下的移动终端设备。<br/>　　*而“Pictogram”将允许一些小图象的传输，这是对传统的语言传送的一个跨越。<br/><br/>　　*PUSH技术允许值得信任的应用服务器向终端用户发送个性化的内容，例如用户可能会感兴趣的打折销售信息、新邮件到达提醒、或者本地的促销信息。push 技术是对传统互联网“pull”模式的有效补足。<br/><br/>　　*UAPROF使得应用服务器非常“聪明”地向用户发送适当的内容，并且可以自动识别终端的性能，譬如屏幕的大小和颜色、最大运行能力等，提高服务的人性化程度。<br/><br/>　　*WTA提供了应用服务环境内先进的电话服务。当用户在进行数据操作时，可以非常方便地进行拨叫和应答电话、来点等待、来点转接等功能的操作。这些新服务的提供使运营商将可以为客户提供独特的用户操作界面去控制复杂的网络功能。<br/>wml1.3，支持图片格式：GIF,JPEG,PNG,BMP,WBMP等。<br/><br/><br/>Tags - <a href="https://blog.zhoz.com/tag.php?tag=wap1.1%252Cwap1.2%252Cwap2.0" rel="tag">wap1.1,wap1.2,wap2.0</a> , <a href="https://blog.zhoz.com/tag.php?tag=wml" rel="tag">wml</a>
]]>
</description>
</item>
</channel>
</rss>