.


:




:

































 

 

 

 


ә: Web-қ ә




Web-қ қ HTML ә XML құң қғ www- ұ ң ғ ү . Қ ң қ ү ө JavaScript қ, ұ әғ ө. java Flash- құғ , ұ қ web-қ ққ , ө, ү java Flash өң қ , ғ HTTP WWW ү қ.

Web-қ құ ϳ (қ ү,), ұ ә өң ө . Web- құң ұ ғ ү ү . , ө ң қ қ-қ қ ( қ ( )), ұң ө ү ұғ . ұ қң ғ ғ ғ ө ғ .

CGI-

WWW ү қ құң қ CGI- ( ). CGI (Common Gateway Interface, ) ұ қ қ ң ө ә . WWW ғ, - қ қ ү ұ ү. ұ - әң ( ө қ ү), қ (, ә, ә ғ қ)

қғ - қ ғ қ , ә, ISINDEX ү ә қ ( sys.argv қ қ .).

ғ - ң (ә CGI-) ә ң ә GET ә POST. Ә ә ә ү . ғ URL- ә , http://host/cgibin/a.cgi?a=1&b=3. QUERY_STRING ң . POST ә ғ .

ұ ұ ү ү ғ - (ә cgi-bin ) , ұ ұқ , HTML құң . ң . Unix ү chmod a+x қ ғ .

қ os.environ ө ә ғ ә ғ ө ү .

#!/usr/bin/python

import os

print """Content-Type: text/plain

%s""" % os.environ

ң ө - ғ ө . web- CGI- қ ө қ, ұ -қ ө ө (ұ ү, құң ңғ ңғ қ, ә ..).

ү :

QUERY_STRING

ұ .

 

REMOTE_ADDR

IP-.

 

REMOTE_USER

( ғ ).

 

SCRIPT_NAME

.

 

SCRIPT_FILENAME

.

 

SERVER_NAME

.

 

HTTP_USER_AGENT

ң .

 

REQUEST_URI

(URI) ұ.

 

HTTP_USER_AGENT

.

 

HTTP_ACCEPT_LANGUAGE

Қ құ .

 

CGI- os.environ ө қ:

{

'DOCUMENT_ROOT': '/var/www/html',

'SERVER_ADDR': '127.0.0.1',

'SERVER_PORT': '80',

'GATEWAY_INTERFACE': 'CGI/1.1',

'HTTP_ACCEPT_LANGUAGE': 'en-us, en;q=0.50',

'REMOTE_ADDR': '127.0.0.1',

'SERVER_NAME': 'rnd.onego.ru',

'HTTP_CONNECTION': 'close',

'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; U; Linux i586; en-US;

rv:1.0.1) Gecko/20021003',

'HTTP_ACCEPT_CHARSET': 'ISO-8859-1, utf-8;q=0.66, *;q=0.66',

'HTTP_ACCEPT': 'text/xml,application/xml,application/xhtml+xml,

text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,

