<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Laien&#039;s &#187; PHP</title>
	<atom:link href="http://i.isclab.org/?feed=rss2&#038;cat=7" rel="self" type="application/rss+xml" />
	<link>http://i.isclab.org</link>
	<description>成功 自在 健康 好状态</description>
	<lastBuildDate>Tue, 18 May 2010 07:10:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>【原创】PHP飞信发送类的修正（感谢jjchibin）</title>
		<link>http://i.isclab.org/?p=101</link>
		<comments>http://i.isclab.org/?p=101#comments</comments>
		<pubDate>Wed, 03 Mar 2010 14:47:07 +0000</pubDate>
		<dc:creator>Laien</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[PHP飞信类]]></category>
		<category><![CDATA[飞信]]></category>

		<guid isPermaLink="false">http://i.isclab.org/?p=101</guid>
		<description><![CDATA[　　由于我测试验证不严谨，导致上次发布的PHP飞信短信发送类只能给自己发短信，无法给其他飞信好友发送短信。向各位表示抱歉，同时我今天修改了这个问题。关键是两个步骤：1、登录成功后GetContactList获取用户列表，2、GetContactsInfo获取用户详细信息，建立手机号码和飞信sip的uri之间的映射关系。
　　多的不说了，直接贴代码。经测试程序可以群发，单发，给自己发！
　　点击下载PHP飞信发送类修正版
    

?Download download.txt1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
&#60;?php
/**
 *@desc 飞信短信发送类(Encoded:UTF-8)
 *使用方法：
 * * $myNewFetion = new myFetion('1381111111', 'password','SELF', '测试消息' ); // 给自己发
 * $myNewFetion = new myFetion('1381111111', 'password','1382222222', '测试消息' ); // 给一个人发
 * $myNewFetion = new myFetion('1381111111', 'password','1382222222,13833333333,13844444444', '测试消息' ); // 给很多人发
 * $myNewFetion = new myFetion('1381111111', 'password','ALL', '测试消息' ); // 给所有飞信好友发
&#160;
 *非常感谢CSDN论坛ycTIN在MD5加密部分的帮助!
 *本程序未做容错处理,为防止诈骗短信乱发，程序不提供添加好友功能
 *测试URL:http://i.isclab.org/tools/fetion.php
 *
 *程序运行条件：
 [...]]]></description>
			<content:encoded><![CDATA[<p>　　由于我测试验证不严谨，导致上次发布的<a href="http://i.isclab.org/?p=43">PHP飞信短信发送类</a>只能给自己发短信，无法给其他飞信好友发送短信。向各位表示抱歉，同时我今天修改了这个问题。关键是两个步骤：1、登录成功后GetContactList获取用户列表，2、GetContactsInfo获取用户详细信息，建立手机号码和飞信sip的uri之间的映射关系。<br />
　　多的不说了，直接贴代码。经测试程序可以群发，单发，给自己发！<br />
　　<a href='http://i.isclab.org/wp-content/uploads/2010/03/class.myfetionV3.zip'>点击下载PHP飞信发送类修正版</a><br />
    <span id="more-101"></span></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://i.isclab.org/wp-content/plugins/wp-codebox/wp-codebox.php?p=101&amp;download=download.txt">download.txt</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1012"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
</pre></td><td class="code" id="p101code2"><pre class="csharp" style="font-family:monospace;"><span style="color: #008000;">&lt;?</span>php
<span style="color: #008080; font-style: italic;">/**
 *@desc 飞信短信发送类(Encoded:UTF-8)
 *使用方法：
 * * $myNewFetion = new myFetion('1381111111', 'password','SELF', '测试消息' ); // 给自己发
 * $myNewFetion = new myFetion('1381111111', 'password','1382222222', '测试消息' ); // 给一个人发
 * $myNewFetion = new myFetion('1381111111', 'password','1382222222,13833333333,13844444444', '测试消息' ); // 给很多人发
 * $myNewFetion = new myFetion('1381111111', 'password','ALL', '测试消息' ); // 给所有飞信好友发
&nbsp;
 *非常感谢CSDN论坛ycTIN在MD5加密部分的帮助!
 *本程序未做容错处理,为防止诈骗短信乱发，程序不提供添加好友功能
 *测试URL:http://i.isclab.org/tools/fetion.php
 *
 *程序运行条件：
 *1.服务器能够访问飞信服务器nav.fetion.com.cn的443端口（https）
 *2.服务器端PHP程序能够创建socket访问221.176.31.4的8080端口
 *
 *关键技术：
 *1.CURL + SSL通讯
 *2.PHP Socket编程
 *3.PHP MD5函数的深入理解
 *4.PHP DOM处理XML
 *
 *@author shadu AT foxmail DOT com /CNOS(http://bbs.ouropen.org)
 *@version 2010-03-04
 *@copyright 任意拷贝和修改！
 *@update 修正了只能给自己发短信的bug，感谢jjchibin的提醒
 *@update 增加了群发功能
 **/</span>
<span style="color: #6666cc; font-weight: bold;">class</span> myFetion<span style="color: #008000;">&#123;</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $mobile_no   <span style="color: #008000;">=</span> <span style="color: #666666;">'1381111111'</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// 发送者手机号</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $fetion_no   <span style="color: #008000;">=</span> <span style="color: #666666;">'738713940'</span> <span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// 发送者飞信号，程序自动获取</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $fetion_uri  <span style="color: #008000;">=</span> <span style="color: #666666;">'sip:123456789@fetion.com.cn;p=1234'</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// 发送者的sip</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $fetion_pwd  <span style="color: #008000;">=</span> <span style="color: #666666;">'mypassword'</span> <span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// 发送者飞信登录密码</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $cookie_file <span style="color: #008000;">=</span> <span style="color: #666666;">'cookie.txt'</span> <span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// 临时存放的cookie文件</span>
&nbsp;
    <span style="color: #0600FF; font-weight: bold;">public</span> $SMS_RECEIVER <span style="color: #008000;">=</span> <span style="color: #666666;">'1382222222'</span> <span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//  短信接收者手机号码 </span>
    <span style="color: #0600FF; font-weight: bold;">public</span> $SMS_TEXT      <span style="color: #008000;">=</span> <span style="color: #666666;">'sms test'</span> <span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// 短信内容，支持中文</span>
&nbsp;
    <span style="color: #0600FF; font-weight: bold;">private</span> $fetion_ContactList <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;&quot;</span> <span style="color: #008000;">;</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $fetion_ContactMapping <span style="color: #008000;">=</span> array<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #0600FF; font-weight: bold;">private</span> $NONCE       <span style="color: #008000;">=</span> <span style="color: #666666;">'AAB3238922BCC25A6F606EB525FFDC56'</span> <span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// SIPC服务器返回,每次不同</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $C_NONCE     <span style="color: #008000;">=</span> <span style="color: #666666;">'AAB3238922BCC25A6F606EB525FFDC56'</span> <span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// 是随机的，但是固定值也没关系</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $SSIC        <span style="color: #008000;">=</span> <span style="color: #666666;">''</span> <span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// cookie中提取的变量</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $RESPONSE   <span style="color: #008000;">=</span> <span style="color: #666666;">''</span> <span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// 加密后的密钥串</span>
&nbsp;
&nbsp;
    <span style="color: #0600FF; font-weight: bold;">private</span> $url_nav            <span style="color: #008000;">=</span> <span style="color: #666666;">'https://nav.fetion.com.cn/nav/getsystemconfig.aspx'</span> <span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// 443端口获取导航信息</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $domain_fetion      <span style="color: #008000;">=</span> <span style="color: #666666;">'fetion.com.cn'</span> <span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// 飞信服务器的域名</span>
&nbsp;
    <span style="color: #0600FF; font-weight: bold;">private</span> $SIPC_PROXY         <span style="color: #008000;">=</span> <span style="color: #666666;">'221.176.31.4:8080'</span><span style="color: #008000;">;</span>  <span style="color: #008080; font-style: italic;">//  8080端口飞信通讯使用 </span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $SSI_PROXY_SIGN_IN  <span style="color: #008000;">=</span> <span style="color: #666666;">'https://uid.fetion.com.cn/ssiportal/SSIAppSignIn.aspx'</span> <span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// 登录URL</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $SSI_PROXY_SIGH_OUT <span style="color: #008000;">=</span> <span style="color: #666666;">'http://ssi.fetion.com.cn/ssiportal/SSIAppSignOut.aspx'</span> <span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// 登出URL</span>
&nbsp;
    <span style="color: #0600FF; font-weight: bold;">private</span> $curl <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">NULL</span> <span style="color: #008000;">;</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $socket <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">NULL</span> <span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">/**
     *从导航网站获取信息
     **/</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $REQUEST_CONFIG <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;&lt;config&gt;&lt;user mobile-no=<span style="color: #008080; font-weight: bold;">\&quot;</span>%s<span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&lt;client type=<span style="color: #008080; font-weight: bold;">\&quot;</span>PC<span style="color: #008080; font-weight: bold;">\&quot;</span> version=<span style="color: #008080; font-weight: bold;">\&quot;</span>2.3.0230<span style="color: #008080; font-weight: bold;">\&quot;</span> platform=<span style="color: #008080; font-weight: bold;">\&quot;</span>W5.1<span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&lt;servers version=<span style="color: #008080; font-weight: bold;">\&quot;</span>0<span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&lt;service-no version=<span style="color: #008080; font-weight: bold;">\&quot;</span>12<span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&lt;parameters version=<span style="color: #008080; font-weight: bold;">\&quot;</span>15<span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&lt;hints version=<span style="color: #008080; font-weight: bold;">\&quot;</span>13<span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&lt;http-applications version=<span style="color: #008080; font-weight: bold;">\&quot;</span>14<span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&lt;client-config version=<span style="color: #008080; font-weight: bold;">\&quot;</span>17<span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&lt;/config&gt;&quot;</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">/**
     *使用手机号码和密码向服务器获取对应的飞信号码信息
     **/</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $REQUEST_SSI_SIGN  <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;mobileno=%s&amp;pwd=%s&quot;</span> <span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">/**
     *使用飞信号码向SIPC服务器注册，获取临时变量NONCE和SSIC的值
     **/</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $REQUEST_SIPC_SIGN_NONCE      <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;R %s SIP-C/2.0<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>F: %s<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>I: 1<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>Q: 1 R<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>L: %d<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span><span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>%s&quot;</span> <span style="color: #008000;">;</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $REQUEST_SIPC_SIGN_NONCE_BODY <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;&lt;args&gt;&lt;device type=<span style="color: #008080; font-weight: bold;">\&quot;</span>PC<span style="color: #008080; font-weight: bold;">\&quot;</span> version=<span style="color: #008080; font-weight: bold;">\&quot;</span>6<span style="color: #008080; font-weight: bold;">\&quot;</span> client-version=<span style="color: #008080; font-weight: bold;">\&quot;</span>2.3.0230<span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&lt;caps value=<span style="color: #008080; font-weight: bold;">\&quot;</span>simple-im;im-session;temp-group<span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&lt;events value=<span style="color: #008080; font-weight: bold;">\&quot;</span>contact;permission;system-message<span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&lt;user-info attributes=<span style="color: #008080; font-weight: bold;">\&quot;</span>all<span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&lt;presence&gt;&lt;basic value=<span style="color: #008080; font-weight: bold;">\&quot;</span>400<span style="color: #008080; font-weight: bold;">\&quot;</span> desc=<span style="color: #008080; font-weight: bold;">\&quot;</span><span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&lt;/presence&gt;&lt;/args&gt;&quot;</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">/**
     *使用飞信号码和加密的密码登录飞信SIPC服务器
     **/</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $REQUEST_SIPC_LOGIN           <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;R %s SIP-C/2.0<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>F: %s<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>I: 1<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>Q: 2 R<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>A: Digest response=<span style="color: #008080; font-weight: bold;">\&quot;</span>%s<span style="color: #008080; font-weight: bold;">\&quot;</span>,cnonce=<span style="color: #008080; font-weight: bold;">\&quot;</span>%s<span style="color: #008080; font-weight: bold;">\&quot;</span><span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>L: %d<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span><span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>%s&quot;</span><span style="color: #008000;">;</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $REQUEST_SIPC_LOGIN_BODY      <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;&lt;args&gt;&lt;device type=<span style="color: #008080; font-weight: bold;">\&quot;</span>PC<span style="color: #008080; font-weight: bold;">\&quot;</span> version=<span style="color: #008080; font-weight: bold;">\&quot;</span>6<span style="color: #008080; font-weight: bold;">\&quot;</span> client-version=<span style="color: #008080; font-weight: bold;">\&quot;</span>2.3.0230<span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&lt;caps value=<span style="color: #008080; font-weight: bold;">\&quot;</span>simple-im;im-session;temp-group<span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&lt;events value=<span style="color: #008080; font-weight: bold;">\&quot;</span>contact;permission;system-message<span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&lt;user-info attributes=<span style="color: #008080; font-weight: bold;">\&quot;</span>all<span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&lt;presence&gt;&lt;basic value=<span style="color: #008080; font-weight: bold;">\&quot;</span>400<span style="color: #008080; font-weight: bold;">\&quot;</span> desc=<span style="color: #008080; font-weight: bold;">\&quot;</span><span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&lt;/presence&gt;&lt;/args&gt;&quot;</span><span style="color: #008000;">;</span>
&nbsp;
&nbsp;
    <span style="color: #008080; font-style: italic;">/**
     * 发短信
     */</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $REQUEST_SIPC_SENDSMS         <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;M %s SIP-C/2.0<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>F: %s<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>I: 2<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>Q: 1 M<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>T: %s<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>N: SendSMS<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>L: %d<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span><span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>%s&quot;</span><span style="color: #008000;">;</span>
	<span style="color: #008080; font-style: italic;">/**
	 * 退出
	 **/</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $REQUEST_SIPC_LOGOUT          <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;R %s SIP-C/2.0<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>F: %s<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>I: 1 <span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>Q: 3 R<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>X: 0<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span><span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">/**
	 * 获取好友列表
	 **/</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $REQUEST_SIPC_GetContactList      <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;S %s SIP-C/2.0<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>F: %s<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>I: 3<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>Q: 1 S<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>N: GetContactList<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>L: %d<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span><span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>%s&quot;</span> <span style="color: #008000;">;</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $REQUEST_SIPC_GetContactListBody <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;&lt;args&gt;&lt;contacts&gt;&lt;buddy-lists /&gt;&lt;buddies attributes=<span style="color: #008080; font-weight: bold;">\&quot;</span>all<span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&lt;mobile-buddies attributes=<span style="color: #008080; font-weight: bold;">\&quot;</span>all<span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&lt;chat-friends /&gt;&lt;blacklist /&gt;&lt;/contacts&gt;&lt;/args&gt;&quot;</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">/**
     * 获取好友信息
     **/</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $REQUESR_SIPC_GetContactsInfo        <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;S %s SIP-C/2.0<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>F: %s<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>I: 9<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>Q: 1 S<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>N: GetContactsInfo<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>L: %d<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span><span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>%s&quot;</span><span style="color: #008000;">;</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> $REQUESR_SIPC_GetContactsInfo_body  <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;&lt;args&gt;&lt;contacts attributes=<span style="color: #008080; font-weight: bold;">\&quot;</span>provisioning;impresa;mobile-no;nickname;name;gender;portrait-crc;ivr-enabled<span style="color: #008080; font-weight: bold;">\&quot;</span> extended-attributes=<span style="color: #008080; font-weight: bold;">\&quot;</span>score-level<span style="color: #008080; font-weight: bold;">\&quot;</span>&gt;%s&lt;/contacts&gt;&lt;/args&gt;&quot;</span> <span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">/**
     *@param $sender 短信发送者手机号
     *@param $passwd 短信发送者密码
     *@param $receiver 短信接收者手机号
     *@param $msg 短信内容
     **/</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> function __construct<span style="color: #008000;">&#40;</span>$sender, $passwd, $receiver, $msg<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        $this<span style="color: #008000;">-&gt;</span>mobile_no    <span style="color: #008000;">=</span> $sender <span style="color: #008000;">;</span>
        $this<span style="color: #008000;">-&gt;</span>fetion_pwd   <span style="color: #008000;">=</span> $passwd<span style="color: #008000;">;</span>
        $this<span style="color: #008000;">-&gt;</span>SMS_RECEIVER <span style="color: #008000;">=</span> $receiver<span style="color: #008000;">;</span>
        $this<span style="color: #008000;">-&gt;</span>SMS_TEXT     <span style="color: #008000;">=</span> $msg<span style="color: #008000;">;</span>
        $this<span style="color: #008000;">-&gt;</span>cookie_file  <span style="color: #008000;">=</span> $this<span style="color: #008000;">-&gt;</span>mobile_no <span style="color: #008000;">.</span> $this<span style="color: #008000;">-&gt;</span>cookie_file <span style="color: #008000;">;</span>
&nbsp;
		$this<span style="color: #008000;">-&gt;</span>FetionStart<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
&nbsp;
	<span style="color: #008080; font-style: italic;">/**
	 * 开始Fetion短信发送处理流程
	 *
	 */</span>
	<span style="color: #0600FF; font-weight: bold;">private</span> function FetionStart<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
		$this<span style="color: #008000;">-&gt;</span>FetionGetConfig<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// 从导航网站443端口获取登录信息</span>
		<span style="color: #0600FF; font-weight: bold;">if</span><span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>FetionSocektInit<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008080; font-style: italic;">// 初始化到SIPC的8080端口socket连接</span>
		<span style="color: #008000;">&#123;</span>
			$this<span style="color: #008000;">-&gt;</span>FetionGetSIPCNonce<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// 向服务器注册飞信号，获取关键变量值</span>
			<span style="color: #0600FF; font-weight: bold;">if</span><span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>FetionLogin<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>    <span style="color: #008080; font-style: italic;">// 发送登录认证命令</span>
				<span style="color: #0600FF; font-weight: bold;">if</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">!</span>$this<span style="color: #008000;">-&gt;</span>FetionGetContactLists<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span> <span style="color: #008080; font-style: italic;">// 取飞信用户列表</span>
					$this<span style="color: #008000;">-&gt;</span>SMS_RECEIVER <span style="color: #008000;">==</span> <span style="color: #666666;">&quot;SELF&quot;</span><span style="color: #008000;">;</span>
				<span style="color: #008000;">&#125;</span><span style="color: #008000;">;</span> 
				$this<span style="color: #008000;">-&gt;</span>FetionGetContactsInfo<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// 建立电话号码到飞信号码的映射</span>
				<span style="color: #008080; font-style: italic;">//$this-&gt;FetionSendSMS(); // 发短信!</span>
				<span style="color: #0600FF; font-weight: bold;">if</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;ALL&quot;</span> <span style="color: #008000;">==</span> $this<span style="color: #008000;">-&gt;</span>SMS_RECEIVER<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>  <span style="color: #008080; font-style: italic;">// 给飞信上所有好友发</span>
					<span style="color: #0600FF; font-weight: bold;">foreach</span><span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>fetion_ContactMapping <span style="color: #0600FF; font-weight: bold;">as</span> $sip<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
						$this<span style="color: #008000;">-&gt;</span>FetionSendSMS<span style="color: #008000;">&#40;</span>$sip<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
					<span style="color: #008000;">&#125;</span>
				<span style="color: #008000;">&#125;</span>
				elseif<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;SELF&quot;</span> <span style="color: #008000;">==</span> $this<span style="color: #008000;">-&gt;</span>SMS_RECEIVER<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span> <span style="color: #008080; font-style: italic;">// 给自己发</span>
					$this<span style="color: #008000;">-&gt;</span>FetionSendSMS<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>fetion_uri<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
				<span style="color: #008000;">&#125;</span>
				<span style="color: #0600FF; font-weight: bold;">else</span><span style="color: #008000;">&#123;</span> <span style="color: #008080; font-style: italic;">// 发给指定的手机号集合&quot;13811111111,13822222222,13833333333&quot;</span>
					$mobile_array <span style="color: #008000;">=</span> split<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;,&quot;</span> , $this<span style="color: #008000;">-&gt;</span>SMS_RECEIVER<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
					<span style="color: #0600FF; font-weight: bold;">foreach</span><span style="color: #008000;">&#40;</span>$mobile_array <span style="color: #0600FF; font-weight: bold;">as</span> $mobile<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
						$this<span style="color: #008000;">-&gt;</span>FetionSendSMS<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>fetion_ContactMapping<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;$mobile&quot;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
					<span style="color: #008000;">&#125;</span>
				<span style="color: #008000;">&#125;</span>
				$this<span style="color: #008000;">-&gt;</span>FetionLogout<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
			<span style="color: #008000;">&#125;</span>
			<span style="color: #0600FF; font-weight: bold;">else</span>
			<span style="color: #008000;">&#123;</span>
				echo <span style="color: #666666;">&quot;登录失败<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">;</span>
			<span style="color: #008000;">&#125;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0600FF; font-weight: bold;">else</span>
		<span style="color: #008000;">&#123;</span>
			echo <span style="color: #666666;">&quot;Socket 初始化失败<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">/**
     *从导航地址获取配置信息
     **/</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> function FetionGetConfig<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        $this<span style="color: #008000;">-&gt;</span>REQUEST_CONFIG <span style="color: #008000;">=</span> sprintf<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>REQUEST_CONFIG,
                                        $this<span style="color: #008000;">-&gt;</span>mobile_no<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        $this<span style="color: #008000;">-&gt;</span>curl <span style="color: #008000;">=</span> curl_init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        curl_setopt<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>curl, CURLOPT_URL, $this<span style="color: #008000;">-&gt;</span>url_nav<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        curl_setopt<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>curl, CURLOPT_SSL_VERIFYHOST, <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        curl_setopt<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>curl, CURLOPT_SSL_VERIFYPEER, <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        curl_setopt<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>curl, CURLOPT_COOKIEJAR, $this<span style="color: #008000;">-&gt;</span>cookie_file<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        curl_setopt<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>curl, CURLOPT_RETURNTRANSFER, <span style="color: #FF0000;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        curl_setopt<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>curl, CURLOPT_POST, <span style="color: #FF0000;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        curl_setopt<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>curl, CURLOPT_POSTFIELDS, $this<span style="color: #008000;">-&gt;</span>REQUEST_CONFIG<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        $xml_config <span style="color: #008000;">=</span> curl_exec<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>curl<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">// 以下是从导航页面返回的XML里取相关信息</span>
        file_put_contents<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;test3.xml&quot;</span>, $xml_config<span style="color: #008000;">&#41;</span> <span style="color: #008000;">;</span>
        $xmlDom <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> DOMDocument<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">;</span>
        $xmlDom<span style="color: #008000;">-&gt;</span>loadXML<span style="color: #008000;">&#40;</span>$xml_config<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        $fetion_server <span style="color: #008000;">=</span> $xmlDom<span style="color: #008000;">-&gt;</span>getElementsByTagName<span style="color: #008000;">&#40;</span><span style="color: #666666;">'servers'</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        $fetion_server<span style="color: #008000;">-&gt;</span>item<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">-&gt;</span>getElementsByTagName<span style="color: #008000;">&#40;</span><span style="color: #666666;">'sipc-proxy'</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">-&gt;</span>item<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">-&gt;</span>nodeValue<span style="color: #008000;">;</span>
        $this<span style="color: #008000;">-&gt;</span>SSI_PROXY_SIGN_IN  <span style="color: #008000;">=</span> $fetion_server<span style="color: #008000;">-&gt;</span>item<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">-&gt;</span>getElementsByTagName<span style="color: #008000;">&#40;</span><span style="color: #666666;">'ssi-app-sign-in'</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">-&gt;</span>item<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">-&gt;</span>nodeValue<span style="color: #008000;">;</span>
        $this<span style="color: #008000;">-&gt;</span>SSI_PROXY_SIGH_OUT <span style="color: #008000;">=</span> $fetion_server<span style="color: #008000;">-&gt;</span>item<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">-&gt;</span>getElementsByTagName<span style="color: #008000;">&#40;</span><span style="color: #666666;">'ssi-app-sign-out'</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">-&gt;</span>item<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">-&gt;</span>nodeValue<span style="color: #008000;">;</span>
        $this<span style="color: #008000;">-&gt;</span>SSI_PROXY_SIGN_IN<span style="color: #008000;">;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">// 以下获取手机号对应的飞信号</span>
        sprintf<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>REQUEST_SSI_SIGN, $this<span style="color: #008000;">-&gt;</span>mobile_no, $this<span style="color: #008000;">-&gt;</span>fetion_pwd<span style="color: #008000;">&#41;</span> <span style="color: #008000;">;</span>
        curl_setopt<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>curl, CURLOPT_URL, $this<span style="color: #008000;">-&gt;</span>SSI_PROXY_SIGN_IN<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        curl_setopt<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>curl, CURLOPT_POSTFIELDS, sprintf<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>REQUEST_SSI_SIGN, $this<span style="color: #008000;">-&gt;</span>mobile_no, $this<span style="color: #008000;">-&gt;</span>fetion_pwd<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        $Result <span style="color: #008000;">=</span> curl_exec<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>curl<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        curl_close<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>curl<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        file_put_contents<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;test4.xml&quot;</span>, $Result<span style="color: #008000;">&#41;</span> <span style="color: #008000;">;</span>
        $xmlDom<span style="color: #008000;">-&gt;</span>loadXML<span style="color: #008000;">&#40;</span>$Result<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        $uri <span style="color: #008000;">=</span> $xmlDom<span style="color: #008000;">-&gt;</span>getElementsByTagName<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;user&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">-&gt;</span>item<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">-&gt;</span>getAttribute<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;uri&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008080; font-style: italic;">//&quot;sip:738713940@fetion.com.cn;p=5914&quot;</span>
		$this<span style="color: #008000;">-&gt;</span>fetion_uri <span style="color: #008000;">=</span> $uri <span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// 发送者自己的sip</span>
        <span style="color: #0600FF; font-weight: bold;">if</span><span style="color: #008000;">&#40;</span>preg_match<span style="color: #008000;">&#40;</span><span style="color: #666666;">'/^sip:(<span style="color: #008080; font-weight: bold;">\d</span>+)@(<span style="color: #008080; font-weight: bold;">\S</span>+);.*$/'</span>, $uri, $matches<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
            $this<span style="color: #008000;">-&gt;</span>fetion_no <span style="color: #008000;">=</span> $matches<span style="color: #008000;">&#91;</span><span style="color: #FF0000;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">;</span>
            $this<span style="color: #008000;">-&gt;</span>domain_fetion <span style="color: #008000;">=</span> $matches<span style="color: #008000;">&#91;</span><span style="color: #FF0000;">2</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">/**
     *初始化Fetion通讯Socket
     **/</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> function FetionSocektInit<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
		$this<span style="color: #008000;">-&gt;</span>SIPC_PROXY<span style="color: #008000;">;</span>
        $this<span style="color: #008000;">-&gt;</span>socket <span style="color: #008000;">=</span> socket_create<span style="color: #008000;">&#40;</span>AF_INET, SOCK_STREAM, SOL_TCP<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        list<span style="color: #008000;">&#40;</span>$ip_fetion, $port_fetion<span style="color: #008000;">&#41;</span> <span style="color: #008000;">=</span> split<span style="color: #008000;">&#40;</span><span style="color: #666666;">':'</span>, $this<span style="color: #008000;">-&gt;</span>SIPC_PROXY<span style="color: #008000;">&#41;</span> <span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// &quot;221.176.31.4:8080&quot;</span>
        <span style="color: #0600FF; font-weight: bold;">return</span> socket_connect<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>socket, $ip_fetion, $port_fetion<span style="color: #008000;">&#41;</span> <span style="color: #008000;">;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">/**
     *注册飞信号码并获取临时变量NONCE和SSIC
     **/</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> function FetionGetSIPCNonce<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        $REQUEST_SIPC_SIGN_NONCE <span style="color: #008000;">=</span> sprintf<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>REQUEST_SIPC_SIGN_NONCE, $this<span style="color: #008000;">-&gt;</span>domain_fetion,
                                           $this<span style="color: #008000;">-&gt;</span>fetion_no, strlen<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>REQUEST_SIPC_SIGN_NONCE_BODY<span style="color: #008000;">&#41;</span>,
                                           $this<span style="color: #008000;">-&gt;</span>REQUEST_SIPC_SIGN_NONCE_BODY<span style="color: #008000;">&#41;</span> <span style="color: #008000;">;</span>
        $sock_data <span style="color: #008000;">=</span> socket_write<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>socket, $REQUEST_SIPC_SIGN_NONCE<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        $buf <span style="color: #008000;">=</span> <span style="color: #666666;">''</span> <span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">false</span> <span style="color: #008000;">==</span> <span style="color: #008000;">&#40;</span>$buf <span style="color: #008000;">=</span> socket_read<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>socket, <span style="color: #FF0000;">10000</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            echo <span style="color: #666666;">&quot;Line:&quot;</span> <span style="color: #008000;">.</span> __LINE__ <span style="color: #008000;">.</span> <span style="color: #666666;">&quot;socket_read() failed; reason: &quot;</span> <span style="color: #008000;">.</span> <span style="color: #0000FF;">socket_strerror</span><span style="color: #008000;">&#40;</span>socket_last_error<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>socket<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">.</span> <span style="color: #666666;">&quot;<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
        $regex_ssic <span style="color: #008000;">=</span> <span style="color: #666666;">'/.*nonce=<span style="color: #008080; font-weight: bold;">\&quot;</span>(<span style="color: #008080; font-weight: bold;">\\</span>w+)<span style="color: #008080; font-weight: bold;">\&quot;</span>.*/s'</span> <span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">if</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">!</span>preg_match<span style="color: #008000;">&#40;</span>$regex_ssic, $buf, $matches<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
            echo <span style="color: #666666;">&quot;Fetion Error: No nonce found in socket<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
        $this<span style="color: #008000;">-&gt;</span>NONCE <span style="color: #008000;">=</span> strtoupper<span style="color: #008000;">&#40;</span>trim<span style="color: #008000;">&#40;</span>$matches<span style="color: #008000;">&#91;</span><span style="color: #FF0000;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
        $regex_ssic <span style="color: #008000;">=</span> <span style="color: #666666;">'/ssic<span style="color: #008080; font-weight: bold;">\s</span>+(.*)/s'</span><span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">!</span>preg_match<span style="color: #008000;">&#40;</span>$regex_ssic, file_get_contents<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>cookie_file<span style="color: #008000;">&#41;</span>, $matches<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            echo <span style="color: #666666;">&quot;Fetion Error: No ssic found in cookie<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
        echo $this<span style="color: #008000;">-&gt;</span>SSIC <span style="color: #008000;">=</span> trim<span style="color: #008000;">&#40;</span>$matches<span style="color: #008000;">&#91;</span><span style="color: #FF0000;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">/**
     *登录飞信服务器
     **/</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> function FetionLogin<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        $this<span style="color: #008000;">-&gt;</span>RESPONSE <span style="color: #008000;">=</span> $this<span style="color: #008000;">-&gt;</span>FetionEncryptPassWD<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">;</span>
        $REQUEST_SIPC_LOGIN <span style="color: #008000;">=</span> sprintf<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>REQUEST_SIPC_LOGIN,
                                      $this<span style="color: #008000;">-&gt;</span>domain_fetion, $this<span style="color: #008000;">-&gt;</span>fetion_no,
                                      $this<span style="color: #008000;">-&gt;</span>RESPONSE, $this<span style="color: #008000;">-&gt;</span>C_NONCE,
                                      strlen<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>REQUEST_SIPC_LOGIN_BODY<span style="color: #008000;">&#41;</span>,
                                      $this<span style="color: #008000;">-&gt;</span>REQUEST_SIPC_LOGIN_BODY<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        $buf <span style="color: #008000;">=</span> <span style="color: #666666;">''</span> <span style="color: #008000;">;</span>
        $sock_data <span style="color: #008000;">=</span> socket_write<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>socket, $REQUEST_SIPC_LOGIN<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">false</span> <span style="color: #008000;">==</span> <span style="color: #008000;">&#40;</span>$buf <span style="color: #008000;">=</span> socket_read<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>socket, <span style="color: #FF0000;">10000</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            echo <span style="color: #666666;">&quot;Line:&quot;</span> <span style="color: #008000;">.</span> __LINE__ <span style="color: #008000;">.</span> <span style="color: #666666;">&quot;socket_read() failed; reason: &quot;</span> <span style="color: #008000;">.</span> <span style="color: #0000FF;">socket_strerror</span><span style="color: #008000;">&#40;</span>socket_last_error<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>socket<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">.</span> <span style="color: #666666;">&quot;<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
		<span style="color: #008080; font-style: italic;">//echo $buf,&quot;\n&quot;;</span>
        <span style="color: #0600FF; font-weight: bold;">if</span><span style="color: #008000;">&#40;</span>preg_match_all<span style="color: #008000;">&#40;</span><span style="color: #666666;">'/200/s'</span>, $buf, $matches<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">True</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span><span style="color: #0600FF; font-weight: bold;">else</span><span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">False</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
&nbsp;
	<span style="color: #008080; font-style: italic;">/**
	 * 获取飞信用户列表
	 * */</span>
	<span style="color: #0600FF; font-weight: bold;">private</span> function FetionGetContactLists<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
		echo $REQUEST_GETCONTACTLISTS <span style="color: #008000;">=</span> sprintf<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>REQUEST_SIPC_GetContactList,
				$this<span style="color: #008000;">-&gt;</span>domain_fetion,
				$this<span style="color: #008000;">-&gt;</span>fetion_no,
				strlen<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>REQUEST_SIPC_GetContactListBody<span style="color: #008000;">&#41;</span>,
				$this<span style="color: #008000;">-&gt;</span>REQUEST_SIPC_GetContactListBody<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
		$buf <span style="color: #008000;">=</span> <span style="color: #666666;">''</span> <span style="color: #008000;">;</span>
		$sock_data <span style="color: #008000;">=</span> socket_write<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>socket, $REQUEST_GETCONTACTLISTS<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
		<span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">false</span> <span style="color: #008000;">==</span> <span style="color: #008000;">&#40;</span>$buf <span style="color: #008000;">=</span> socket_read<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>socket, <span style="color: #FF0000;">10000</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
			echo <span style="color: #666666;">&quot;<span style="color: #008080; font-weight: bold;">\n</span>Line:&quot;</span> <span style="color: #008000;">.</span> __LINE__ <span style="color: #008000;">.</span> <span style="color: #666666;">&quot; socket_read() failed; reason: &quot;</span> <span style="color: #008000;">.</span> <span style="color: #0000FF;">socket_strerror</span><span style="color: #008000;">&#40;</span>socket_last_error<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>socket<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">.</span> <span style="color: #666666;">&quot;<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #008080; font-style: italic;">//echo $buf,&quot;\n\n\n&quot;;</span>
		file_put_contents<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;ContactList.txt&quot;</span>,$buf<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
		<span style="color: #0600FF; font-weight: bold;">if</span><span style="color: #008000;">&#40;</span>preg_match_all<span style="color: #008000;">&#40;</span><span style="color: #666666;">'/(sip:<span style="color: #008080; font-weight: bold;">\\</span>d+@fetion<span style="color: #008080; font-weight: bold;">\.</span>com<span style="color: #008080; font-weight: bold;">\.</span>cn;p=<span style="color: #008080; font-weight: bold;">\\</span>d+)/s'</span>,$buf,$matches<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
			$fetion_ContactList <span style="color: #008000;">=</span> $matches<span style="color: #008000;">&#91;</span><span style="color: #FF0000;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">;</span>
			<span style="color: #0600FF; font-weight: bold;">foreach</span><span style="color: #008000;">&#40;</span>$fetion_ContactList <span style="color: #0600FF; font-weight: bold;">as</span> $sip<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
				$this<span style="color: #008000;">-&gt;</span>fetion_ContactList <span style="color: #008000;">.=</span> <span style="color: #666666;">&quot;&lt;contact uri=<span style="color: #008080; font-weight: bold;">\&quot;</span>$sip<span style="color: #008080; font-weight: bold;">\&quot;</span> /&gt;&quot;</span><span style="color: #008000;">;</span>
			<span style="color: #008000;">&#125;</span>
			<span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">;</span>
	<span style="color: #008000;">&#125;</span>
&nbsp;
&nbsp;
	<span style="color: #008080; font-style: italic;">/**
	 * 获取用户信息，并建立手机号与SIP号映射关系
	 *
	 */</span>
	<span style="color: #0600FF; font-weight: bold;">private</span> function FetionGetContactsInfo<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
		$this<span style="color: #008000;">-&gt;</span>REQUESR_SIPC_GetContactsInfo_body <span style="color: #008000;">=</span> sprintf<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>REQUESR_SIPC_GetContactsInfo_body, $this<span style="color: #008000;">-&gt;</span>fetion_ContactList<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
		$REQUESR_SIPC_GetContactsInfo <span style="color: #008000;">=</span> sprintf<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>REQUESR_SIPC_GetContactsInfo,
				$this<span style="color: #008000;">-&gt;</span>domain_fetion,
				$this<span style="color: #008000;">-&gt;</span>fetion_no,
				strlen<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>REQUESR_SIPC_GetContactsInfo_body<span style="color: #008000;">&#41;</span>,
				$this<span style="color: #008000;">-&gt;</span>REQUESR_SIPC_GetContactsInfo_body
				<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
		$sock_data <span style="color: #008000;">=</span> socket_write<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>socket, $REQUESR_SIPC_GetContactsInfo<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
		<span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">false</span> <span style="color: #008000;">==</span> <span style="color: #008000;">&#40;</span>$buf <span style="color: #008000;">=</span> socket_read<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>socket, <span style="color: #FF0000;">1024</span><span style="color: #008000;">*</span><span style="color: #FF0000;">10</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
			echo <span style="color: #666666;">&quot;<span style="color: #008080; font-weight: bold;">\n</span>Line:&quot;</span> <span style="color: #008000;">.</span> __LINE__ <span style="color: #008000;">.</span> <span style="color: #666666;">&quot; socket_read() failed; reason: &quot;</span> <span style="color: #008000;">.</span> <span style="color: #0000FF;">socket_strerror</span><span style="color: #008000;">&#40;</span>socket_last_error<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>socket<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">.</span> <span style="color: #666666;">&quot;<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #008080; font-style: italic;">//echo $buf,&quot;\n\n&quot;;</span>
		file_put_contents<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;GetContactsInfo.txt&quot;</span>,$buf<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
		<span style="color: #0600FF; font-weight: bold;">if</span><span style="color: #008000;">&#40;</span>preg_match_all<span style="color: #008000;">&#40;</span><span style="color: #666666;">'/&lt;contact uri=<span style="color: #008080; font-weight: bold;">\&quot;</span>(.*?)<span style="color: #008080; font-weight: bold;">\&quot;</span>.*?mobile<span style="color: #008080; font-weight: bold;">\-</span>no=<span style="color: #008080; font-weight: bold;">\&quot;</span>(.*?)<span style="color: #008080; font-weight: bold;">\&quot;</span>.*?<span style="color: #008080; font-weight: bold;">\/</span>contact&gt;/s'</span>,$buf,$matches<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
			$total <span style="color: #008000;">=</span> count<span style="color: #008000;">&#40;</span>$matches<span style="color: #008000;">&#91;</span><span style="color: #FF0000;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
			<span style="color: #0600FF; font-weight: bold;">for</span><span style="color: #008000;">&#40;</span>$i<span style="color: #008000;">=</span><span style="color: #FF0000;">0</span><span style="color: #008000;">;</span> $i<span style="color: #008000;">&lt;</span>$total<span style="color: #008000;">;</span> $i<span style="color: #008000;">++</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
				$uri <span style="color: #008000;">=</span> $matches<span style="color: #008000;">&#91;</span><span style="color: #FF0000;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>$i<span style="color: #008000;">&#93;</span><span style="color: #008000;">;</span>
				$mobile <span style="color: #008000;">=</span> $matches<span style="color: #008000;">&#91;</span><span style="color: #FF0000;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>$i<span style="color: #008000;">&#93;</span><span style="color: #008000;">;</span>
				$this<span style="color: #008000;">-&gt;</span>fetion_ContactMapping<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;$mobile&quot;</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">=</span> $uri <span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// &quot;13811111111&quot; =&gt; &quot;sip:912534014@fetion.com.cn;p=9272&quot;</span>
			<span style="color: #008000;">&#125;</span>
			<span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0600FF; font-weight: bold;">else</span><span style="color: #008000;">&#123;</span>
			<span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
    <span style="color: #008080; font-style: italic;">/**
     *发短信
     **/</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> function FetionSendSMS<span style="color: #008000;">&#40;</span>$receiver_sip<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        <span style="color: #008080; font-style: italic;">//&quot;M %s SIP-C/2.0\r\nF: %s\r\nI: 2\r\nQ: 1 M\r\nT: tel:%s\r\nN: SendSMS\r\nL: %d\r\n\r\n%s&quot;;</span>
<span style="color: #008080; font-style: italic;">//		$receiver_mobile = $this-&gt;SMS_RECEIVER ;</span>
<span style="color: #008080; font-style: italic;">//		if(!array_key_exists($receiver_mobile,$this-&gt;fetion_ContactMapping)) return false;</span>
<span style="color: #008080; font-style: italic;">//		$receiver_sip = $this-&gt;fetion_ContactMapping[$receiver_mobile] ; // 转换手机号为&quot;sip:1212@fetion.com.cn;p=1212&quot;格式</span>
        $REQUEST_SENDSMS <span style="color: #008000;">=</span> sprintf<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>REQUEST_SIPC_SENDSMS,
                                   $this<span style="color: #008000;">-&gt;</span>domain_fetion, $this<span style="color: #008000;">-&gt;</span>fetion_no,
                                   <span style="color: #008080; font-style: italic;">// &quot;tel:&quot; . $this-&gt;SMS_RECEIVER, // &quot;tel:13822222222&quot; 方式目前已经不支持</span>
				                   $receiver_sip,  
                                   strlen<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>SMS_TEXT<span style="color: #008000;">&#41;</span>,
                                   $this<span style="color: #008000;">-&gt;</span>SMS_TEXT<span style="color: #008000;">&#41;</span> <span style="color: #008000;">;</span>
        $buf <span style="color: #008000;">=</span> <span style="color: #666666;">''</span> <span style="color: #008000;">;</span>
        $sock_data <span style="color: #008000;">=</span> socket_write<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>socket, $REQUEST_SENDSMS<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">false</span> <span style="color: #008000;">==</span> <span style="color: #008000;">&#40;</span>$buf <span style="color: #008000;">=</span> socket_read<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>socket, <span style="color: #FF0000;">1000</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            echo <span style="color: #666666;">&quot;<span style="color: #008080; font-weight: bold;">\n</span>Line:&quot;</span> <span style="color: #008000;">.</span> __LINE__ <span style="color: #008000;">.</span> <span style="color: #666666;">&quot; socket_read() failed; reason: &quot;</span> <span style="color: #008000;">.</span> <span style="color: #0000FF;">socket_strerror</span><span style="color: #008000;">&#40;</span>socket_last_error<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>socket<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">.</span> <span style="color: #666666;">&quot;<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
		<span style="color: #008080; font-style: italic;">//echo $buf,&quot;\n&quot;;</span>
        <span style="color: #0600FF; font-weight: bold;">if</span><span style="color: #008000;">&#40;</span>preg_match_all<span style="color: #008000;">&#40;</span><span style="color: #666666;">'/200/s'</span>, $buf, $matches<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">True</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span><span style="color: #0600FF; font-weight: bold;">else</span><span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">False</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">/**
     *登出飞信服务器
     **/</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> function FetionLogout<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        <span style="color: #008080; font-style: italic;">//string Logout = String.Format(FETION_SIPC_LOGOUT, FETION_DOMAIN_URL, Fetion_Number);</span>
        $FETION_SIPC_LOGOUT   <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;R %s SIP-C/2.0<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>F: %s<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>I: 1 <span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>Q: 3 R<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>X: 0<span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span><span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">;</span>
        $REQUEST_SIPC_LOGOUT <span style="color: #008000;">=</span> sprintf<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>REQUEST_SIPC_LOGOUT,
                                       $this<span style="color: #008000;">-&gt;</span>domain_fetion,
                                       $this<span style="color: #008000;">-&gt;</span>fetion_no<span style="color: #008000;">&#41;</span> <span style="color: #008000;">;</span>
        @socket_write<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>socket, $REQUEST_SIPC_LOGOUT<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        socket_close<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>socket<span style="color: #008000;">&#41;</span> <span style="color: #008000;">;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">/**
     *生成加密串,感谢CSND ycTIN的帮助！
     *@return string 加密的密码串     *
     **/</span>
&nbsp;
    <span style="color: #0600FF; font-weight: bold;">private</span> function FetionEncryptPassWD<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        $key <span style="color: #008000;">=</span> md5<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>fetion_no <span style="color: #008000;">.</span> <span style="color: #666666;">':'</span> <span style="color: #008000;">.</span> $this<span style="color: #008000;">-&gt;</span>domain_fetion <span style="color: #008000;">.</span> <span style="color: #666666;">':'</span> <span style="color: #008000;">.</span> $this<span style="color: #008000;">-&gt;</span>fetion_pwd, <span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        $h1 <span style="color: #008000;">=</span> strtoupper<span style="color: #008000;">&#40;</span>md5<span style="color: #008000;">&#40;</span>$key <span style="color: #008000;">.</span> <span style="color: #666666;">':'</span> <span style="color: #008000;">.</span> $this<span style="color: #008000;">-&gt;</span>NONCE <span style="color: #008000;">.</span> <span style="color: #666666;">':'</span> <span style="color: #008000;">.</span> $this<span style="color: #008000;">-&gt;</span>C_NONCE<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
        $h2 <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;REGISTER:&quot;</span> <span style="color: #008000;">.</span> $this<span style="color: #008000;">-&gt;</span>fetion_no <span style="color: #008000;">;</span>
        $h2 <span style="color: #008000;">=</span> strtoupper<span style="color: #008000;">&#40;</span>md5<span style="color: #008000;">&#40;</span>$h2<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
        $response <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;$h1:&quot;</span> <span style="color: #008000;">.</span> $this<span style="color: #008000;">-&gt;</span>NONCE <span style="color: #008000;">.</span> <span style="color: #666666;">&quot;:&quot;</span> <span style="color: #008000;">.</span> $h2<span style="color: #008000;">;</span>
        $response <span style="color: #008000;">=</span> strtoupper<span style="color: #008000;">&#40;</span>md5<span style="color: #008000;">&#40;</span>$response<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">return</span> $response <span style="color: #008000;">;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">/**
     *打印一下临时变量
     **/</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> function printVar<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        print <span style="color: #666666;">&quot;<span style="color: #008080; font-weight: bold;">\n</span>CNONCE:&quot;</span> <span style="color: #008000;">.</span> $this<span style="color: #008000;">-&gt;</span>C_NONCE<span style="color: #008000;">;</span>
        print <span style="color: #666666;">&quot;<span style="color: #008080; font-weight: bold;">\n</span>Domain:&quot;</span> <span style="color: #008000;">.</span> $this<span style="color: #008000;">-&gt;</span>domain_fetion<span style="color: #008000;">;</span>
        print <span style="color: #666666;">&quot;<span style="color: #008080; font-weight: bold;">\n</span>NONCE:&quot;</span> <span style="color: #008000;">.</span> $this<span style="color: #008000;">-&gt;</span>NONCE<span style="color: #008000;">;</span>
        print <span style="color: #666666;">&quot;<span style="color: #008080; font-weight: bold;">\n</span>RESPONSE:&quot;</span> <span style="color: #008000;">.</span> $this<span style="color: #008000;">-&gt;</span>RESPONSE<span style="color: #008000;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> function __destruct<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        <span style="color: #008080; font-style: italic;">//$this-&gt;FetionLogout() ;</span>
        @unlink<span style="color: #008000;">&#40;</span>$this<span style="color: #008000;">-&gt;</span>cookie_file<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// 删除cookie文件</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
$myNewFetion <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> myFetion<span style="color: #008000;">&#40;</span><span style="color: #666666;">'13800000000'</span>, <span style="color: #666666;">'abcde12345'</span>, <span style="color: #666666;">'SELF'</span>, <span style="color: #666666;">'给我自己发'</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
$myNewFetion <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> myFetion<span style="color: #008000;">&#40;</span><span style="color: #666666;">'13800000000'</span>, <span style="color: #666666;">'abcde12345'</span>, <span style="color: #666666;">'13811111111,13822222222,13833333333'</span>, <span style="color: #666666;">'大家注意了：这是一条PHP飞信短信发送类测试短信。如果你能收到，说明我的群发功能已经实现！收到请回复，Thanks！'</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
$myNewFetion <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> myFetion<span style="color: #008000;">&#40;</span><span style="color: #666666;">'13800000000'</span>, <span style="color: #666666;">'abcde12345'</span>, <span style="color: #666666;">'ALL'</span>, <span style="color: #666666;">'PHP短信拜年了！'</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
&nbsp;
<span style="color: #008080; font-style: italic;">//$myNewFetion-&gt;printVar() ;</span>
<span style="color: #008000;">?&gt;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://i.isclab.org/?feed=rss2&amp;p=101</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【原创】飞信短信发送的PHP类</title>
		<link>http://i.isclab.org/?p=43</link>
		<comments>http://i.isclab.org/?p=43#comments</comments>
		<pubDate>Wed, 17 Feb 2010 09:05:36 +0000</pubDate>
		<dc:creator>Laien</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://i.isclab.org/?p=43</guid>
		<description><![CDATA[　　程序有bug，已经更新！请参考《【原创】PHP飞信发送类的修正（感谢jjchibin）》
　　飞信发送API网上有很多，但没有多少是我自己满意的。很多网站提供基于Web的API调用方式向用户提供服务，但是作为使用者我心里还是没底。我总是担心自己的密码会被某些人记录，一直想写一个自己用的PHP版本飞信发送程序。
　　因为本人没有任何逆向基础，同时飞信版本变化不同。从nathan在百度上发布《飞信协议分析》到现在也有3年了，且当时分析的是飞信2006版本。这中间变化太多，也使得我在写PHP版本飞信发送程序是走了很多弯路。
　　我曾经拜读过superli_198的《让 PHP 程序利用飞信（Fetion）发免费短信》，但是该版本使用的通讯方式目前已经不被飞信支持，且superli_198也没有做新的更新。我也下载过c.young[@]xicabin.com的Openfetion，但是该版本存在明显bug，现在也不能正常使用。无奈只能硬着头皮修改一个C#版本的飞信发送程序。
　　在移植C#版本的飞信发送程序到PHP过程中，我遇到了一个关于MD5加密相关的问题，困了很多天。最后在CSDN论坛ycTIN的帮助下，问题得以解决。非常感谢ycTIN。 以下是我完成的PHP版飞信短信发送类，截止到2010年2月17日下午4点该程序一直能正常工作。技术上没有什么难度，发在这里和大家交流。

?Download download.txt1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
&#60;?php
/**
 *@desc 飞信短信发送类(Encoded:UTF-8)
 *使用方法：$myNewFetion = new myFetion('1381111111', 'password','1382222222', '测试消息' );
 *非常感谢CSDN论坛ycTIN在MD5加密部分的帮助!
 *本程序未做容错处理,为防止诈骗短信乱发，程序不提供添加好友功能
 *测试URL:http://i.isclab.org/tools/fetion.php
 *
 *程序运行条件：
 *1.服务器能够访问飞信服务器nav.fetion.com.cn的443端口（https）
 *2.服务器端PHP程序能够创建socket访问221.176.31.4的8080端口
 *
 *关键技术：
 *1.CURL + SSL通讯
 *2.PHP Socket编程
 *3.PHP MD5函数的深入理解
 *4.PHP DOM处理XML
 *
 *@author shadu AT foxmail DOT com /CNOS(http://bbs.ouropen.org)
 *@version 2010-02-17
 *@copyright 任意拷贝和修改！
 **/
class myFetion&#123;
    private $mobile_no   = '1381111111'; [...]]]></description>
			<content:encoded><![CDATA[<p>　　<font color="red"><b>程序有bug，已经更新！</b></font>请参考《<a href="http://i.isclab.org/?p=101">【原创】PHP飞信发送类的修正（感谢jjchibin）</a>》<br />
　　飞信发送API网上有很多，但没有多少是我自己满意的。很多网站提供基于Web的API调用方式向用户提供服务，但是作为使用者我心里还是没底。我总是担心自己的密码会被某些人记录，一直想写一个自己用的PHP版本飞信发送程序。<br />
　　因为本人没有任何逆向基础，同时飞信版本变化不同。从nathan在百度上发布《<a href="http://hi.baidu.com/nathan2007/blog/item/1ee3823422ebbdb6d1a2d376.html">飞信协议分析</a>》到现在也有3年了，且当时分析的是飞信2006版本。这中间变化太多，也使得我在写PHP版本飞信发送程序是走了很多弯路。<br />
　　我曾经拜读过superli_198的《<a href="http://www.sinoutopia.org/wp/?p=1407">让 PHP 程序利用飞信（Fetion）发免费短信</a>》，但是该版本使用的通讯方式目前已经不被飞信支持，且superli_198也没有做新的更新。我也下载过c.young[@]xicabin.com的<a href="http://openfetion.sourceforge.net/">Openfetion</a>，但是该版本存在明显bug，现在也不能正常使用。无奈只能硬着头皮修改一个<a href="http://xqin.googlecode.com/svn/trunk/Programming%20Language/C_Sharp/WebFetion/">C#版本的飞信发送程序</a>。<br />
　　在移植C#版本的飞信发送程序到PHP过程中，我遇到了一个关于MD5加密相关的问题，困了很多天。最后在CSDN论坛ycTIN的帮助下，问题得以解决。非常感谢ycTIN。 以下是我完成的PHP版飞信短信发送类，截止到2010年2月17日下午4点该程序一直能正常工作。技术上没有什么难度，发在这里和大家交流。<span id="more-43"></span></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://i.isclab.org/wp-content/plugins/wp-codebox/wp-codebox.php?p=43&amp;download=download.txt">download.txt</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p434"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
</pre></td><td class="code" id="p43code4"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #009933; font-style: italic;">/**
 *@desc 飞信短信发送类(Encoded:UTF-8)
 *使用方法：$myNewFetion = new myFetion('1381111111', 'password','1382222222', '测试消息' );
 *非常感谢CSDN论坛ycTIN在MD5加密部分的帮助!
 *本程序未做容错处理,为防止诈骗短信乱发，程序不提供添加好友功能
 *测试URL:http://i.isclab.org/tools/fetion.php
 *
 *程序运行条件：
 *1.服务器能够访问飞信服务器nav.fetion.com.cn的443端口（https）
 *2.服务器端PHP程序能够创建socket访问221.176.31.4的8080端口
 *
 *关键技术：
 *1.CURL + SSL通讯
 *2.PHP Socket编程
 *3.PHP MD5函数的深入理解
 *4.PHP DOM处理XML
 *
 *@author shadu AT foxmail DOT com /CNOS(http://bbs.ouropen.org)
 *@version 2010-02-17
 *@copyright 任意拷贝和修改！
 **/</span>
<span style="color: #000000; font-weight: bold;">class</span> myFetion<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$mobile_no</span>   <span style="color: #339933;">=</span> <span style="color: #0000ff;">'1381111111'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 发送者手机号</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$fetion_no</span>   <span style="color: #339933;">=</span> <span style="color: #0000ff;">'738713940'</span> <span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 发送者飞信号，程序自动获取</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$fetion_pwd</span>  <span style="color: #339933;">=</span> <span style="color: #0000ff;">'mypassword'</span> <span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 发送者飞信登录密码</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$cookie_file</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'cookie.txt'</span> <span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 临时存放的cookie文件</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000088;">$SMS_RECEIVER</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'1382222222'</span> <span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//  短信接收者手机号码 </span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000088;">$SMS_TEXT</span>     <span style="color: #339933;">=</span> <span style="color: #0000ff;">'sms test'</span> <span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 短信内容，支持中文</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$NONCE</span>       <span style="color: #339933;">=</span> <span style="color: #0000ff;">'AAB3238922BCC25A6F606EB525FFDC56'</span> <span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// SIPC服务器返回,每次不同</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$C_NONCE</span>     <span style="color: #339933;">=</span> <span style="color: #0000ff;">'AAB3238922BCC25A6F606EB525FFDC56'</span> <span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 是随机的，但是固定值也没关系</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$SSIC</span>        <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span> <span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// cookie中提取的变量</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$RESPONSE</span>    <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span> <span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 加密后的密钥串</span>
&nbsp;
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$url_nav</span>            <span style="color: #339933;">=</span> <span style="color: #0000ff;">'https://nav.fetion.com.cn/nav/getsystemconfig.aspx'</span> <span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 443端口获取导航信息</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$domain_fetion</span>      <span style="color: #339933;">=</span> <span style="color: #0000ff;">'fetion.com.cn'</span> <span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 飞信服务器的域名</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$SIPC_PROXY</span>         <span style="color: #339933;">=</span> <span style="color: #0000ff;">'221.176.31.4:8080'</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">//  8080端口飞信通讯占用 </span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$SSI_PROXY_SIGN_IN</span>  <span style="color: #339933;">=</span> <span style="color: #0000ff;">'https://uid.fetion.com.cn/ssiportal/SSIAppSignIn.aspx'</span> <span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 登录URL</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$SSI_PROXY_SIGH_OUT</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'http://ssi.fetion.com.cn/ssiportal/SSIAppSignOut.aspx'</span> <span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 登出URL</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$proxy_http</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'proxy.example.com:8080'</span> <span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// HTTP代理服务器地址</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$curl</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">NULL</span> <span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$socket</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">NULL</span> <span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #009933; font-style: italic;">/**
     *从导航网站获取信息
     **/</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$REQUEST_CONFIG</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&lt;config&gt;&lt;user mobile-no=<span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #009933; font-weight: bold;">%s</span><span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&lt;client type=<span style="color: #000099; font-weight: bold;">\&quot;</span>PC<span style="color: #000099; font-weight: bold;">\&quot;</span> version=<span style="color: #000099; font-weight: bold;">\&quot;</span>2.3.0230<span style="color: #000099; font-weight: bold;">\&quot;</span> platform=<span style="color: #000099; font-weight: bold;">\&quot;</span>W5.1<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&lt;servers version=<span style="color: #000099; font-weight: bold;">\&quot;</span>0<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&lt;service-no version=<span style="color: #000099; font-weight: bold;">\&quot;</span>12<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&lt;parameters version=<span style="color: #000099; font-weight: bold;">\&quot;</span>15<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&lt;hints version=<span style="color: #000099; font-weight: bold;">\&quot;</span>13<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&lt;http-applications version=<span style="color: #000099; font-weight: bold;">\&quot;</span>14<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&lt;client-config version=<span style="color: #000099; font-weight: bold;">\&quot;</span>17<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&lt;/config&gt;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #009933; font-style: italic;">/**
     *使用手机号码和密码向服务器获取对应的飞信号码信息
     **/</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$REQUEST_SSI_SIGN</span>  <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;mobileno=<span style="color: #009933; font-weight: bold;">%s</span>&amp;pwd=<span style="color: #009933; font-weight: bold;">%s</span>&quot;</span> <span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #009933; font-style: italic;">/**
     *使用飞信号码向SIPC服务器注册，获取临时变量NONCE和SSIC的值
     **/</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$REQUEST_SIPC_SIGN_NONCE</span>      <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;R <span style="color: #009933; font-weight: bold;">%s</span> SIP-C/2.0<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>F: <span style="color: #009933; font-weight: bold;">%s</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>I: 1<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>Q: 1 R<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>L: <span style="color: #009933; font-weight: bold;">%d</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span><span style="color: #009933; font-weight: bold;">%s</span>&quot;</span> <span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$REQUEST_SIPC_SIGN_NONCE_BODY</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&lt;args&gt;&lt;device type=<span style="color: #000099; font-weight: bold;">\&quot;</span>PC<span style="color: #000099; font-weight: bold;">\&quot;</span> version=<span style="color: #000099; font-weight: bold;">\&quot;</span>6<span style="color: #000099; font-weight: bold;">\&quot;</span> client-version=<span style="color: #000099; font-weight: bold;">\&quot;</span>2.3.0230<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&lt;caps value=<span style="color: #000099; font-weight: bold;">\&quot;</span>simple-im;im-session;temp-group<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&lt;events value=<span style="color: #000099; font-weight: bold;">\&quot;</span>contact;permission;system-message<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&lt;user-info attributes=<span style="color: #000099; font-weight: bold;">\&quot;</span>all<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&lt;presence&gt;&lt;basic value=<span style="color: #000099; font-weight: bold;">\&quot;</span>400<span style="color: #000099; font-weight: bold;">\&quot;</span> desc=<span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&lt;/presence&gt;&lt;/args&gt;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #009933; font-style: italic;">/**
     *使用飞信号码和加密的密码登录飞信SIPC服务器
     **/</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$REQUEST_SIPC_LOGIN</span>           <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;R <span style="color: #009933; font-weight: bold;">%s</span> SIP-C/2.0<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>F: <span style="color: #009933; font-weight: bold;">%s</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>I: 1<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>Q: 2 R<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>A: Digest response=<span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #009933; font-weight: bold;">%s</span><span style="color: #000099; font-weight: bold;">\&quot;</span>,cnonce=<span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #009933; font-weight: bold;">%s</span><span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>L: <span style="color: #009933; font-weight: bold;">%d</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span><span style="color: #009933; font-weight: bold;">%s</span>&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$REQUEST_SIPC_LOGIN_BODY</span>      <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&lt;args&gt;&lt;device type=<span style="color: #000099; font-weight: bold;">\&quot;</span>PC<span style="color: #000099; font-weight: bold;">\&quot;</span> version=<span style="color: #000099; font-weight: bold;">\&quot;</span>6<span style="color: #000099; font-weight: bold;">\&quot;</span> client-version=<span style="color: #000099; font-weight: bold;">\&quot;</span>2.3.0230<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&lt;caps value=<span style="color: #000099; font-weight: bold;">\&quot;</span>simple-im;im-session;temp-group<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&lt;events value=<span style="color: #000099; font-weight: bold;">\&quot;</span>contact;permission;system-message<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&lt;user-info attributes=<span style="color: #000099; font-weight: bold;">\&quot;</span>all<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&lt;presence&gt;&lt;basic value=<span style="color: #000099; font-weight: bold;">\&quot;</span>400<span style="color: #000099; font-weight: bold;">\&quot;</span> desc=<span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&lt;/presence&gt;&lt;/args&gt;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$REQUEST_SIPC_SENDSMS</span>         <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;M <span style="color: #009933; font-weight: bold;">%s</span> SIP-C/2.0<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>F: <span style="color: #009933; font-weight: bold;">%s</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>I: 2<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>Q: 1 M<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>T: tel:<span style="color: #009933; font-weight: bold;">%s</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>N: SendSMS<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>L: <span style="color: #009933; font-weight: bold;">%d</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span><span style="color: #009933; font-weight: bold;">%s</span>&quot;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$REQUEST_SIPC_LOGOUT</span>          <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;R <span style="color: #009933; font-weight: bold;">%s</span> SIP-C/2.0<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>F: <span style="color: #009933; font-weight: bold;">%s</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>I: 1 <span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>Q: 3 R<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>X: 0<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #009933; font-style: italic;">/**
     *@param $sender 短信发送者手机号
     *@param $passwd 短信发送者密码
     *@param $receiver 短信接收者手机号
     *@param $msg 短信内容
     **/</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #000088;">$sender</span><span style="color: #339933;">,</span> <span style="color: #000088;">$passwd</span><span style="color: #339933;">,</span> <span style="color: #000088;">$receiver</span><span style="color: #339933;">,</span> <span style="color: #000088;">$msg</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">mobile_no</span>    <span style="color: #339933;">=</span> <span style="color: #000088;">$sender</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetion_pwd</span>   <span style="color: #339933;">=</span> <span style="color: #000088;">$passwd</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SMS_RECEIVER</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$receiver</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SMS_TEXT</span>     <span style="color: #339933;">=</span> <span style="color: #000088;">$msg</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cookie_file</span>  <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">mobile_no</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cookie_file</span> <span style="color: #339933;">;</span>
        <span style="color: #990000;">file_put_contents</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cookie_file</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FetionGetConfig</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 从导航网站443端口获取登录信息</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FetionSocektInit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 初始化到SIPC的8080端口socket连接</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FetionGetSIPCNonce</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 向服务器注册飞信号，获取关键变量值</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FetionLogin</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>    <span style="color: #666666; font-style: italic;">// 发送登录认证命令</span>
            <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FetionSendSMS</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 发送短信发送命令</span>
            <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FetionLogout</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>        
    <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
    <span style="color: #009933; font-style: italic;">/**
     *从导航地址获取配置信息
     **/</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> FetionGetConfig<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">REQUEST_CONFIG</span> <span style="color: #339933;">=</span> <span style="color: #990000;">sprintf</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">REQUEST_CONFIG</span><span style="color: #339933;">,</span>
                                        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">mobile_no</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">curl</span> <span style="color: #339933;">=</span> <span style="color: #990000;">curl_init</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">curl</span><span style="color: #339933;">,</span> CURLOPT_URL<span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">url_nav</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">curl</span><span style="color: #339933;">,</span> CURLOPT_SSL_VERIFYHOST<span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">curl</span><span style="color: #339933;">,</span> CURLOPT_SSL_VERIFYPEER<span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">curl</span><span style="color: #339933;">,</span> CURLOPT_COOKIEJAR<span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cookie_file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">curl</span><span style="color: #339933;">,</span> CURLOPT_RETURNTRANSFER<span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">curl</span><span style="color: #339933;">,</span> CURLOPT_POST<span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">curl</span><span style="color: #339933;">,</span> CURLOPT_POSTFIELDS<span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">REQUEST_CONFIG</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">//curl_setopt($this-&gt;curl, CURLOPT_PROXY, $this-&gt;proxy_http); // 设置代理服务器</span>
        <span style="color: #000088;">$xml_config</span> <span style="color: #339933;">=</span> <span style="color: #990000;">curl_exec</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">curl</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// 以下是从导航页面返回的XML里取相关信息</span>
        <span style="color: #990000;">file_put_contents</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;test3.xml&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$xml_config</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$xmlDom</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> DOMDocument<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$xmlDom</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">loadXML</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$xml_config</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$fetion_server</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$xmlDom</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'servers'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$fetion_server</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">item</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sipc-proxy'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">item</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">nodeValue</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SSI_PROXY_SIGN_IN</span>  <span style="color: #339933;">=</span> <span style="color: #000088;">$fetion_server</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">item</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ssi-app-sign-in'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">item</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">nodeValue</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SSI_PROXY_SIGH_OUT</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$fetion_server</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">item</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ssi-app-sign-out'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">item</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">nodeValue</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SSI_PROXY_SIGN_IN</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// 以下获取手机号对应的飞信号</span>
        <span style="color: #990000;">sprintf</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">REQUEST_SSI_SIGN</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">mobile_no</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetion_pwd</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
        <span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">curl</span><span style="color: #339933;">,</span> CURLOPT_URL<span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SSI_PROXY_SIGN_IN</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">curl</span><span style="color: #339933;">,</span> CURLOPT_POSTFIELDS<span style="color: #339933;">,</span> <span style="color: #990000;">sprintf</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">REQUEST_SSI_SIGN</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">mobile_no</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetion_pwd</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$Result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">curl_exec</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">curl</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">curl_close</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">curl</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">file_put_contents</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;test4.xml&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$Result</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$xmlDom</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">loadXML</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$Result</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$uri</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$xmlDom</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;user&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">item</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;uri&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">//&quot;sip:738713940@fetion.com.cn;p=5914&quot;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/^sip:(\d+)@(\S+);.*$/'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$uri</span><span style="color: #339933;">,</span> <span style="color: #000088;">$matches</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetion_no</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$matches</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">;</span>
            <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">domain_fetion</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$matches</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>        
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #009933; font-style: italic;">/**
     *初始化Fetion通讯Socket
     **/</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> FetionSocektInit<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">socket</span> <span style="color: #339933;">=</span> <span style="color: #990000;">socket_create</span><span style="color: #009900;">&#40;</span>AF_INET<span style="color: #339933;">,</span> SOCK_STREAM<span style="color: #339933;">,</span> SOL_TCP<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">list</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ip_fetion</span><span style="color: #339933;">,</span> <span style="color: #000088;">$port_fetion</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">split</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">':'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SIPC_PROXY</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// &quot;221.176.31.4:8080&quot;</span>
        <span style="color: #990000;">socket_connect</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">socket</span><span style="color: #339933;">,</span> <span style="color: #000088;">$ip_fetion</span><span style="color: #339933;">,</span> <span style="color: #000088;">$port_fetion</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #009933; font-style: italic;">/**
     *注册飞信号码并获取临时变量NONCE和SSIC
     **/</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> FetionGetSIPCNonce<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$REQUEST_SIPC_SIGN_NONCE</span> <span style="color: #339933;">=</span> <span style="color: #990000;">sprintf</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">REQUEST_SIPC_SIGN_NONCE</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">domain_fetion</span><span style="color: #339933;">,</span>
                                           <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetion_no</span><span style="color: #339933;">,</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">REQUEST_SIPC_SIGN_NONCE_BODY</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
                                           <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">REQUEST_SIPC_SIGN_NONCE_BODY</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$sock_data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">socket_write</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">socket</span><span style="color: #339933;">,</span> <span style="color: #000088;">$REQUEST_SIPC_SIGN_NONCE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$buf</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span> <span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">false</span> <span style="color: #339933;">==</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$buf</span> <span style="color: #339933;">=</span> <span style="color: #990000;">socket_read</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">socket</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Line:&quot;</span> <span style="color: #339933;">.</span> <span style="color: #009900; font-weight: bold;">__LINE__</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;socket_read() failed; reason: &quot;</span> <span style="color: #339933;">.</span> <span style="color: #990000;">socket_strerror</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">socket_last_error</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">socket</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000088;">$regex_ssic</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'/.*nonce=\&quot;(\\w+)\&quot;.*/s'</span> <span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$regex_ssic</span><span style="color: #339933;">,</span> <span style="color: #000088;">$buf</span><span style="color: #339933;">,</span> <span style="color: #000088;">$matches</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Fetion Error: No nonce found in socket<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">NONCE</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strtoupper</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$matches</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000088;">$regex_ssic</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'/ssic\s+(.*)/s'</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$regex_ssic</span><span style="color: #339933;">,</span> <span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cookie_file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$matches</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Fetion Error: No ssic found in cookie<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SSIC</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$matches</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #009933; font-style: italic;">/**
     *登录飞信服务器
     **/</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> FetionLogin<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">RESPONSE</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FetionEncryptPassWD</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$REQUEST_SIPC_LOGIN</span> <span style="color: #339933;">=</span> <span style="color: #990000;">sprintf</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">REQUEST_SIPC_LOGIN</span><span style="color: #339933;">,</span>
                                      <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">domain_fetion</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetion_no</span><span style="color: #339933;">,</span>
                                      <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">RESPONSE</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">C_NONCE</span><span style="color: #339933;">,</span>
                                      <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">REQUEST_SIPC_LOGIN_BODY</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
                                      <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">REQUEST_SIPC_LOGIN_BODY</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$buf</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$sock_data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">socket_write</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">socket</span><span style="color: #339933;">,</span> <span style="color: #000088;">$REQUEST_SIPC_LOGIN</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">false</span> <span style="color: #339933;">==</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$buf</span> <span style="color: #339933;">=</span> <span style="color: #990000;">socket_read</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">socket</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Line:&quot;</span> <span style="color: #339933;">.</span> <span style="color: #009900; font-weight: bold;">__LINE__</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;socket_read() failed; reason: &quot;</span> <span style="color: #339933;">.</span> <span style="color: #990000;">socket_strerror</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">socket_last_error</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">socket</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match_all</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/200/s'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$buf</span><span style="color: #339933;">,</span> <span style="color: #000088;">$matches</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">True</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">False</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #009933; font-style: italic;">/**
     *发短信
     **/</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> FetionSendSMS<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">//&quot;M %s SIP-C/2.0\r\nF: %s\r\nI: 2\r\nQ: 1 M\r\nT: tel:%s\r\nN: SendSMS\r\nL: %d\r\n\r\n%s&quot;;</span>
        <span style="color: #000088;">$REQUEST_SENDSMS</span> <span style="color: #339933;">=</span> <span style="color: #990000;">sprintf</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">REQUEST_SIPC_SENDSMS</span><span style="color: #339933;">,</span>
                                   <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">domain_fetion</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetion_no</span><span style="color: #339933;">,</span>
                                   <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SMS_RECEIVER</span><span style="color: #339933;">,</span>
                                   <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SMS_TEXT</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
                                   <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SMS_TEXT</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$buf</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$sock_data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">socket_write</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">socket</span><span style="color: #339933;">,</span> <span style="color: #000088;">$REQUEST_SENDSMS</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">false</span> <span style="color: #339933;">==</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$buf</span> <span style="color: #339933;">=</span> <span style="color: #990000;">socket_read</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">socket</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Line:&quot;</span> <span style="color: #339933;">.</span> <span style="color: #009900; font-weight: bold;">__LINE__</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot; socket_read() failed; reason: &quot;</span> <span style="color: #339933;">.</span> <span style="color: #990000;">socket_strerror</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">socket_last_error</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">socket</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match_all</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/200/s'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$buf</span><span style="color: #339933;">,</span> <span style="color: #000088;">$matches</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">True</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">False</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #009933; font-style: italic;">/**
     *登出飞信服务器
     **/</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> FetionLogout<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">//string Logout = String.Format(FETION_SIPC_LOGOUT, FETION_DOMAIN_URL, Fetion_Number);</span>
        <span style="color: #000088;">$FETION_SIPC_LOGOUT</span>   <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;R <span style="color: #009933; font-weight: bold;">%s</span> SIP-C/2.0<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>F: <span style="color: #009933; font-weight: bold;">%s</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>I: 1 <span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>Q: 3 R<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>X: 0<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$REQUEST_SIPC_LOGOUT</span> <span style="color: #339933;">=</span> <span style="color: #990000;">sprintf</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">REQUEST_SIPC_LOGOUT</span><span style="color: #339933;">,</span>
                                       <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">domain_fetion</span><span style="color: #339933;">,</span>
                                       <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetion_no</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
        <span style="color: #990000;">socket_write</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">socket</span><span style="color: #339933;">,</span> <span style="color: #000088;">$REQUEST_SIPC_LOGOUT</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">socket_close</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">socket</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>        
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #009933; font-style: italic;">/**
     *生成加密串,感谢CSND ycTIN的帮助！
     *@return string 加密的密码串     *
     **/</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> FetionEncryptPassWD<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$key</span> <span style="color: #339933;">=</span> <span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetion_no</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">':'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">domain_fetion</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">':'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetion_pwd</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$h1</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strtoupper</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$key</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">':'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">NONCE</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">':'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">C_NONCE</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000088;">$h2</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;REGISTER:&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetion_no</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$h2</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strtoupper</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$h2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000088;">$response</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$h1</span>:&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">NONCE</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;:&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$h2</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$response</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strtoupper</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$response</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">return</span> <span style="color: #000088;">$response</span> <span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #009933; font-style: italic;">/**
     *打印一下临时变量
     **/</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> printVar<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">print</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>CNONCE:&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">C_NONCE</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">print</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Domain:&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">domain_fetion</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">print</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>NONCE:&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">NONCE</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">print</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>RESPONSE:&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">RESPONSE</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __destruct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">//$this-&gt;FetionLogout() ;</span>
        <span style="color: #339933;">@</span><span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cookie_file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 删除cookie文件</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$myNewFetion</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> myFetion<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'13811111111'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'password'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'13822222222'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'飞信测试'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//$myNewFetion-&gt;printVar() ;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>　　 为方便大家测试，这里提供一个<a href="http://i.isclab.org/tools/fetion.php">飞信发送测试URL</a>。本人只能承诺不留存密码，信不信只能看测试者了。<br />
附测试过程中XML截图1：<br />
<a href="http://i.isclab.org/wp-content/uploads/2010/02/CMCC-飞信发送-PHP类-导航信息.png"><img src="http://i.isclab.org/wp-content/uploads/2010/02/CMCC-飞信发送-PHP类-导航信息-300x112.png" alt="" title="CMCC-飞信发送-PHP类-导航信息" width="300" height="112" class="alignnone size-medium wp-image-44" /></a></p>
<p>测试过程中XML截图2：<br />
<a href="http://i.isclab.org/wp-content/uploads/2010/02/CMCC-飞信发送-PHP类-用户配置信息.png"><img src="http://i.isclab.org/wp-content/uploads/2010/02/CMCC-飞信发送-PHP类-用户配置信息-300x39.png" alt="" title="CMCC-飞信发送-PHP类-用户配置信息" width="300" height="39" class="alignnone size-medium wp-image-45" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://i.isclab.org/?feed=rss2&amp;p=43</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【原创】图片Email——安全共享你的联系方式</title>
		<link>http://i.isclab.org/?p=23</link>
		<comments>http://i.isclab.org/?p=23#comments</comments>
		<pubDate>Sun, 24 Jan 2010 08:46:36 +0000</pubDate>
		<dc:creator>Laien</dc:creator>
				<category><![CDATA[Information Security]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://i.isclab.org/?p=23</guid>
		<description><![CDATA[　　相信很多朋友都有这样的遭遇：因为在论坛或贴吧共享过自己的Email等联系方式，结果导致自己的邮箱被垃圾邮件填满。更有甚者自己的手机号被机器人收集，导致常常半夜被叫醒~
　　鉴于很多朋友的痛苦经历和我本人长期以来的想法，我做了个图片Email生成程序。今后大家在论坛发帖共享自己的联系方式时可以考虑使用该程序。使用方法很简单，访问http://i.isclab.org/e.php。输入Email地址后程序会为你生成动态的图片地址。然后拿着这个地址到论坛当图片插入到帖子里就行了！如图：
    
　　完整程序代码如下：

?View Code PHP&#60;?
/**
 *@desc 将Email地址转换成图片，防止被机器人爬到。
 *关键技术：
 *1.PHP GD（Graphics Draw）的使用
 *2.CURL调用ISGD短网址API
 *3.如果图片生成失败，请确认同级目录是否有字体文件cambriab.ttf
 *@auth shadu###foxmail.com
 *@version 2010-01-24 16:19
 *
 **/
&#160;
$example = base64_encode&#40;'user@example.com'&#41;;
&#160;
// POST数据，用户要生成图片
if&#40;isset&#40;$_POST&#91;'tag'&#93;&#41; &#38;&#38; &#34;1&#34; == $_POST&#91;'tag'&#93;&#41;&#123;
    if&#40;isset&#40;$_POST&#91;'emailInput'&#93;&#41; &#38;&#38; 0 &#60; strlen&#40;$_POST&#91;'emailInput'&#93;&#41;&#41;&#123;
        $example = base64_encode&#40;$_POST&#91;'emailInput'&#93;&#41; ;
    &#125;
    [...]]]></description>
			<content:encoded><![CDATA[<p>　　相信很多朋友都有这样的遭遇：因为在论坛或贴吧共享过自己的Email等联系方式，结果导致自己的邮箱被垃圾邮件填满。更有甚者自己的手机号被机器人收集，导致常常半夜被叫醒~<br />
　　鉴于很多朋友的痛苦经历和我本人长期以来的想法，我做了个图片Email生成程序。今后大家在论坛发帖共享自己的联系方式时可以考虑使用该程序。使用方法很简单，访问<a href="http://i.isclab.org/e.php" title="图片Email，安全你的联系方式">http://i.isclab.org/e.php</a>。输入Email地址后程序会为你生成动态的图片地址。然后拿着这个地址到论坛当图片插入到帖子里就行了！如图：<br />
    <a href="http://i.isclab.org/wp-content/uploads/2010/01/sec-your-email.png"><img src="http://i.isclab.org/wp-content/uploads/2010/01/sec-your-email-300x242.png" alt="图片Email-安全你的联系方式" title="sec-your-email" width="300" height="242" class="alignnone size-medium wp-image-24" /></a><br />
　　完整程序代码如下：<span id="more-23"></span></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code6'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p236"><td class="code" id="p23code6"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span>
<span style="color: #009933; font-style: italic;">/**
 *@desc 将Email地址转换成图片，防止被机器人爬到。
 *关键技术：
 *1.PHP GD（Graphics Draw）的使用
 *2.CURL调用ISGD短网址API
 *3.如果图片生成失败，请确认同级目录是否有字体文件cambriab.ttf
 *@auth shadu###foxmail.com
 *@version 2010-01-24 16:19
 *
 **/</span>
&nbsp;
<span style="color: #000088;">$example</span> <span style="color: #339933;">=</span> <span style="color: #990000;">base64_encode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'user@example.com'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// POST数据，用户要生成图片</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'tag'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #0000ff;">&quot;1&quot;</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'tag'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'emailInput'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #cc66cc;">0</span> <span style="color: #339933;">&lt;</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'emailInput'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$example</span> <span style="color: #339933;">=</span> <span style="color: #990000;">base64_encode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'emailInput'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    showInput<span style="color: #009900;">&#40;</span><span style="color: #000088;">$example</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
    <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// GET数据，论坛在调用图片</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'e'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">255</span> <span style="color: #339933;">&lt;</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'e'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #cc66cc;">2</span> <span style="color: #339933;">&gt;</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'e'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// 恶意提交</span>
        showInput<span style="color: #009900;">&#40;</span><span style="color: #000088;">$example</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
        <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <span style="color: #990000;">base64_decode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'e'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">255</span> <span style="color: #339933;">&lt;</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #cc66cc;">2</span> <span style="color: #339933;">&gt;</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// 恶意提交</span>
        showInput<span style="color: #009900;">&#40;</span><span style="color: #000088;">$example</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
        <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    showImage<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
    <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
    showInput<span style="color: #009900;">&#40;</span><span style="color: #000088;">$example</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
    <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> showInput<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span> <span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">''</span> <span style="color: #339933;">!=</span> <span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;SERVER_NAME&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;SCRIPT_NAME&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;?e=<span style="color: #006699; font-weight: bold;">$str</span>&quot;</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&lt;div style=<span style="color: #000099; font-weight: bold;">\&quot;</span>width:500px;<span style="color: #000099; font-weight: bold;">\&quot;</span> align=<span style="color: #000099; font-weight: bold;">\&quot;</span>left<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&quot;</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$result</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;论坛博客贴图地址:&lt;br/&gt;&quot;</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$result</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;&lt;input name=<span style="color: #000099; font-weight: bold;">\&quot;</span>secemail<span style="color: #000099; font-weight: bold;">\&quot;</span> type=<span style="color: #000099; font-weight: bold;">\&quot;</span>text<span style="color: #000099; font-weight: bold;">\&quot;</span> readonly value=<span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #006699; font-weight: bold;">$str</span>#e.png<span style="color: #000099; font-weight: bold;">\&quot;</span> size=<span style="color: #000099; font-weight: bold;">\&quot;</span>80<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&quot;</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$result</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;&lt;br/&gt;&lt;br/&gt;&lt;a href=<span style="color: #000099; font-weight: bold;">\&quot;</span>http://is.gd/<span style="color: #000099; font-weight: bold;">\&quot;</span> target=<span style="color: #000099; font-weight: bold;">\&quot;</span>_blank<span style="color: #000099; font-weight: bold;">\&quot;</span> &gt;ISGD&lt;/a&gt;短网址:&lt;br/&gt;&quot;</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$result</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;&lt;input name=<span style="color: #000099; font-weight: bold;">\&quot;</span>secemail<span style="color: #000099; font-weight: bold;">\&quot;</span> type=<span style="color: #000099; font-weight: bold;">\&quot;</span>text<span style="color: #000099; font-weight: bold;">\&quot;</span> readonly value=<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span> <span style="color: #339933;">.</span> isGod<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span> size=<span style="color: #000099; font-weight: bold;">\&quot;</span>40<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&lt;br/&gt;&quot;</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$result</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;部分网站（如百度）不支持此类URL，可以使用&lt;br/&gt;&lt;font color=<span style="color: #000099; font-weight: bold;">\&quot;</span>red<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;http://http://is.gd/6UzzI#.png&lt;/font&gt;&lt;br/&gt;的方式贴图:)&quot;</span> <span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000088;">$result</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;&lt;br/&gt;&lt;br/&gt;HTML插图代码：&quot;</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$result</span> <span style="color: #339933;">.=</span> <span style="color: #990000;">htmlentities</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&lt;img src=<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span> <span style="color: #339933;">.</span> isGod<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$result</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;&lt;div name=<span style="color: #000099; font-weight: bold;">\&quot;</span>preview<span style="color: #000099; font-weight: bold;">\&quot;</span> style=<span style="color: #000099; font-weight: bold;">\&quot;</span>margin-top:30px;<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&quot;</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$result</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;安全联系方式效果图（效果不理想的话请在字符前后多加几个空格）:&lt;br/&gt;&lt;img src=<span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #006699; font-weight: bold;">$str</span><span style="color: #000099; font-weight: bold;">\&quot;</span> alt=<span style="color: #000099; font-weight: bold;">\&quot;</span>反垃圾邮件，安全你的Email<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&lt;/dvi&gt;&quot;</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$result</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;&lt;/div&gt;&quot;</span> <span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000088;">$strHtml</span> <span style="color: #339933;">=</span> <span style="color: #0000cc; font-style: italic;">&lt;&lt;&lt;EOT
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;创建安全联系方式-图片Email&lt;/title&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;安全联系方式,图片Email,email防护,隐私保护,安全Email&quot; /&gt;
&lt;meta name=&quot;description&quot; content=&quot;在网络上可以安全使用的联系方式&quot; /&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div name=&quot;create&quot; align=&quot;center&quot; style=&quot;margin-top:20px;&quot;&gt;
    &lt;font color=&quot;blue&quot; size=&quot;10&quot;&gt;&lt;b&gt;Sec your email!&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;
    &lt;form name=&quot;createimge&quot; method=&quot;post&quot; action=&quot;e.php&quot;&gt;请输入您的Email:
        &lt;input name=&quot;emailInput&quot; value=&quot;user@example.com&quot; type=&quot;text&quot; /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
        &lt;input name=&quot;creatButton&quot; value=&quot;生成安全Email&quot; type=&quot;submit&quot; /&gt;
        &lt;input name=&quot;tag&quot; value=&quot;1&quot; type=&quot;hidden&quot; /&gt;
    &lt;/form&gt;
&lt;/div&gt;
&nbsp;
&lt;div name=&quot;result&quot; align=&quot;center&quot; style=&quot;margin-top:50px;&quot;&gt;
    $result
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
EOT</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$strHtml</span> <span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> showImage<span style="color: #009900;">&#40;</span><span style="color: #000088;">$msg</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// 声明生成PNG图片</span>
    <span style="color: #990000;">Header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Content-type: image/PNG&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">// 生成一个图片</span>
    <span style="color: #000088;">$img</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> MSG2PNG<span style="color: #009900;">&#40;</span><span style="color: #000088;">$msg</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">//$img-&gt;strFontName = &quot;simhei.ttf&quot; ; // 设置中文字体</span>
    <span style="color: #000088;">$img</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">createImage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009933; font-style: italic;">/**
 *@desc 这是一个类：用于将指定字符串写入图片
 *@auth shadu###foxmail.com
 *@version 2010-01-24 10:25
 *@useage $img = new MSG2PNG(&quot;user@example.com&quot;) ;
 *        $img-&gt;createImage();
 */</span>
<span style="color: #000000; font-weight: bold;">class</span> MSG2PNG<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span>  <span style="color: #000088;">$strMessageBody</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;user@example.com&quot;</span> <span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 要写入的字符串</span>
    <span style="color: #000000; font-weight: bold;">public</span>  <span style="color: #000088;">$strFontName</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;cambriab.ttf&quot;</span> <span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">public</span>  <span style="color: #000088;">$intFontSize</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">20</span> <span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">public</span>  <span style="color: #000088;">$intSize</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">260</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">70</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">public</span>  <span style="color: #000088;">$rgbBackGroundColor</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xFF</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xFF</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xFF</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">public</span>  <span style="color: #000088;">$rgbFontColor</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x28</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">public</span>  <span style="color: #000088;">$rgbNoisePointColor</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0x20</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x20</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x20</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">public</span>  <span style="color: #000088;">$rgbNoiseLinesColor</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #208080;">0xA0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xA0</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xA0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">public</span>  <span style="color: #000088;">$intNoiseNum</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">3000</span> <span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">public</span>  <span style="color: #000088;">$intLinesNum</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">50</span> <span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">public</span>  <span style="color: #000088;">$intAngle</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">10</span> <span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">public</span>  <span style="color: #000088;">$intPosition</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">60</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$imgImage</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">NULL</span> <span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #000088;">$strMessage</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;user@example.com&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">strMessageBody</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$strMessage</span> <span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">//以下数行仅供参考，我是用来设置图片大小和噪音数量的，不是很准确。</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intSize</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">strMessageBody</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">15</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intSize</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">strMessageBody</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">15</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">70</span> <span style="color: #339933;">/</span><span style="color: #cc66cc;">260</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intPosition</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intSize</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">60</span> <span style="color: #339933;">/</span> <span style="color: #cc66cc;">70</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intNoiseNum</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">3000</span> <span style="color: #339933;">*</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intSize</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">/</span> <span style="color: #cc66cc;">260</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intLinesNum</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">50</span> <span style="color: #339933;">*</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intSize</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">/</span> <span style="color: #cc66cc;">260</span> <span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> setColor<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #009900; font-weight: bold;">NULL</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">imgImage</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #339933;">;</span> 
        <span style="color: #990000;">imagecolorallocate</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">imgImage</span><span style="color: #339933;">,</span>
                           <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rgbBackGroundColor</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
                           <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rgbBackGroundColor</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
                           <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rgbBackGroundColor</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> createNoise<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">//Create noise points and lines</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #009900; font-weight: bold;">NULL</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">imgImage</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #339933;">;</span>        
        <span style="color: #000088;">$imgNoisePointColor</span> <span style="color: #339933;">=</span> <span style="color: #990000;">imagecolorallocate</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">imgImage</span><span style="color: #339933;">,</span>
                                                 <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rgbNoisePointColor</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
                                                 <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rgbNoisePointColor</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
                                                 <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rgbNoisePointColor</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$imgNoiseLinesColor</span> <span style="color: #339933;">=</span> <span style="color: #990000;">imagecolorallocate</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">imgImage</span><span style="color: #339933;">,</span>
                                                 <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rgbNoiseLinesColor</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
                                                 <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rgbNoiseLinesColor</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
                                                 <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rgbNoiseLinesColor</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
        <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">&lt;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intNoiseNum</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
            <span style="color: #990000;">imagesetpixel</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">imgImage</span><span style="color: #339933;">,</span>
                          <span style="color: #990000;">mt_rand</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intSize</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
                          <span style="color: #990000;">mt_rand</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intSize</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
                          <span style="color: #000088;">$imgNoisePointColor</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">&lt;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intLinesNum</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
            <span style="color: #990000;">imageline</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">imgImage</span><span style="color: #339933;">,</span>
                      <span style="color: #990000;">mt_rand</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intSize</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #990000;">mt_rand</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intSize</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> 
                      <span style="color: #990000;">mt_rand</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intSize</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #990000;">mt_rand</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intSize</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> 
                      <span style="color: #000088;">$imgNoiseLinesColor</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> createFont<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #009900; font-weight: bold;">NULL</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">imgImage</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$imgFontColor</span> <span style="color: #339933;">=</span> <span style="color: #990000;">imagecolorallocate</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">imgImage</span><span style="color: #339933;">,</span>
                                           <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rgbFontColor</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
                                           <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rgbFontColor</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
                                           <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rgbFontColor</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
        <span style="color: #990000;">ImageTTFText</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">imgImage</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intFontSize</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intAngle</span><span style="color: #339933;">,</span>
                     <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intPosition</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intPosition</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
                     <span style="color: #000088;">$imgFontColor</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">strFontName</span><span style="color: #339933;">,</span>
                     <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">strMessageBody</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> createImage<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">imgImage</span> <span style="color: #339933;">=</span> <span style="color: #990000;">imagecreate</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intSize</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">intSize</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setColor</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">createNoise</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">createFont</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
        <span style="color: #990000;">ImagePNG</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">imgImage</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __destruct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #009900; font-weight: bold;">NULL</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">imgImage</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #339933;">;</span>
        <span style="color: #990000;">ImageDestroy</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">imgImage</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
 *@desc 从isgod网站获取指定URL的短路径
 **/</span>
<span style="color: #000000; font-weight: bold;">function</span> isGod<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$content</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span> <span style="color: #339933;">;</span>
    <span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://is.gd/api.php?longurl=<span style="color: #006699; font-weight: bold;">$str</span>&quot;</span> <span style="color: #339933;">;</span>
    <span style="color: #000088;">$ch</span> <span style="color: #339933;">=</span> <span style="color: #990000;">curl_init</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
    <span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_URL<span style="color: #339933;">,</span> <span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span>  CURLOPT_RETURNTRANSFER<span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
    <span style="color: #000088;">$content</span> <span style="color: #339933;">=</span> <span style="color: #990000;">curl_exec</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">curl_close</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$content</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>　　本程序使用的字体文件<a href="http://i.isclab.org/cambriab.ttf">cambriab.ttf</a></p>
]]></content:encoded>
			<wfw:commentRss>http://i.isclab.org/?feed=rss2&amp;p=23</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
