• Skip to primary navigation
  • Skip to main content

site logo
The Electronic Journal for English as a Second Language
search
  • Home
  • About TESL-EJ
  • Vols. 1-15 (1994-2012)
    • Volume 1
      • Volume 1, Number 1
      • Volume 1, Number 2
      • Volume 1, Number 3
      • Volume 1, Number 4
    • Volume 2
      • Volume 2, Number 1 — March 1996
      • Volume 2, Number 2 — September 1996
      • Volume 2, Number 3 — January 1997
      • Volume 2, Number 4 — June 1997
    • Volume 3
      • Volume 3, Number 1 — November 1997
      • Volume 3, Number 2 — March 1998
      • Volume 3, Number 3 — September 1998
      • Volume 3, Number 4 — January 1999
    • Volume 4
      • Volume 4, Number 1 — July 1999
      • Volume 4, Number 2 — November 1999
      • Volume 4, Number 3 — May 2000
      • Volume 4, Number 4 — December 2000
    • Volume 5
      • Volume 5, Number 1 — April 2001
      • Volume 5, Number 2 — September 2001
      • Volume 5, Number 3 — December 2001
      • Volume 5, Number 4 — March 2002
    • Volume 6
      • Volume 6, Number 1 — June 2002
      • Volume 6, Number 2 — September 2002
      • Volume 6, Number 3 — December 2002
      • Volume 6, Number 4 — March 2003
    • Volume 7
      • Volume 7, Number 1 — June 2003
      • Volume 7, Number 2 — September 2003
      • Volume 7, Number 3 — December 2003
      • Volume 7, Number 4 — March 2004
    • Volume 8
      • Volume 8, Number 1 — June 2004
      • Volume 8, Number 2 — September 2004
      • Volume 8, Number 3 — December 2004
      • Volume 8, Number 4 — March 2005
    • Volume 9
      • Volume 9, Number 1 — June 2005
      • Volume 9, Number 2 — September 2005
      • Volume 9, Number 3 — December 2005
      • Volume 9, Number 4 — March 2006
    • Volume 10
      • Volume 10, Number 1 — June 2006
      • Volume 10, Number 2 — September 2006
      • Volume 10, Number 3 — December 2006
      • Volume 10, Number 4 — March 2007
    • Volume 11
      • Volume 11, Number 1 — June 2007
      • Volume 11, Number 2 — September 2007
      • Volume 11, Number 3 — December 2007
      • Volume 11, Number 4 — March 2008
    • Volume 12
      • Volume 12, Number 1 — June 2008
      • Volume 12, Number 2 — September 2008
      • Volume 12, Number 3 — December 2008
      • Volume 12, Number 4 — March 2009
    • Volume 13
      • Volume 13, Number 1 — June 2009
      • Volume 13, Number 2 — September 2009
      • Volume 13, Number 3 — December 2009
      • Volume 13, Number 4 — March 2010
    • Volume 14
      • Volume 14, Number 1 — June 2010
      • Volume 14, Number 2 – September 2010
      • Volume 14, Number 3 – December 2010
      • Volume 14, Number 4 – March 2011
    • Volume 15
      • Volume 15, Number 1 — June 2011
      • Volume 15, Number 2 — September 2011
      • Volume 15, Number 3 — December 2011
      • Volume 15, Number 4 — March 2012
  • Vols. 16-Current
    • Volume 16
      • Volume 16, Number 1 — June 2012
      • Volume 16, Number 2 — September 2012
      • Volume 16, Number 3 — December 2012
      • Volume 16, Number 4 – March 2013
    • Volume 17
      • Volume 17, Number 1 – May 2013
      • Volume 17, Number 2 – August 2013
      • Volume 17, Number 3 – November 2013
      • Volume 17, Number 4 – February 2014
    • Volume 18
      • Volume 18, Number 1 – May 2014
      • Volume 18, Number 2 – August 2014
      • Volume 18, Number 3 – November 2014
      • Volume 18, Number 4 – February 2015
    • Volume 19
      • Volume 19, Number 1 – May 2015
      • Volume 19, Number 2 – August 2015
      • Volume 19, Number 3 – November 2015
      • Volume 19, Number 4 – February 2016
    • Volume 20
      • Volume 20, Number 1 – May 2016
      • Volume 20, Number 2 – August 2016
      • Volume 20, Number 3 – November 2016
      • Volume 20, Number 4 – February 2017
    • Volume 21
      • Volume 21, Number 1 – May 2017
      • Volume 21, Number 2 – August 2017
      • Volume 21, Number 3 – November 2017
      • Volume 21, Number 4 – February 2018
    • Volume 22
      • Volume 22, Number 1 – May 2018
      • Volume 22, Number 2 – August 2018
      • Volume 22, Number 3 – November 2018
      • Volume 22, Number 4 – February 2019
    • Volume 23
      • Volume 23, Number 1 – May 2019
      • Volume 23, Number 2 – August 2019
      • Volume 23, Number 3 – November 2019
      • Volume 23, Number 4 – February 2020
    • Volume 24
      • Volume 24, Number 1 – May 2020
      • Volume 24, Number 2 – August 2020
      • Volume 24, Number 3 – November 2020
      • Volume 24, Number 4 – February 2021
    • Volume 25
      • Volume 25, Number 1 – May 2021
      • Volume 25, Number 2 – August 2021
      • Volume 25, Number 3 – November 2021
      • Volume 25, Number 4 – February 2022
    • Volume 26
      • Volume 26, Number 1 – May 2022
      • Volume 26, Number 2 – August 2022
      • Volume 26, Number 3 – November 2022
      • Volume 26, Number 4 – February 2023
    • Volume 27
      • Volume 27, Number 1 – May 2023
      • Volume 27, Number 2 – August 2023
      • Volume 27, Number 3 – November 2023
      • Volume 27, Number 4 – February 2024
    • Volume 28
      • Volume 28, Number 1 – May 2024
      • Volume 28, Number 2 – August 2024
      • Volume 28, Number 3 – November 2024
      • Volume 28, Number 4 – February 2025
    • Volume 29
      • Volume 29, Number 1 – May 2025
      • Volume 29, Number 2 – August 2025
      • Volume 29, Number 3 – November 2025
      • Volume 29, Number 4 – February 2026
    • Volume 30
      • Volume 30, Number 1 – May 2026
      • Volume 30, Number 2 – August 2026
  • Books
  • How to Submit
    • Submission Info
    • Ethical Standards for Authors and Reviewers
    • TESL-EJ Style Sheet for Authors
    • TESL-EJ Tips for Authors
    • Book Review Policy
    • Media Review Policy
    • TESL-EJ Special issues
    • APA Style Guide
  • Editorial Board
  • Support