image/gif;q=0.2,text/css,*/*;q=0.1',

'REQUEST_URI': '/cgi-bin/test.py?a=1',

'PATH': '/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin',

'QUERY_STRING': 'a=1&b=2',

'SCRIPT_FILENAME': '/var/www/cgi-bin/test.py',

'HTTP_KEEP_ALIVE': '300',

'HTTP_HOST': 'localhost',

'REQUEST_METHOD': 'GET',

'SERVER_SIGNATURE': 'Apache/1.3.23 Server at rnd.onego.ru Port 80',

'SCRIPT_NAME': '/cgi-bin/test.py',

'SERVER_ADMIN': 'root@localhost',

'SERVER_SOFTWARE': 'Apache/1.3.23 (Unix) (Red-Hat/Linux)

mod_python/2.7.8 Python/1.5.2 PHP/4.1.2',

'SERVER_PROTOCOL': 'HTTP/1.0',

'REMOTE_PORT': '39251'

}

CGI- қ ( өң ү Image қ):

#!/usr/bin/python

 

import sys

print """Content-Type: image/jpeg

"""

 

import Image

i = Image.new("RGB", (10,10))

i.im.draw_rectangle((0,0,10,10), 1)

i.save(sys.stdout, "jpeg")

Cgi

Python- cgi ү CGI қ . ң ү ө:

#!/usr/bin/python

# -*- coding: cp1251 -*-

import cgi, os

 

# ұ

f = cgi.FieldStorage()

if f.has_key("a"):

a = f["a"].value

else:

a = "0"

# ұ өң

b = str(int(a)+1)

mytext = open(os.environ["SCRIPT_FILENAME"]).read()

mytext_html = cgi.escape(mytext)

 

# қ

print """Content-Type: text/html

 

<html><head><title>ң : %(b)s = %(a)s + 1</title></head>

<body>

%(b)s

<table width="80%%"><tr><td>

<form action="me.cgi" method="GET">

<input type="text" name="a" value="0" size="6">

<input type="submit" name="b" value="Өң">

</form></td></tr></table>

<pre>

%(mytext_html)s

</pre>

</body></html>""" % vars()

 

ұ 1 қ. қ ө ң қ ғ. ө қ, >, <, & ү cgi.escape() қғ. - қ ү қғ. ө ү, қ vars() ө қғ. ү ү, . ә қ қ ғ қ. FieldStorage ө қ, , ә ә ү value қ қ ғ . ә, ә ә ғ , қ , -қ ә ө ә.

ң!

CGI-ң ә өң ұқ ә ұқ ә ұқ . . ң ң ә ү ғ ғ . , қ ғ ә, eval() ң ә ғ ұқ; қ ң ; қ SQL-ұң ө қң қ қ. -қ, ғ ә қ қң қ қ, URL- ғ ө , әң ғ қ- ғ ғ .

ғ қғ int() қ ү : қ ә , ү қ , қ Internal Server Error ө .

ʳ ә ң өң . CGI-ң ұ ө ә ғ ү . ұ ң ә ғ , -қ ң ққ қ, ө ұ ә ү.

Ә, ң (әң, HTML-құң, ң, -ң ә ..) ғ . ң, қ ( ң ө), ң ұ ң.

ұ ғ ұ. ү ә . қ ә getlist() ә ө ғ .

lst = form.getlist("fld")

lst - ғ fld қ ө , ә қ ( ү, ө ).

ғ қ (upload-). ә ғ ұ ү ө.

#!/usr/bin/env python

import cgi

form = cgi.FieldStorage()

file_contents = ""

if form.has_key("filename"):

fileitem = form["filename"]

if fileitem.file:

file_contents = """<P> :

<PRE>%s</PRE>""" % fileitem.file.read()

print """Content-Type: text/html

<HTML><HEAD><TITLE> </TITLE></HEAD>

<BODY><H1> </H1>

<P><FORM ENCTYPE="multipart/form-data"

ACTION="getfile.cgi" METHOD="POST">

<br>: <INPUT TYPE="file" NAME="filename">

<br><INPUT TYPE="submit" NAME="button" VALUE=" ">

</FORM>

%s

</BODY></HTML>""" % file_contents

ң ң - қ : ә CGI- ү қғ ғ. - "Browse" ү қ ұ, file ү ө . "Browse" ү қ, қң - қ, ң. , ү, ү .

CGI-ң ө ү cgitb қғ . Қ ғ ұ қ ө , қғ HTML- ғ. ө ң қ

import cgitb

cgitb.enable(1)

, қ ө :

import cgitb

cgitb.enable(0, logdir="/tmp")

қ, ө , ұ , ө ң ө ғ. ұ , CGI-ң ұ құ ө ө, ү.

CGI- ?

Ө , құ ә CGI ққ ң өң , ө қ. Ө ә ұ ү қ ( - Python ) , ү, қ ә .. Python ң қ , ғ қ ң ү ү ә ү.

қ, ә қ қ .

ұ ә ә, -- құ, ү.

CGI ұ ү әү қ, FastCGI PCGI (Persistent CGI). ә mod_python Apache web- ү қ.

құ ұққғ ә, - ғ .

mod_python -өң Apache HTTP-ұң өң ү ү , қ .

ң , -өң ұ . ұ /var/www/html/mywebdir . -, ұ mod_python ү, Apache :

<Directory "/var/www/html/mywebdir>

AddHandler python-program.py

PythonHandler mprocess

</Directory>

- қ қ, ә қ қ, mprocess.py өң ғ . ұ http://localhost/*.py ү ұғ .

mprocess.py Hello, world! ө ғ:

from mod_python import apache

def handler(req):

req.content_type = "text/html"

req.send_http_header()

req.write("""<HTML><HEAD><TITLE>Hello, world!</TITLE></HEAD>

<BODY>Hello, world!</BODY></HTML>""")

return apache.OK

CGI- өңң ғ:

1. өң ә HTTP-ұ қ: қ, ә -өң қ ( ұ ғ- handler()). Ә -ң ү-ұқ (-) өң ө ә Python .

2. ң ә .1 әү HTTP-ұ һқ ө. , қ ғ ә қ ұ қғ .

3. Өң ң қ, CGI- ә қ қ.

4. Өң қ ө . sys.path- қ ү.

5. ғғ ұ ( os.getcwd() ө ) өң ғ.

6. #!- ң Python ң ұқ қ. mod_python- құғ ұқ ұ .

7. қ қ Request- ү өң . Қ ә қ .

8. - өң ң ө қ, қ ғ ө қ . touch mprocess.py ң ө ү ң.

9. os.environ ө өң қғ ү. қ, өң қғ қ ғ ұ. қ ғ : req.add_common_vars(); params = req.subprocess_env.

10. Өң ғқ, CGI- қ, ғ қ ң (ғ ) ү. MaxRequestsPerChild ң ( ү-ұқ өң, ұң ) ә ө қ қ.

ғ ү өң ң :

def authenhandler(req):

password = req.get_basic_auth_pw()

user = req.connection.user

if user == "user1" and password == "secret":

return apache.OK

else:

return apache.HTTP_UNAUTHORIZED

ұ , қғ, mprocess.py қ . қ, ұ (PythonAuthenHandler) ү өң ғ , қ қ, -қ, ә Apache ү AuthType,AuthName, require , ә қ:

<Directory "/var/www/html/mywebdir>

AddHandler python-program.py

PythonHandler mprocess

PythonAuthenHandler mprocess

AuthType Basic

AuthName "My page"

require valid-user

</Directory>

Ә, ұ ғ. ә ққ ү.

қ ү құ ( mod_python-қ құ , қ өң ұ қ ):

PythonPostReadRequestHandler

ғ ұң ң ғ өң.

PythonTransHandler

URI ұ ө ү (ң ң ).

PythonHeaderParserHandler

ұ ө өң.

PythonAccessHandler

қ өң (, IP- ).

PythonAuthenHandler

Қ .

PythonTypeHandler

Құ үң, ң ә .. қ ә/ .

PythonFixupHandler

Өң ұ қ ө ө.

PythonHandler

ұ өң .

PythonInitHandler

PythonPostReadRequestHandler PythonHeaderParserHandler - .

PythonLogHandler

ғ қ.

PythonCleanupHandler

Request- қ өң.

өң һ ү ұ , қ ң қ ү (, PythonPostReadRequestHandler).

mod_python ө қ ұ - құғ ә Python- қ -ң ұ қғ .

қ құ ә CGI- қ - қғ, -қ құ ү ү ә қ. ғ ұ ғқ ү -қң , ұ қ ү (CMS, Content Management System), - ә WWW- құ ү ғ ә ү . қ CMS-ү -қ қ ү, құ ү ғ ә, CMS ү ү , - ү ү. қ қ қ ү ү ң , қ қ қ.

Pyton ү қ . -қң құ ү ң Zope (.

http://zope.org) (Z Object Publishing Environment, ). Zope - , қ қ - ұ , , Apache. Zope - құғ , , Plone/Zope ө қ, қ өңң -қң ғ . қ Zope , ұ, ө ү , ғ ұ (ұ ), -қ(-), -ү (ғ). Zope ғ Python ө , қ ғ - құ ү, ұ ұ Zope-ң өң - қ .





:


: 2017-01-28; !; : 1886 |


:

:

, .
==> ...

1356 - | 1128 -


© 2015-2024 lektsii.org - -

: 0.083 .