ePortfolio for COP 4813/5819: Internet Programming

Larry Snedden

University of North Florida
1 UNF Drive office 15/3125
Jacksonville, Fl. 32224
(904)-620-1301

The first assignment is all about understanding the basics of constructing a functional HTML web-site. The first assignment is all about understanding the basics of constructing a functional HTML website. Assignment 1 expands knowledge of basic html markup, page design and standards as well as to allow students to experience how the web server manages content with folder structures. There is more to building a webpage than just using hypertext markup language. In this assignment the student has to become familiar with the file systems the web server uses to serve content, file transfer protocols, using the command line and editing content with text editors.

At first I did not think I would learn very much at this stage of the classwork, but I was surprised. I had no idea I had been putting out bad and incomplete work on the Internet. The old saying "A little knowledge is a dangerous thing", has proven true. Specifically, I learned about using elements correctly and when and why to make use of classes and ids in CSS. There were many questions regarding the use of table elements in the first assignment. I noticed that CSS styling would behave rrratically when I applied them to table elements and nested elements. Through observation and research on the Internet it has become clear that tables are not as widely supported as they once were and there is a movement away from them as CSS becomes more popular. With Cascading Style Sheets placement and element settings are more easily managed centrally, which should reduce time and effort with updating or making site wide changes.

Learning Objectives

  • Basic HTML/XHTML markup
  • Managing page content
  • Creating files in Linux
  • Creating stylesheets
  • Connectiong to web servers

Assignment two is all about using client-side scripting and forms. We were tasked to come up with a form that would take user input and return information to the user that changed depending upon the input. This required us to test for valid input and to use programming logic structures such as if-then blocks. We also had to interact with the client-side user with any number of dynamic DOM methods, either using the html or the browser messages. A final requirement required us to layout the logical flow of our scripts using a flow chart.

This was an enjoyable project that allowed the students to explore not only imaginitive ways to write scripting but in the way it was executed. The latitude afforded to us allows us to learn often times the hard way via trial and error which is much better than simply being told how to do something.

Learning Objectives

  • The Form Element
  • Embedded scripting using Java
  • Dynamic page events
  • Programming logic/decision structures

Assignment three is an extension of assignment 2 in that we are using javascripts in forms. The added challenge is using offline function libraries. This assignment also taught javascript arrays and weaknesses of regular expressions and cross-browser issues. Sometimes the more elegant method would fail because it was not supported.

The biggest challenges in this assignment are the data structures and their limitations in javascript. An example would be that javascript only supports single dimensional arrays. So, while you can put an array into another array the one will never truly be a child of the other. These arrays are referenced only. So once you reference the array in another array, any changes to the referenced array will be applied to what you once thought was the child....not so.

Learning Objectives

  • Referencing function libraries
  • Arrays and structures in javascript
  • Loops and logic with javascript
  • Advanced data verifications
  • Programming logic/decision structures

Assignment four introduces many new concepts such as; sessions, php file handling, and post variables. This assignment presented quite a challenge. Students had to deal with local files, Internet queries from a third party, and also to learn more about the server-side of php all while learning the nuances of the language itself. I viewed this assignment as a sink or swim proposition to the students, there was no margin for error here.

The things I learned most from this lesson in order of importance are; code reuse, session and post variable handling, php arrays, and time management. My impression was that this assignment was a lynchpin to successfully being able to complete the group assignment which is a large portion of our grade. I predict that the students may blow off to an extent the next two assignments because of the impact of the group project.

Learning Objectives

  • Referencing php function libraries
  • Looping with php
  • File management with php
  • String and array manipulation with php
  • DOM session and post structures

Assignment five required us to move the file functions from assignment four to a SQL database server. We needed to perform; update, inserts, and delete operations on the database. Additionally we had to concern ourselves with string validation and ensuring that we checked for primary key collisions for insertions.

The things I learned were plenty. I spent at least 15 hours if not 20 hours teaching myself the nuances of AJAX. Luckily I am well versed in SQL and those aspects were not lost on me. What I did was incorporate an sql query to authenticate access to the tools to perform the operations on the data. Further, I incorporated AJAX calls to reload the main page content for the logged in users.

During this lesson we were challenged to investigate the dangers of SQL injection. This is a form of deforming sql queries by adding commands or faulty characters onto otherwise requested form data. If a user was able to add statements in form text boxes such as "'; drop table user_details; They could piggy back commands onto your SQL server. Furthermore a user could add a true condition such as; ' or true;. What I did to minimize this threat was to strip illegal characters on the client side using javascript validation functions. On the server side php code strips illegal slashes. The built in protections of MYSQL limit the ability of issuing commands in pairs. For the next project I will take further precaution and verify the sesnder of post requests.

Learning Objectives

  • SQL Operations
  • Data validation
  • AJAX calls
  • UI design
  • DOM session and post structures

Assignment six required us to use AJAX. Since I had used AJAX in my assignment 5 in order to prepare for the Group Prooject, Dr. Ritzhaupt asked me to just include more functions. I added his ajax example to my existing project.

I learned a lot about AJAX calls using GET and POST. There are meny challenges not least of which deals with form variables. Reloading SPAN or DIV tags makes you rethink your whole layout, which is actually really instructive and provides an easier design to me. The problem is that form elements are not all handled the same. In order to create a POST call you have to address things such as elements that are arrays and handled as objects but still address simple input elements.

During this lesson we were challenged to investigate the dangers of SQL injection. This is a form of deforming sql queries by adding commands or faulty characters onto otherwise requested form data. If a user was able to add statements in form text boxes such as "'; drop table user_details; They could piggy back commands onto your SQL server. Furthermore a user could add a true condition such as; ' or true;. What I did to minimize this threat was to strip illegal characters on the client side using javascript validation functions. On the server side php code strips illegal slashes. The built in protections of MYSQL limit the ability of issuing commands in pairs. For the next project I will take further precaution and verify the sesnder of post requests.

Learning Objectives

  • SQL Operations
  • Data validation
  • AJAX calls
  • UI design
  • DOM session and post structures