link sends user to code page?

PaulS:
Frankly, it's hard to help you with general parsing questions. Seeing the string(s) you want to parse, and helping parse those specific strings would be far easier.

I based my program off the example Arduino server code, and to be honest I'm actually still confused on that part. Here is my program(still a little messy and unfinished):

#include <SPI.h>
#include <Ethernet.h>
#include <LiquidCrystal.h>
#include <Time.h>
#include <TimeAlarms.h>

byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x98, 0x26 };
IPAddress ip(192,168,1,134);
// Initialize the Ethernet server library
// with the IP address and port you want to use 
// (port 80 is default for HTTP):
EthernetServer server(80);

int pin[8] = {2,3,4,5,6,7,8,9};
static char readString[30];
static char *state[8] = {"OFF","OFF","OFF","OFF","OFF","OFF","OFF","OFF",};
static char *pinOn[8] = {"PIN2=T","PIN3=T","PIN4=T","PIN5=T","PIN6=T","PIN7=T","PIN8=T","PIN9=T"};
static char *pinOff[8] = {"PIN2=F","PIN3=F","PIN4=F","PIN5=F","PIN6=F","PIN7=F","PIN8=F","PIN9=F"};
/* LCD */
LiquidCrystal lcd(14,15,16,17,18,19);
int backLight = 1;
void setup()
{
  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  
  //Time setup
  setTime(7,30,0,11,22,12);
  
  //LCD setup
  pinMode(backLight, OUTPUT);
  digitalWrite(backLight, HIGH);
  lcd.begin(20, 4);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print(F("SprinkDuino"));
  delay(5000);
  lcd.clear();
  
  //Sets relay pins (2-9) as output
  for(int i = 2; i < 10; i++){
   pinMode(i, OUTPUT); 
  }
  for(int i = 2; i < 10; i++){
   digitalWrite(i, HIGH);          //HIGH is off
  }
}

void loop()
{
  digitalClockDisplay();
  Alarm.delay(1000);
  
  EthernetClient client = server.available();                // listen for incoming clients
  if (client) {
    boolean currentLineIsBlank = true;                       // an http request ends with a blank line
    while (client.connected()) {
      if (client.available()) {
        
        char c = client.read();
        int pos = strlen(readString);
        if(pos < 29)
        {
           readString[pos++] = c;
           readString[pos] = '\0';
        }
        if (c == '\n' && currentLineIsBlank) {          
          for(int i = 0; i < 8; i++){
            if (strstr(readString, "PIN") == pinOn[i]) {          //Turns current pin on
              digitalWrite(pin[i], LOW);           
              state[i] = "ON";
            }
            else if (strstr(readString, "PIN") == pinOff[i]) {    //Turns current pin off
              digitalWrite(pin[i], HIGH);
              state[i] = "OFF";
            } 
          }
          if(strstr(readString, "PIN") == "PINA=F") {              //Turns all pins off
            for(int i = 0; i < 8; i++){
             digitalWrite(pin[i], HIGH);
             state[i] = "OFF";
            }
          }
          else if(strstr(readString, "PIN") == "PINA=T") {       //Turns all pins on
            for(int i = 0; i < 8; i++){
             digitalWrite(pin[i], LOW);
             state[i] = "ON"; 
            }
          }
          }
          client.println(F("HTTP/1.1 200 OK"));
          client.println(F("Content-Type: text/html"));
          client.println();
          client.println(F("<title>SprinkDuino</title>"));
          client.println(F("<h1 color=red style=text-align:center;>Welcome to SprinkDuino!</h1>"));
          client.print(F("<table border=0><tr>"));
          client.println(F("<td><a href=\"./?PINA=T\"><button><font size=4>TURN ALL <font color=green>ON</font></font></button><a></td>"));
          client.println(F("<td><a href=\"./?PINA=F\"><button><font size=4>TURN ALL <font color=red>OFF</font></font></button><a></td>"));
          client.println(F("<tr>"));
          
          for(int i = 2; i < 10; i++){                    //Prints state of sprinkler pin
           client.print(F("<td>"));
           client.print(F("<font size=4>Sprinkler "));
           client.print(i-1);
           client.print(F(" is ")); 
           if(state[i-2] == "ON"){
             client.print(F("<b><font color=green>"));
             client.print(state[i-2]);
             client.print(F("</font></b></font>"));
             client.print(F("</td>"));
           }
           else {
             client.print(F("<b><font color=red>"));
             client.print(state[i-2]);
             client.print(F("</font></b></font>"));
             client.print(F("</td>"));
           }
           if (state[i-2] == "ON") {                      //Turns sprinkler pin on or off
              client.print(F("<td>"));
              client.print(F("<a href=\"./?"));
              client.print(pinOff[i-2]);
              client.print(F("\"><button>Turn Off</button><a>"));
              client.print(F("</td>"));
              client.print(F("<tr>"));
            }
            else {
              client.print(F("<td>"));
              client.print(F("<a href=\"./?"));
              client.print(pinOn[i-2]);
              client.print(F("\"><button>Turn On</button><a>"));
              client.print(F("</td>"));
              client.print(F("<tr>"));
            }          
          client.print(F("</table>"));
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } 
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    readString[0] = '\0';
    // close the connection:
    client.stop();
  }
}

void digitalClockDisplay()
{
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print(F("Time"));
  lcd.setCursor(0,1);
  lcd.print(hour());
  printDigits(minute());
  printDigits(second());
}

void printDigits(int digits)
{
  lcd.print(F(":"));
  if(digits < 10)
    lcd.print('0');
  lcd.print(digits);
}

So if you want pin 2 to turn on, you would click the button which appends "PIN2=T" onto the end of the URL. readString is then set to PIN2=T and compared to pinOn[0]. If it is true pin 2 is set to LOW, turning the relay on. I just don't fully get what 'c' is doing...I'm guessing since it is expected to be the new line character '\n', once you press the button the program will interpret the URL and set the readString accordingly?

Sorry to be jumping around to different topics, but the program is now crashing similar to how it was previously. When I open up the page, it repeats the following over and over (with a few buttons that I couldn't paste here):

Welcome to SprinkDuino!
	
Sprinkler 1 is OFF	
HTTP/1.1 200 OK Content-Type: text/html

Since I'm not using strings anymore, I'm guessing it's some kind of memory leak? Could it also be because I'm trying to do too much formatting with the HTML?