
头衔:绝代
|
|
|
|
Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。
一般来说,在网站上某一个页面中的变量(指服务器端变量,下同)是不能在下一页中用的,有了session就好办了。session中注册的变量可以作为全局变量使用。这样我们就可以将session用于用户身份认证,程序状态记录,页面之间参数传递。
在PHP3版本中是如何实现session的?
php3本身是没有实现session功能的,我们只有用其他的方法来实现,这其中最有名的要算phplib了。phplib最基本的功能包括用户认证、Session管理、权限及数据库的抽象化。下面我们就讲述一下如何用phplib实现session。
1、首先安装phplib(环境为win2000+php3.0.16+Apache1.3.12+phplib7.2c+mysql3.23.21 for win32)
首先将phplib解开,里面有一个"php"目录,将这个目录拷贝到Apache的安装目录下。例如:Apache安装在d:\Apache 目录下,那么就将"php"目录拷贝到d:\Apache,并将phplib目录的pages目录下(不包括目录本身)的文件和目录一起拷贝到d:\ Apache\htdocs下。
phplib的类库需要根据系统进行初始化,可能需要修改local.inc文件,其中包含着一些基本参数,可以根据自己机器的实际情况来进行修改。
将d:\Apache\php\prepend.php文件中的一段程序改为如下样子: if (!isset($_PHPLIB) or !is_array($_PHPLIB)) { $_PHPLIB["libdir"] = "d:/Apache/php/"; //放phplib下php目录的路径 }
修改d:\Apache\php\local.inc文件: class DB_Example extends DB_Sql { var $Host = "localhost"; //mysql数据库所在主机名 var $Database = "test"; //数据库名 var $User = "root"; //数据库用户名 var $Password = "1234567"; //数据库用户密码 } |
最后根据phplib目录下的stuff子目录中的create_database.mysql文件生成初始表。
由于每一个使用phplib的页面首先必须可以找到运行phplib所必需的类库文件,我们可以在php.ini中设置auto_prepend变量来支持,phplib中包含一个prepend.php文件,并将auto_prepend指定为"d:/Apache/php/prepend.php" (带引号)后,各页面就会自动包含phplib类库,我们还可以将phplib类库所在目录加进include变量中,以便可以找到这些文件。
2、调用page_open()函数
在每一个使用phplib的页面中,必须首先调用page_open函数进行初始化,例如:
<?php page_open(array("sess" => "Test_Session")); ?> |
数组变量(sess)用来初始化一些状态保存对象,这里应该注意:必须使用phplib内置名(sess),这些内置名是在local.inc中所定义的.。
因为phplib使用了Cookies来保存状态信息,所以page_open()函数必须在页面内容输出到浏览器之前被调用。php脚本最后应以page_close()结束,这将会将有关状态数据写回到数据库中,否则变量会丢失。
3、具体使用。
注册一个变量后即可在随后的页面中使用它,直至session结束。方法:
| <?php $sess->register( "varname"); ?> |
注意,这里的varname不是变量值,而是变量名,可以先指定变量名,随后再赋值。你在某个页面中可以改变变量的值,随后的页面访问该变量时会得到改变后的值。变量的类型是多样的,可以是一个字符串,一个数字,一个数组。举例来说明:
第一页:
<?php page_open(array("sess" => "Test _Session")); $sess->register( "welcome"); //注册变量$welcome,注意不需要加$ $welcome="Hello,PHP world!"; …… page_close(); ?> |
第二页:
<?php page_open();//开始session echo $welcome;//显示第一页中定义的$welcome page_close();//保存状态信息 ?> |
注册完一个变量,当页面最后调用page_close()函数后,各个session变量会被写回到数据库中。如果忘记调用 page_close()函数的话,变量就不会被写回数据库,这样将出现不可预知的后果。当变量被使用完毕,不再需要用到时,可以调用以下函数将变量删除:
<?php page_open(array("sess" => "Test _Session")); …… $sess->unregister( "variable_name"); …… page_close(); ?> |
在PHP4版本中是如何实现session的?
php4的session也靠cookies保存session id,用文件系统保存变量(默认情况下),因此,它的session变量不能保存对象。当然也可以将session保存在数据库中。
在php4中有关session的函数很多(详见php.ini配置一文),通常情况下我们只需要调用三个函数即可:sesssion_start()、session_register()、session_is_registered()。
在需要用到session的每一页的最开始处调用session_start()函数, 例如:
<?session_start()?> <html><body> <? $welcome="hello world !"; session_register("welcome");//注册$welcome变量,注意没有$符号 if(session_is_registered("welcome"))//检查$welcome变量是否注册 echo "welcome变量已经注册了!"; else echo "welcome变量还没有注册!"; ?> </body></html> |
php4中session处理的定制
我们需要扩充6个函数: sess_open($sess_path, $session_name); 这个函数被session处理程序调用来作初始化工作。 参数$sess_path对应php.ini文件中的session.save_path选项 参数$session_name对应php.ini中的session.name 选项。
sess_close(); 这个函数在页面结束执行并且session处理程序需要关闭时被调用
sess_read($key); 这个函数在session处理程序读取指定session键值($key)时,检索并返回标识为$key的session数据.(注意:序列化是将变量或对象在程序结束或需要时保存在文件中,在下次程序运行或需要时再调入内存的技术,有别于只保存数据的方法。)
sess_write($key, $val); 这个函数据在session处理程序需要将数据保存时调用,这种情况经常在程序结束时发生。它负责将数据保存在下次能用sess_read($key)函数检索的地方。
sess_destroy($key); 这个函数在需要消毁session时。它负责删除session并且清除环境。
sess_gc($maxlifetime); 这个函数负责清理碎片。在这种情况下,它负责删除过时的session数据。session处理程序会偶尔调用它们。
定制程序可以用mysql数据库或DBM文件保存session数据,视具体的情况而定。如果使用mysql作支持,那还需要进行以下的步骤:
首先在mysql中创建一个sessions数据库,并且创建一个sessions表:
mysql> CREATE DATABASE sessions; mysql> GRANT select, insert, update, delete ON sessions.* TO phpsession@localhost -> IDENTIFIED BY 'phpsession'; mysql> CREATE TABLE sessions ( -> sesskey char(32) not null, -> expiry int(11) unsigned not null, -> value text not null, -> PRIMARY KEY (sesskey) -> ); |
下一步,修改session_mysql.php文件的$SESS_DB* 变量使其匹配你机器上的数据库设置:
<? $SESS_DBHOST = "localhost"; /* 数据库主机名 */ $SESS_DBNAME = "sessions"; /* 数据库名 */ $SESS_DBUSER = "phpsession"; /* 数据库用户名 */ $SESS_DBPASS = "phpsession"; /* 数据库密码 */ $SESS_DBH = ""; $SESS_LIFE = get_cfg_var("session.gc_maxlifetime");
……//定制函数
session_set_save_handler( "sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc"); ?> |
定制使用dbm文件时的接口 :
<? $SESS_DBM = ""; $SESS_LIFE = get_cfg_var("session.gc_maxlifetime");
……//定制函数
session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc"); ?> |
session定制的测试代码:
<?php …… if ($handler == "dbm") include("session_dbm.php");//使用何种接口 elseif ($handler == "mysql") include("session_mysql.php"); else ……
session_start(); session_register("count"); …… ?> |
在身份验证中,怎样应用Session?
Session可以用于用户认证 :
验证用户是否合法:
<? session_start(); ……//验证过程 session_register("reguser"); ?> 在另一页面中检查用户是否登录
<? session_start(); if(isset($reguser)&&$reguser!=""){//如果已经登录 echo "亲爱的用户,欢迎你"; }else{//如果没有登录 echo "请先注册!"; } ?> |
用户退出登录:
<? session_destroy(); …… ?> |
如何实现多session并发运行?
问题提出:我在为所在单位编写一个进销存系统中发现需要让多个用户可以同时进入一个php应用程序。原来设计的静态的唯一的session ID导致数据混乱。这样,动态生成一个唯一的session ID成为当务之急。
解决办法很简单:我用了php文件名+时间戳为唯一的session ID,这样在我的程序中的每个session就各就各位,不再混乱了。
下面把我的源代码公布,方便也有同样的问题的朋友多一个解决方法。
//Start a PHP session to preserve variables. if ( empty($mysessionname) ) { $micro = microtime(); $micro = str_replace(" ","",$micro); // strip out the blanks $micro = str_replace(".","",$micro); // strip out the periods $mysessionname = "po_maint" . $micro; } session_name($mysessionname); session_start(); |
程序注释:
用mysessionname为页面间唯一的sessionname传递变量,如果你也用到这个名字必须把上述程序做个小小的改动。 Mysessionname不能为session的内部变量名,因为他在session开始之前就已经存在了。Mysessionname也不能用 cookie方式存放,因为多个session肯定会覆盖掉原先的cookie文件。你可以用隐含表单的域来保存它。这样就不会有问题。 |
本帐号为公用账户,请勿PM~
-----------------------------
|
|
|
|
|
post
... 绝代 ... ... 835 次浏览 ... 3 个回复
|
|
|
|
移动硬盘盒发展到现在已经没有什么质的突破了,图美作为国内移动存储界的知名厂商,一直在为消费者提供更好更有创意的产品而努力着,如今图美多功能移动硬盘盒的上市,可以说是图美公司又一次对移动存储产品的革命性突破,其在原有硬盘盒基础上创造性的加入照片,MP3和高清DVD播放三大娱乐功能,在让你享受方便的数据存储的同时又能让你感受到娱乐的新元素。图美这款产品代表了今后硬盘盒的发展新方向,而这必将引领21世纪移动存储界的潮流!!! 产品简介: 1.你还在为大量的数码照片不好管理而心烦吗? 2.你还在为刚拍的DV不能很好的与家人、朋友分享而烦劳吗? 3.你还在为珍藏的DVD碟片不好保管而造成的遗憾叹息吗
物有所值:该产品是Noontec续成功开发系列移动硬盘存储产品后的又一力作。该产品仍旧采用Noontec高性能NT68320 USB2.0控制芯片,硬盘容量支持高达500GB,具备移动硬盘的所有杰出功能,体积轻巧便携。在丝毫不增加体积的情况下,该产品还内置集成了多媒体播放功能,可以播放包括MP3,JPEG,MPEG4,Divx等格式在内的多种媒体格式,多媒体文件来源可从网站下载,通过USB拷入移动硬盘,再从硬盘中播放,或是通过该产品前端配置的读卡器插槽直接播放记忆卡中的照片,音乐等媒体文件,该读卡器几乎支持所有主流记忆卡。媒体播放可通过AV,YPbPr,VGA接口在电视,显示器和音响上播放出来。在播放多媒体时,该产品提供了一个操作非常简单易懂的操作界面,对媒体的预览,前进,后退,设置等进行简单方便地操作。该产品配备了遥控器,以便用户在播放多媒体时方便操作,同时产品面板上还装置有手动按钮,以提供用户在不同的使用环境下的不同选择。甚至在遙控面板与机身控制面板上还设计了MP3一键播放的简易操作功能,在只需要连接音响器材的前提下就可以完全享受天籁之音。移动存储与多媒体娱乐,一机即能满足你移动硬盘、多媒体播放、记忆读卡的多种需求。 产品特点: 1,性能卓越 该产品采用了Noontec一贯底耗能使用方案,并且得到广泛认可的高性能低功耗USB2.0 NT68320控制芯片,使得该产品的同级别速度传送上达到最高级别,并且作为移动硬盘可支持硬盘容量高达500GB。 2,轻巧便携 轻巧便携一直是Noontec移动存储产品设计风格,尽管该产品集成了多媒体解码电路,读卡器动能,控制面板功能等等附加应用,但是丝毫没有影响该产品作为移动存储产品Noontec所追求的轻巧体积,更体现了该存储产品在移动存储,移动娱乐的核心理念。 3,意外惊喜 由于Noontec存储产品的一贯的卓越性能,该产品的性能也是毫无疑问的。但是意外的惊喜是,在这小小的一方天地里,竟然还藏着有性能强大的多媒体解码电路,包括MP3,JPEG,MPEG4,Divx等格式在内的多种媒体格式。 4,与众不同 该产品不仅可以播放硬盘中存储的多媒体文件,而且该产品与众不同的是,它还配置着有多合一读卡功能,该功能允许用户插入记忆卡,直接播放,并且支持几乎所有主流记忆卡。 5,随心所欲 该产品配置有多种输出接口如AV,YPbPr,VGA接口可供选择,在电视,显示器和音响上均可享受多媒体娱乐节目。而且配置有遥控器和面板控制双控制手段,使用户在使用环境和控制方式上随心所欲。 产品规格: | 功能 | USB2.0 3.5寸移动硬盘 | | 多媒体播放器 | | 9合1读卡器功能 | | 播放方式 | 播放存储在硬盘或记忆卡中的多媒体文件 | | 数据接口 | USB2.0高速接口 | | 支持硬盘种类 | 3.5”IDE-64/100/133硬盘 | | 支持硬盘容量 | 最大750GB | | 支持文件格式 | FAT32 | | 支持记忆卡格式 | CF I/II, MMC, SD, MS, MD,SM, XD | | 支持记忆卡格式 | FAT16/32 | | System requirement | Windows 98se/2000/ME/XP/VISTA/MAC OS | | 体积 | 205 x 112 x 80mm | | 重量 | 200g | | 直流输出 | 5V 2A, 12V 2A | | 功率 | 34W |
播放器功能: | 输出方式 | AV/VGA/S-video | | 支持音频格式 | MP3 | | 支持视频格式 | VCD, MPEG4, DIVX3.X, DIVX4.X, DIVX5.X | | 支持图形 | JPEG | | 音频输出参数 | 立体声, SNR>90dB,失真<0.02%,响应频段20-20KHZ(+/-1dB) | | 视频输出 | NTSC/PAL, 1.0Vp-p(75ohm) |
| 图美MP35,幸福可以存盘,快乐可以分享 | | | | | 【IT168资讯】图美MP35:幸福可以存盘, 快乐可以分享 有时,我们离亲人、朋友太远,太多的快乐与重要的事情,我们无法与其分享,今天这一切都将成为可能。图美,新近推出了超大容量的数码家庭影院MP35。可以存储超过数十万张数码照片,上万首MP3,近几千部DV视频、经典影片,闲暇时与家人、朋友一起分享激动人心每一刻……。 机身采用铝镁合金,表面拉丝处理,四角防滑纹设计,所使用的材料不但方便散热,合金外壳对产品内部也起到保护作用。特配的吸入式托架使整个产品看起来非常时尚。机身前面板上的操控键在不用遥控器的情况下,对MP35的操作也是应用自如。特别要说明的是,MP35内置的多合一读卡器,对视频、音频的数据源扩充十分方便,只要插入储存卡,MP35立刻就能识别并进行播放。更难能可贵的是,MP35还拥有数据备份功能,只需一个按钮,储存卡上的数据就可以备份到内置的存储系统中。MP35采用的是目前比较主流的ESS芯片解码,成熟的ESS方案在多媒体处理上表示相当出色,加上图美特有的人性化操作界面,数据管理更是如虎添翼。 在多媒体播放功能方面,MP35软件设计非常人性化。不同的多媒体文件,用不同的图标表示,文件分类明确,并且还具有音乐文件过滤功能,这样可以更加快速的找到你想要播放的文件。(人性化的操作界面,让人耳目一新) 进入音乐播放模式,我们提供音乐播放EQ均衡器:标准、古典、爵士、摇滚、流行、民歌、舞曲七种音效模式,可以满足绝大多数风格的音乐需求。 MP35对文件的管理也同样出色,进入档案分类界面,我们可以轻松对文件进行播放、复制、移除等操作。 MP35支持目前主流的avi. Mpeg. Vob Dat. Divx. Mp4. Mp3 . Wma. Ac3. Jpg.等多媒体格式,并支持外挂字幕功能,真正做到在家随时K歌了。让人惊喜的是,把整张DVD碟片拷贝到MP35中。MP35可以完全呈现出DVD影碟机的播放环境。多媒体播放界面操作简单明了。 MP35拥有VGA、AV、YPbPr多种视频输出,支持高清显示、高保真音频输出。通过随机所附送的USB数据线,连接电脑,轻松做到视频、音频、照片的更新, 保持时尚。MP35随机附送配件十分丰富:图美公司特有的AV、YPbPr一拖三输出接口,USB2.0数据接口。摇控器、电源线、说明书、保修卡、驱动等。 MP35不但可以满足消费者大容量数据的交换,在空余时间与家人、朋友一道用它来听听音乐、看看大片、一起欣赏一下外出旅游时所拍的照片,也是很爽意的一件事情。 |
| http://auction1.taobao.com/auction/item_detail-0db2-e3ac158076b14e9dc1a76232fe8f269f.jhtml
图美硬盘盒招商www.noontec.com 杨文化0755-81798372
|
|
|
|
|
|
|
|
|
移动硬盘盒发展到现在已经没有什么质的突破了,图美作为国内移动存储界的知名厂商,一直在为消费者提供更好更有创意的产品而努力着,如今图美多功能移动硬盘盒的上市,可以说是图美公司又一次对移动存储产品的革命性突破,其在原有硬盘盒基础上创造性的加入照片,MP3和高清DVD播放三大娱乐功能,在让你享受方便的数据存储的同时又能让你感受到娱乐的新元素。图美这款产品代表了今后硬盘盒的发展新方向,而这必将引领21世纪移动存储界的潮流!!! 产品简介: 1.你还在为大量的数码照片不好管理而心烦吗? 2.你还在为刚拍的DV不能很好的与家人、朋友分享而烦劳吗? 3.你还在为珍藏的DVD碟片不好保管而造成的遗憾叹息吗
物有所值:该产品是Noontec续成功开发系列移动硬盘存储产品后的又一力作。该产品仍旧采用Noontec高性能NT68320 USB2.0控制芯片,硬盘容量支持高达500GB,具备移动硬盘的所有杰出功能,体积轻巧便携。在丝毫不增加体积的情况下,该产品还内置集成了多媒体播放功能,可以播放包括MP3,JPEG,MPEG4,Divx等格式在内的多种媒体格式,多媒体文件来源可从网站下载,通过USB拷入移动硬盘,再从硬盘中播放,或是通过该产品前端配置的读卡器插槽直接播放记忆卡中的照片,音乐等媒体文件,该读卡器几乎支持所有主流记忆卡。媒体播放可通过AV,YPbPr,VGA接口在电视,显示器和音响上播放出来。在播放多媒体时,该产品提供了一个操作非常简单易懂的操作界面,对媒体的预览,前进,后退,设置等进行简单方便地操作。该产品配备了遥控器,以便用户在播放多媒体时方便操作,同时产品面板上还装置有手动按钮,以提供用户在不同的使用环境下的不同选择。甚至在遙控面板与机身控制面板上还设计了MP3一键播放的简易操作功能,在只需要连接音响器材的前提下就可以完全享受天籁之音。移动存储与多媒体娱乐,一机即能满足你移动硬盘、多媒体播放、记忆读卡的多种需求。 产品特点: 1,性能卓越 该产品采用了Noontec一贯底耗能使用方案,并且得到广泛认可的高性能低功耗USB2.0 NT68320控制芯片,使得该产品的同级别速度传送上达到最高级别,并且作为移动硬盘可支持硬盘容量高达500GB。 2,轻巧便携 轻巧便携一直是Noontec移动存储产品设计风格,尽管该产品集成了多媒体解码电路,读卡器动能,控制面板功能等等附加应用,但是丝毫没有影响该产品作为移动存储产品Noontec所追求的轻巧体积,更体现了该存储产品在移动存储,移动娱乐的核心理念。 3,意外惊喜 由于Noontec存储产品的一贯的卓越性能,该产品的性能也是毫无疑问的。但是意外的惊喜是,在这小小的一方天地里,竟然还藏着有性能强大的多媒体解码电路,包括MP3,JPEG,MPEG4,Divx等格式在内的多种媒体格式。 4,与众不同 该产品不仅可以播放硬盘中存储的多媒体文件,而且该产品与众不同的是,它还配置着有多合一读卡功能,该功能允许用户插入记忆卡,直接播放,并且支持几乎所有主流记忆卡。 5,随心所欲 该产品配置有多种输出接口如AV,YPbPr,VGA接口可供选择,在电视,显示器和音响上均可享受多媒体娱乐节目。而且配置有遥控器和面板控制双控制手段,使用户在使用环境和控制方式上随心所欲。 产品规格: | 功能 | USB2.0 3.5寸移动硬盘 | | 多媒体播放器 | | 9合1读卡器功能 | | 播放方式 | 播放存储在硬盘或记忆卡中的多媒体文件 | | 数据接口 | USB2.0高速接口 | | 支持硬盘种类 | 3.5”IDE-64/100/133硬盘 | | 支持硬盘容量 | 最大750GB | | 支持文件格式 | FAT32 | | 支持记忆卡格式 | CF I/II, MMC, SD, MS, MD,SM, XD | | 支持记忆卡格式 | FAT16/32 | | System requirement | Windows 98se/2000/ME/XP/VISTA/MAC OS | | 体积 | 205 x 112 x 80mm | | 重量 | 200g | | 直流输出 | 5V 2A, 12V 2A | | 功率 | 34W |
播放器功能: | 输出方式 | AV/VGA/S-video | | 支持音频格式 | MP3 | | 支持视频格式 | VCD, MPEG4, DIVX3.X, DIVX4.X, DIVX5.X | | 支持图形 | JPEG | | 音频输出参数 | 立体声, SNR>90dB,失真<0.02%,响应频段20-20KHZ(+/-1dB) | | 视频输出 | NTSC/PAL, 1.0Vp-p(75ohm) |
| 图美MP35,幸福可以存盘,快乐可以分享 | | | | | 【IT168资讯】图美MP35:幸福可以存盘, 快乐可以分享 有时,我们离亲人、朋友太远,太多的快乐与重要的事情,我们无法与其分享,今天这一切都将成为可能。图美,新近推出了超大容量的数码家庭影院MP35。可以存储超过数十万张数码照片,上万首MP3,近几千部DV视频、经典影片,闲暇时与家人、朋友一起分享激动人心每一刻……。 机身采用铝镁合金,表面拉丝处理,四角防滑纹设计,所使用的材料不但方便散热,合金外壳对产品内部也起到保护作用。特配的吸入式托架使整个产品看起来非常时尚。机身前面板上的操控键在不用遥控器的情况下,对MP35的操作也是应用自如。特别要说明的是,MP35内置的多合一读卡器,对视频、音频的数据源扩充十分方便,只要插入储存卡,MP35立刻就能识别并进行播放。更难能可贵的是,MP35还拥有数据备份功能,只需一个按钮,储存卡上的数据就可以备份到内置的存储系统中。MP35采用的是目前比较主流的ESS芯片解码,成熟的ESS方案在多媒体处理上表示相当出色,加上图美特有的人性化操作界面,数据管理更是如虎添翼。 在多媒体播放功能方面,MP35软件设计非常人性化。不同的多媒体文件,用不同的图标表示,文件分类明确,并且还具有音乐文件过滤功能,这样可以更加快速的找到你想要播放的文件。(人性化的操作界面,让人耳目一新) 进入音乐播放模式,我们提供音乐播放EQ均衡器:标准、古典、爵士、摇滚、流行、民歌、舞曲七种音效模式,可以满足绝大多数风格的音乐需求。 MP35对文件的管理也同样出色,进入档案分类界面,我们可以轻松对文件进行播放、复制、移除等操作。 MP35支持目前主流的avi. Mpeg. Vob Dat. Divx. Mp4. Mp3 . Wma. Ac3. Jpg.等多媒体格式,并支持外挂字幕功能,真正做到在家随时K歌了。让人惊喜的是,把整张DVD碟片拷贝到MP35中。MP35可以完全呈现出DVD影碟机的播放环境。多媒体播放界面操作简单明了。 MP35拥有VGA、AV、YPbPr多种视频输出,支持高清显示、高保真音频输出。通过随机所附送的USB数据线,连接电脑,轻松做到视频、音频、照片的更新, 保持时尚。MP35随机附送配件十分丰富:图美公司特有的AV、YPbPr一拖三输出接口,USB2.0数据接口。摇控器、电源线、说明书、保修卡、驱动等。 MP35不但可以满足消费者大容量数据的交换,在空余时间与家人、朋友一道用它来听听音乐、看看大片、一起欣赏一下外出旅游时所拍的照片,也是很爽意的一件事情。 |
| http://auction1.taobao.com/auction/item_detail-0db2-e3ac158076b14e9dc1a76232fe8f269f.jhtml
图美硬盘盒招商www.noontec.com 杨文化0755-81798372
|
|
|
|
|
|
|
|
|
下来 学习 学习!~~~~
|
|
|
|
|
|