Alternate HTML & CGI with Some Security Provisions

Vol. 3. No. 1 — November 1997

Alternate HTML & CGI with Some Security Provisions

© Thomas N. Robb, 1997
Kyoto Sangyo University

This contains the sample HTML and sample CGI for a more secure version of the submission page. With this version, all classes using the page would have to know the same password (up to 10 letters). Changing the password involves modifying the CGI code itself, which isn’t very convienient and isn’t perfectly secure since anyone with an account in the school might have ‘read permission’ for the CGI programs. While this CGI is not resistant to dedicated hackers within the school it should provide reasonably good protection against most simple pranks.

 <HTML> <BODY> <FORM METHOD=POST action="http://www.kyoto-su.ac.jp/cgi-bin/paperalt.cgi">

<table border=0 <tr>

<td><b>What is your instructor's name? --></b></td> <td> <select name="tchremail"> <option value="trobb@cc.kyoto-su.ac.jp"> Press mouse here! <option value="ishii@cc.kyoto-su.ac.jp"> Thomas Robb <option value="robb-m@cc.kyoto-su.ac.jp"> Takeo Ishii </select></td>

</tr> <tr> <td>Enter your password here--></td> <td><input type=text name="psword" size=10</td>> </tr>

<tr> <td>Your name:</td> <td>Your E-mail address</td> </tr>

