Ethernet shield problem with web page

Hi, I’ve done this sketch to control leds on the web page and send temperature values into a database. For send the values, I use GET method, but when I enter into the web page into Arduino, the page arrest himself and few minutes later the page is unattainable. why? Here the sketch

#include <String.h>  
#include <SPI.h>  
#include <Ethernet.h>  
#include <Button.h> 
#define tempPin A0
#define fotoresistenza A1
#define pinBottone A2
#define ledPin6 6
#define ledPin7 7
#define ledPin8 8
#define ledPin9 9
#define LEDallarme 3
#define pinPIR 2
#define pinPIEZO 4
#define ledPinLuminosita 5
#define PULLUP true
#define INVERT true
#define DEBOUNCE_MS 20
//indirizzo server sql (locale)
IPAddress sql_server(192,168,0,4);
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0E, 0xAC, 0x68 };   
//creo una variabile char per memorizzare i byte letti dal client
char Data_RX;
// varbiabile cliet 
EthernetClient client;
//creao un oggetto server che rimane in ascolto sulla porta
//specificata
EthernetServer server(80);
String readString;   
boolean LEDON1 = false;
boolean LEDON2 = false;
boolean LEDON3 = false;
boolean LEDON4 = false;
int val_Adc = 0;
//variabile temperatura celsius
float tempC = 0;
//variabile temperatura fahrenheit
float tempF = 0;
//variabile temperatura kelvin
float tempK = 0;
String strURL = "";
unsigned long tempo = 0;
int StatoSensore = 0;
Button bottone(pinBottone, PULLUP, INVERT, DEBOUNCE_MS);
boolean acceso = false;
void setup(){
    pinMode(ledPin6, OUTPUT);
    pinMode(ledPin7, OUTPUT);
    pinMode(ledPin8, OUTPUT);
    pinMode(ledPin9, OUTPUT);
    pinMode(A1, INPUT);
    pinMode(ledPinLuminosita, OUTPUT);
    Serial.begin(9600);
    // disabilito SD SPI
    pinMode(4,OUTPUT);
    digitalWrite(4,HIGH);
    pinMode(LEDallarme, OUTPUT);
    Serial.print(F("Starting ethernet..."));
    if(!Ethernet.begin(mac)) Serial.println(F("failed"));
    else Serial.println(Ethernet.localIP());
    server.begin();
}
void loop(){
   int val = analogRead(fotoresistenza); // salvo il valore fotoresistenza dentro alla variabile val   
   if(val<500) //se il valore letto dalla fotoresistenza (luminosità) è basso, accendo il led  
    digitalWrite(ledPinLuminosita,HIGH);  
   else  
    digitalWrite(ledPinLuminosita,LOW); //altrimenti lo spengo (o lo lascio spento)     
    //init variabile
    val_Adc = analogRead(tempPin);
    //eseguo un ciclo
    for(byte Ciclo = 0; Ciclo<100; Ciclo++){
       //acquisisco il valore e lo sommo alla
       //variabile
       val_Adc += analogRead(tempPin);
       //questo ritardo serve per dare il tempo
       //all' ADC di eseguire correttamente
       //la prossima acquisizione
    }
    //°C = ((valoreADC * PrecisioneADC) – TensioneZeroGradi) / stepGradoTensione
    //eseguo la media dei 100 valori letti
    float media=val_Adc / 100;
    //Temperatura di rilevazione: -40°C ~ 125°C
    //Tipo di uscita: tensione
    //Alimentazione di tensione: 2.7 V ~ 5.5 V
    //Precisione: ±2°C 
    float tensione = media * 5.0; 
    tensione/=1024.0;//tensione in mV
    //temperatura in Celsius
    tempC=(tensione - 0.5) * 100;
    //invio i dati al computer
    Serial.print(tempC); Serial.println(" gradi C");
    tempF = (tempC * 9.0 / 5.0) + 32.0;
    Serial.print(tempF); Serial.println(" gradi F");
    tempK = tempC + 273.15;
    Serial.print(tempK); Serial.println(" gradi K");
   EthernetClient client = server.available();  
    if (client) //SE ESISTE UN CLIENTE
  {
    while (client.connected()) // SE IL CLIENTE E' CONNESSO
    {
      if (client.available()) //SE E' TUTTO OK PER INIZIARE
      {
        char c = client.read(); //LEGGI I SINGOLI CARATTERI INVIATI
        if (readString.length() < 100) 
        {
          readString += c; //CONCATENA I CARATTERI
        }  
        if (c == '\n') //VEDE SE C'E' IL CARATTERE DI FINE STRINGA, PER INDIVIDUARE CHE E' FINITA
        {
          if(readString.indexOf("L1=1") > 0) //IMPOSTA UNA VARIABILE DI TIPO BOLEANA (VERO-FALSO) PER GLI STATI DEL LED
          {
            LEDON1 = true;
          } 
          else if (readString.indexOf("L2=1") > 0) 
          {
            LEDON2 = true;             
          }
          else if (readString.indexOf("L3=1") > 0) 
          {
            LEDON3 = true;             
          }
          else if (readString.indexOf("L4=1") > 0) 
          {
            LEDON4 = true;             
          }
          else if(readString.indexOf("L1=0") > 0)
          {
            LEDON1 = false;
          } 
          else if (readString.indexOf("L2=0") > 0) 
          {
            LEDON2 = false;             
          }
          else if (readString.indexOf("L3=0") > 0) 
          {
            LEDON3 = false;             
          }
          else if (readString.indexOf("L4=0") > 0) 
          {
            LEDON4 = false;             
          }
          //CREA LA PAGINA HTML (VERRA' AGGIORNATA AD OGNI ISTRUZIONE NUOVA)
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          client.println("<html><head>");
          //refresh per le temperature
          client.print("<meta http-equiv='refresh' content='2'>");
          client.println("<title>Arduino Home</title></head><body>");
          /*client.println("<?php if (!isset($_COOKIE['nome_utente'])){");
          client.println(" print('Pagina scaduta 
'); ");
          client.println(" print('Se vuoi ritornare alla pagina di login clicca '); ");
          client.println(" print('<a href=""http://192.168.0.10/tesina/index.php"">qui</a>');");
          client.println(" die(); ?>");*/
          client.println("<table border=""2"" width=""100%"" height=""100%""><tr><td align=""center"">");
          //TITOLO LED 1
          client.println("<h1>LUCE CUCINA</h1>");
          //OPERAZIONI DA FARE QUANDO SI CLICCA PER ATTIVARE LEDON1:  
          if (LEDON1) { 
            digitalWrite(ledPin6, HIGH);  
            client.println("Stato: ON 
");
            //CREA I PULSANTI RELATIVI A LED1    
            client.println("<a href='L1=0'>SPEGNI</a>");
            client.println("<a href='L1=1'>ACCENDI</a>");
          } 
          else {
            //OPERAZIONI DA FARE QUANDO SI CLICCA PER SPEGNERE LEDON1:  
            digitalWrite(ledPin6, LOW );
            client.println("Stato: OFF 
");
            //CREA I PULSANTI RELATIVI A LED1    
            client.println("<a href='L1=0'>SPEGNI</a>");
            client.println("<a href='L1=1'>ACCENDI</a>");
          }
          //TTOLO LED2
          client.println("<h1>LUCE SALOTTO</h1>");
          //OPERAZIONI DA FARE QUANDO SI CLICCA PER ATTIVARE LEDON2:  
          if (LEDON2) { 
            digitalWrite(ledPin7, HIGH);  
            client.println("Stato: ON
");
            //CREA I PULSANTI RELATIVI A LED1    
            client.println("<a href='L2=0'>SPEGNI</a>");
            client.println("<a href='L2=1'>ACCENDI</a>");
          } 
          else { 
            //OPERAZIONI DA FARE QUANDO SI CLICCA PER SPEGNERE LEDON2:    
            digitalWrite(ledPin7, LOW); 
            client.println("Stato: OFF
");
            //CREA I PULSANTI RELATIVI A LED1    
            client.println("<a href='L2=0'>SPEGNI</a>");
            client.println("<a href='L2=1'>ACCENDI</a>");
          } 
          //TTOLO LED3
          client.println("<h1>LUCE BAGNO</h1>");
          //OPERAZIONI DA FARE QUANDO SI CLICCA PER ATTIVARE LEDON2:  
          if (LEDON3) { 
            digitalWrite(ledPin8, HIGH);
            client.println("Stato: ON
");
            //CREA I PULSANTI RELATIVI A LED1    
            client.println("<a href='L3=0'>SPEGNI</a>");
            client.println("<a href='L3=1'>ACCENDI</a>");
          } 
          else { 
            //OPERAZIONI DA FARE QUANDO SI CLICCA PER SPEGNERE LEDON2:    
            digitalWrite(ledPin8, LOW); 
            client.println("Stato: OFF
");
            //CREA I PULSANTI RELATIVI A LED1    
            client.println("<a href='L3=0'>SPEGNI</a>");
            client.println("<a href='L3=1'>ACCENDI</a>");
          } 
          //TTOLO LED4
          client.println("<h1>LUCE CAMERA DA LETTO</h1>");
          //OPERAZIONI DA FARE QUANDO SI CLICCA PER ATTIVARE LEDON2:  
          if (LEDON4) { 
            digitalWrite(ledPin9, HIGH);
            client.println("Stato: ON
");
            //CREA I PULSANTI RELATIVI A LED1    
            client.println("<a href='L4=0'>SPEGNI</a>");
            client.println("<a href='L4=1'>ACCENDI</a>"); 
          } 
          else { 
            //OPERAZIONI DA FARE QUANDO SI CLICCA PER SPEGNERE LEDON2:    
            digitalWrite(ledPin9, LOW); 
            client.println("Stato: OFF
");
            //CREA I PULSANTI RELATIVI A LED1    
            client.println("<a href='L4=0'>SPEGNI</a>");
            client.println("<a href='L4=1'>ACCENDI</a>");
          } 
          client.print("</td>");
          client.print("<td align=""center"">");
          client.print("<table border='0' width=""100%"" height=""100%""><tr><td align=""center"">");  
          //output
          client.print("<h1>TEMPERATURA</h1>");
          client.print("
Temperatura in gradi Celsius: ");
          client.print(tempC);
          client.print(" 

");
          client.print("
Temperatura in gradi Fahrenheit: ");
          client.print(tempF);
          client.print(" 

");
          client.print("
Temperatura in gradi Kelvin: ");
          client.print(tempK);
          client.print(" 
");
          client.print("</td>");
          client.print("</tr><tr>");
          client.print("<td align=""center"">");
          client.print("<hr align=""left"" size=""2"" width=""100%"" noshade>");
          client.print("<h1>ALLARME</h1>");
          if (StatoSensore == HIGH){
            client.println("Stato: ON
");   
            client.println("<a href='http://192.168.0.100/'>SPEGNI</a>");
            client.println("<a href='http://192.168.0.100'>ACCENDI</a>");
          }
          else{
            client.println("Stato: OFF
");   
            client.println("<a href='http://192.168.0.100'>SPEGNI</a>");
            client.println("<a href='http://192.168.0.100'>ACCENDI</a>");
          }
          client.print("</td></tr></table>");
         
          //CHIUDE I TAG HTML PER LA PAGINA
          client.println("</body></html>");
          //SI PREPARA PER UNA NUOVA ISTRUZIONE
          readString="";
          //TERMINA LE OPERAZIONI CLIENTE
          client.stop();
        }
      }
    }
  }
  tempo = millis();
  //ogni minuto invio al database un valore
  if ((tempo % 60000) <= 100){
    if (client.connect(sql_server, 80)>0){
      Serial.println("Connesso");
      client.print("GET /temperature/Scrittura_temp.php/?valore=");
      client.print(tempC);
      client.println(" HTTP/1.0");
      client.println("User-Agent: Arduino 1.0");
      client.println();
    } else { Serial.print("Errore invio dati");}
    client.stop();
    client.flush();
   }else {Serial.print("Errore tempo");}
   bottone.read();
   if (bottone.wasReleased()){       
     acceso = !acceso;
   }
   if (acceso){
     digitalWrite(LEDallarme,HIGH);
     StatoSensore = digitalRead(pinPIR);
     // Stato allarme ON
     if (StatoSensore == HIGH){
       tone(pinPIEZO,1250);
     }
   }
   // Stato allarme OFF
   else{
     noTone(pinPIEZO);
     digitalWrite(LEDallarme,LOW);
   }
}[

why?

#include <String.h>

Get rid of this and ALL uses of the String class.

    Serial.print(F("Starting ethernet..."));

You started out using the F() macro, and then quit, pissing away memory. Why?

You are almost certainly running out of memory.

You probably have memory usage issues. Below is some server code that uses the F() macro which might help solve your issue.

// zoomkat's meta refresh data frame test page 8/17/13
// use http://192.168.1.102:84 in your brouser for main page
// http://192.168.1.102:84/data static data page
// http://192.168.1.102:84/datastart meta refresh data page
// for use with W5100 based ethernet shields
// set the refresh rate to 0 for fastest update
// use STOP for single data updates

#include <SPI.h>
#include <Ethernet.h>

const int analogInPin0 = A0;
const int analogInPin1 = A1;
const int analogInPin2 = A2;
const int analogInPin3 = A3;
const int analogInPin4 = A4;
const int analogInPin5 = A5;

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 102 }; // arduino ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(84); //server port
unsigned long int x=0; //set refresh counter to 0
String readString; 

//////////////////////

void setup(){
  Serial.begin(9600);
    // disable SD SPI if memory card in the uSD slot
  pinMode(4,OUTPUT);
  digitalWrite(4,HIGH);

  Ethernet.begin(mac, ip, gateway, gateway, subnet);
  server.begin();
  Serial.println(F("meta refresh data frame test 8/17/13")); // so I can keep track of what is loaded
}

void loop(){
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
         if (readString.length() < 100) {
          readString += c; 
         } 
        //check if HTTP request has ended
        if (c == '\n') {

          //check get atring received
          Serial.println(readString);

          //output HTML data header
          //client.println("HTTP/1.1 200 OK");
          //client.println("Content-Type: text/html");
          //client.println();
          
          client.print(F("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n"));

          //generate data page
          if(readString.indexOf("data") >0) {  //checks for "data" page
            x=x+1; //page upload counter
            client.print(F("<HTML><HEAD>"));
            //meta-refresh page every 1 seconds if "datastart" page
            if(readString.indexOf("datastart") >0) client.print(F("<meta http-equiv='refresh' content='1'>")); 
            //meta-refresh 0 for fast data
            if(readString.indexOf("datafast") >0) client.print(F("<meta http-equiv='refresh' content='0'>")); 
            client.print(F("<title>Zoomkat's meta-refresh test</title></head><BODY>
"));
            client.print(F("page refresh number: "));
            client.print(x); //current refresh count
            client.print(F("

"));
            
              //output the value of each analog input pin
            client.print(F("analog input0 is: "));
            client.print(analogRead(analogInPin0));
            
            client.print(F("
analog input1 is: "));
            client.print(analogRead(analogInPin1));
                        
            client.print(F("
analog input2 is: "));
            client.print(analogRead(analogInPin2));
            
            client.print(F("
analog input3 is: "));
            client.print(analogRead(analogInPin3));
                                    
            client.print(F("
analog input4 is: "));
            client.print(analogRead(analogInPin4));
            
            client.print(F("
analog input5 is: "));
            client.print(analogRead(analogInPin5));
            client.print(F("
</BODY></HTML>"));
           }
          //generate main page with iframe
          else
          {
            client.print(F("<HTML><HEAD><TITLE>Zoomkat's frame refresh test</TITLE></HEAD>"
            "Zoomkat's Arduino frame meta refresh test 8/17/13"
            "

Arduino analog input data frame:
"
            "&nbsp;&nbsp;<a href='/datastart' target='DataBox' title=''yy''>META-REFRESH</a>"
            "&nbsp;&nbsp;&nbsp;&nbsp;<a href='/data' target='DataBox' title=''xx''>SINGLE-STOP</a>"
            "&nbsp;&nbsp;&nbsp;&nbsp;<a href='/datafast' target='DataBox' title=''zz''>FAST-DATA</a>
"
            "<iframe src='/data' width='350' height='250' name='DataBox'>"
            "</iframe>
</HTML>"));
          }
          delay(1);
          //stopping client
          client.stop();
          //clearing string for next read
          readString="";
        }
      }
    }
  }
}

.