Showing posts with label python cgi. Show all posts
Showing posts with label python cgi. Show all posts

Sunday, August 16, 2015

A Combination of Both Python CGI and Database Programming

Python CGI can be helpful to get data from a form and insert it into a database. So, a combination of both the CGI programming and a little bit of database programming can help us to create and maintain a small web based database. See the example below -

Lets start with creating a form. In the form action you can see that I have called a python cgi file and use th method post. Always store the CGI file in the cgi-bin folder. Then we have created a text entry for username label and another for password level. We use the submit button to call the cgi file.
It will create a form like below - 
<html>
<link rel="stylesheet" type="text/css" href="new1.css">
<head>
<title>Login Page</title>
<head>
<h1> Welcome to The Gate Pass Entry System</h1>
<h2>Please enter username and password to access the system</h2>
<body>
<form action='/cgi-bin/formvalidator.py' method='POST'>
<label>Username: </label>
<input type='text' name='username'><br><br/>
<label>Password:  </label>
<input type="Password"  name='password' ><br/><br/>
<input type='submit' value=submit>
</form>
</body>
</html>

 The Output will be something like below -


The next thing we have to do is to handle the input from the form and get data from it ;then we will insert the data to a database. Lets do it -

#!/Python27/python  (#!/usr/bin/python - in case of linux)
import cgi,cgitb
cgitb.enable() #This will show errors in the browser
data=cgi.FieldStorage() #The Fieldstorage function allow us to get data from form.
username=str(data['username'].value) #getting the value of the name='username'  field
password=str(data['password'].value) #getting the value of the name='password' field


Now the data collection part is covered up, as we can see we have two variables username and password which are holding the inputs from the HTML form. Now lets put them in database. Please visit http://pythonbeginner.in/databaseprogramming if you have not done a bit of database programming with python.We will crate a table named login_list and put the data there.

import sqlite3 as db #You should import this in the first or second line of the program.
conn=db.connect('test1.db') #Connecting to database named test1.db
cur=conn.cursor()
cur.execute('drop table if exists login_list')
cur.execute("CREATE TABLE login_list (uniqueid integer primary key AUTOINCREMENT,usernameTEXT,password TEXT);")
conn.commit()
cur.execute('insert into troublebook(username,password) values(?,?)',(username,password))
conn.commit()
So, what the program actually did? It took the variables username and password and inserted into the login_list table for storing. It is basically a table for entering username and password but not verifying it. What if we need to verify if it is in the database and if not found then insert the value in the list. 
Hint: The 'select * from table' is used to have the entire table as output. Can we use it here ? Obviously. but how, let's find out and stay tuned for the next blog entry.

Now lets traverse the list with the help of database and generate a HTML page on your browser showing all username and password. 

import sys,cgi,cgitb
import sqlite3 as db
conn=db.connect('test1.db')
query='select * from login_list'
cur.execute(query)
rows=cur.fetchall()
sys.stdout.write("Content-type: text/html\r\n\r\n")
sys.stdout.write("")
sys.stdout.write("<html><body><h1>Login List :</h1><p>")
for row in rows:
   print ("_________________________________________________________<br/>\n")
   print ("\n")

   sys.stdout.write("ID No : %s <br>Name :%s <br>Password : %s" % (row[0], row[1], row[2]))
   sys.stdout.write("<br/>")
  
sys.stdout.write("</p></body></html>")


This will list the whole login_list database and place it in your web browser with a suitable format.You can use another program or another link to run this, the main thing i the concept of the CGI must be cleared now, as we will be moving to more complex structure of the cgi programming.
  

Tuesday, August 11, 2015

A Touch of Python CGI Programming

Python CGI( Common Gateway Interface) is a server side script which help us to write server side auto generated html page. The utility is that with CGI programming you can generate page depending upon the input to the webpage. Before I dig into Python CGI, I need to introduce you to a little bit of html -

<html>
<title>Intro to HTML</title>
<body>This is the body of your webpage</body>
</html>

Write the above line in a text editor, name it something.html and double click it. It will open in your favorite browser and show the lines in between the body and title tag. This is called a html page, please visit some online tutorial for more details.

Now lets write a python cgi file. To run cgi script you have to configure or download servers which supports python cgi scripting. I recommend you to use xampp as it  is easy to use and not so complicated to configure. Download xampp and install it.

The next thing is to open the cgi-bin folder in the c:\xampp folder. You will be writing all your cgi scripts in the folder. So lets create a file and name it 'firstcgi.py'. Write the following in the file and save it -

#!/usr/bin/python """(In case of windows #!/Python27/python probably, you need to check your python installation path to be sure)"""
import cgi
import cgitb
print "content-tpe:text/html\r\n\r\n"
print ""
print """
<html>
<title>Intro to HTML</title>
<body>This is the body of your webpage</body>
</html>
 """
 To run the cgi file you either need to go to the directory of the cgi file and run python CGIHTTPServer or simply run the webserver and type the path http://localhost/cgi-bin/firstcgi.py, see if it runs or not. You will probably find some errors or some 500 error. Why?
A few thing to remember before writing CGI Script  -
  •  Always make the cgi script file executable by going to the properties of the file in case of windows and for linux change it by chmod a+x filename command.
  • You need to change the ownership to  the current user of the file. chmod 775 is a better option for python cgi file, for windows user make it read and writable.
  • Always store the file in cgi-bin folder, it is an obligation of writing cgi script.
  • Make sure you run the CGIHTTPServer command from the same directory where cgi-bin folder is located.     
  • The path to the python executable file is not optional, always start cgi program with the #! followed by python path
 Now check your program in your browser , you will see the same output as the previous html file but only it is generated by python cgi script. What is the use? We will see in next entry .

 

Feautured Post

Python Trivia Post: enumerate()

Python has a very useful inbuilt function, which is called enumerate(). This is needed whenever you need the numbering of a certain element...