<tr> <td><input type=text name="studname" size=30></td> <td><input type=text name="studemail" size=30></td> </tr> </table><p>

<FONT SIZE=+1>Type or paste in your text below.</FONT><BR>

<TEXTAREA NAME="message" WRAP=HARD ROWS=5 COLS=60>

</TEXTAREA> <INPUT TYPE = "submit" VALUE = "Submit your message"> <INPUT TYPE = "reset" VALUE = "Erase"></CENTER> </FORM>

</BODY> </HTML> 

In order to make this work, you need to enter ‘robbtest’ as the password. Try something else, or leave it blank to see the ‘Sorry!’ message

What is your instructor’s name? –>
Enter your password here–>
Your name: Your e-mail address

Type or paste in your text below.



The CGI

 #! /NF/local/Solaris2J/bin/perl

read(STDIN, $in, $ENV{'CONTENT_LENGTH'}); @in = split(/&/,$in);

foreach $i (0 .. $#in){ $in[$i] =~ s/\+/ /g; ($key,$val) = split(/=/,$in[$i],2); $val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $in{$key} = $val; } $studemail = $in{"studemail"}; $tchremail = $in{"tchremail"}; $studname = $in{"studname"}; $message =  $in{"message"}; $frompage = $ENV{'HTTP_REFERER'}; $psword  =  $in{"psword"};

#This statement checks that both the password and the referring page #  are correct. if (($psword eq "robbtest") && ($frompage eq "http://www.kyoto-su.ac.jp/people/t eacher/trobb/paperalt.html")) { # If both are correct then the following statements are processed.

# The statements below send a brief acknowledgement to the browser print "Content-type: text/html\n\n"; print <<"ending_print_tag"; <html><head><title>TEST</title></head><body>

<h1>Your e-mail has been sent!</h1> <h3>Click your BACK  button to return to your original page</h3> <br> </body></html>

ending_print_tag

# The statements below send mail to the teacher. # Note that this demo program is set up so that the "student's" address is placed #  on the 'TO' line.  For normal use, the 'tchremail' variable would be placed here. #  all of the other places (From, Reply-To, Sender and Return-Path) can contain #  the student's address variable "$studemail" or the address of the person who #  set up the CGI and HTML pages.

open (MAIL, "|/usr/lib/sendmail -t"); print MAIL "From trobb@cc.kyoto-su.ac.jp\n"; print MAIL "Reply-To: trobb@cc.kyoto-su.ac.jp\n"; print MAIL "Sender: trobb@cc.kyoto-su.ac.jp\n"; #print MAIL "Return-Path: <trobb@cc.kyoto-su.ac.jp>\n"; print MAIL "To: $studemail \n"; print MAIL "From: trobb@cc.kyoto-su.ac.jp\n"; print MAIL "Cc:\n"; print MAIL "Subject: Paperless Classroom E-mail Test \n"; print MAIL "This e-mail was generated by the demo which can be found at the\n"; print MAIL "following URL: \n\n"; print MAIL " http://www.kyoto-su.ac.jp/people/teacher/trobb/paperless.html \n"; print MAIL "If this is a valid message, the URL below should match the one above : \n"; print MAIL " $frompage \n"; print MAIL "-------------\n\n"; print MAIL "From: $studemail \n"; print MAIL "Name: $studname \n"; print MAIL "To:   $tchremail \n\n"; print MAIL "$message \n";

close(MAIL) }

# The statements below are invoked when either the password or the referring # address do not match. else { print "Content-type: text/html\n\n"; print <<"ending_print_tag"; <html><head><title>Sorry!</title></head><body> <h2>Sorry! You are not authorized to use this submission form!</h2>

</body></html> ending_print_tag } # End of program 

Back to The Paperless Classroom?

© 1994–2026 TESL-EJ, ISSN 1072-4303
Copyright of articles rests with the authors.