ACCESSO REMOTO arduino uno + shield eth+rfid+php

Finalmente dopo settimane e settimane di tentativi sono riuscito a risolvere, lo sketch funziona.
Non è stato facile sono sincero, tanto che la maggior parte del codice è stato scoppiezzato un po qua e un po la sul web.
Vorrei ringraziare a tutti voi, che mi avete risposto e dato dritte, suggerimenti ma ancor di più ad Mr. Plin dove ho preso parte del codice.
A breve inserirò anche il codice php che vorrei condividere, ma lo sto ancora aggiustando, diciamo che è ancora in versione beta.

#include <SPI.h>
#include <Ethernet.h>
#include <MFRC522.h>
#include<LiquidCrystal_I2C.h>
#include<Wire.h>
#include <utility/w5100.h>

//********** SETUP **********
const IPAddress server(1, 1, 1, 1);//IP SERVER, NON IL SITO PERCHE E' PIU VELOCE
const int serverPort = 80;//PORTA SERVER
EthernetClient client;
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0xE5, 0x0F };//MAC ADDRESS SCHEDA DI RETE (VEDI ETICHETTA SUL RETRO)
byte ip[] = {192, 168, 0, 121};//INDIRIZZO IPV4
byte subnet[] = {255, 255, 255, 0};//INDIRIZZO SUBNET
byte gateway[] = {192, 168, 0, 1};//INDIRIZZO GATEWAY
const String gate = "frosinone";//LOCAZIONE

//master card
const String master0 = "706736a2";//MASTER CARD, IN CASO DI ASSENZA DI LINEA QUESTA CARTA PUO ACCEDERE UGUALMENTE
const String master1 = "xxxxxxxx";//SE OCCORE
LiquidCrystal_I2C lcd(0x27, 20, 4);//(A0, A1, A2, A3, A4, A5);
#define SS_PIN 8// //PIN SDA SULLASCHEDA RFID
#define RST_PIN 9//PIN RESET (RST) SULLA SCHEDA RFID
MFRC522 mfrc522(SS_PIN, RST_PIN);// CREO ISTANZA MFRC522.
String ID = "";//Codice ID-RFID IN HEX
const int chipSelectPinETH = 10;//SS SU SCHEDA ETHERNET SHIELD
const int chipBuzzerPin = 3;//USCITA BUZZER
const int chipRelayPin = 4;//USCITA RELE'
const int activateTime = 1000;//TEMPO ATTIVAZIONE RELE'
const int chipLedPin = 5;//USCITA LED
//********** END SETUP **********

void setup() {
  Serial.begin(9600);
  SPI.begin();
  //SPI.setClockDivider(SPI_CLOCK_DIV128);  //2, 4, 8, 16, 32, 64 or 128.//SE ATTIVATO, ABBASSO IL CLOCK PER SUPPORTARE LUNGHEZZE MAGGIORI DEI CAVI
  while (!Serial) {
    ; //ATTENDI LA CONNESSIONE DELLA PORTA SERIALE. SOLO PER LEONARDO
  }
  lcd.begin(20, 4);
  lcd.init();
  lcd.backlight();
  pinMode(chipSelectPinETH, OUTPUT);//PIN 10 CONTRALLA LE ETHERNET, HIGH=DISATTIVATA , LOW=ATTIVATA
  pinMode(SS_PIN, OUTPUT);//PIN 8 CONTROLLO RFID, HIGH=DISATTIVATA , LOW=ATTIVATA
  setupRelay();
  setupBuzzer();
  setupLed();
  digitalWrite(chipSelectPinETH, HIGH);//DISABILITO LA ETHERNET
  digitalWrite(SS_PIN, HIGH); //DISABILITO RFID
  delay(250);
  Ethernet.begin(mac, ip);
  lcd.setCursor(0,0);
  lcd.print("   ATTESA DHCP  ");
  lcd.setCursor(0,0);
  lcd.print("    MAGAZZINO    ");
  delay(1000);
  lcd.setCursor(0,1);
  lcd.print("  INGRESSO VIETATO  ");
  delay(1000);
  digitalWrite(chipSelectPinETH, HIGH);//DISABILITO LA ETHERNET
  mfrc522.PCD_Init(); //INIZIALIZZO RFID
  beep();//SEGNALO CHE E' ATTIVO
  W5100.setRetransmissionTime(0x1388);//CAMBIO IL TIMEOUT DELLA LAN
  W5100.setRetransmissionCount(3);
}

void loop()
{
  lcd.setCursor(0,2);
  lcd.print("* AVVICINARE CARTA *");
  lcd.setCursor(0,3);
  lcd.print("********************");
  setLed(HIGH);
  delay(50);
  setLed(LOW);
  delay(450);
  ID = getCard();
  if (ID != "")
  {
    beep();
    connectOnHttp(ID);
  }
  setLed(HIGH);
  delay(50);
  setLed(LOW);
  delay(450);
  ID = getCard();
  if (ID != "")
  {
    beep();
    connectOnHttp(ID);
  }
  delay(200);
}
//BUZZER
void beep()
{
  digitalWrite(chipBuzzerPin, HIGH);
  delay(120);
  digitalWrite(chipBuzzerPin, LOW);
  delay(120);
}

void beepLong()
{
  digitalWrite(chipBuzzerPin, HIGH);
  delay(5000);
  digitalWrite(chipBuzzerPin, LOW);
  delay(120);
}

void setupBuzzer()
{
  pinMode(chipBuzzerPin, OUTPUT);
  digitalWrite(chipBuzzerPin, LOW);
}
//HTTP
void connectOnHttp(String mynum)//CONTROLLO VIA HTTP SE ID E' ABILITATO
{
  if (mynum == master0 ||
      mynum == master1
     )
  {
    lcd.setCursor(0,3);
    lcd.print("     MASTER CARD    "); //ATTIVO RELE'
    activate();
    return;
  }
  String returnWebStr = "";
  digitalWrite(SS_PIN, HIGH);//DISABILITO RFID
  digitalWrite(chipSelectPinETH, LOW);//ABILITO LA ETHERNET
  lcd.setCursor(0,2);
  lcd.print("   COLLEGAMENTO  >>> ");
  delay (1000);

  if (client.connect(server, serverPort))
  {
    lcd.setCursor(0,2);
    lcd.print("      COLLEGATO     ");
    delay (1000);
    client.println("GET http://xxxxx.it/arduino.php?idcardnfc=" + ID + "&gate=" + gate );
    client.print(" ");
    client.println("Connection: close");
    client.println();
  }
  else {
    lcd.setCursor(0,3);
    lcd.print("COLLEGAMENTO FALLITO");
    delay (1000);
  }
  while (client.connected())
  {
    if (client.available())
    {
      char c = client.read();
      returnWebStr += c;
    }
  }//SE IL SERVER E' DISCONNESSO, FERMA IL CLIENT
  if (!client.connected()) {
    client.stop();
    if (returnWebStr.substring(0, 2) == "ok" )
    {
      lcd.setCursor(0,3);
      lcd.print("ACCESSO  AUTORIZZATO");
      delay (1000);
      beep();
      activate();
    }
    else
    {
      lcd.setCursor(0,3);
      lcd.print("  ACCESSO   NEGATO  ");
      delay (1000);
      setLed(HIGH);
      beepLong();
      setLed(LOW);
    }
  }
  delay(1000);
  returnWebStr = "";
  digitalWrite(chipSelectPinETH, HIGH);//DISABILITO LA ETHERNET
  digitalWrite(SS_PIN, LOW);//ABILITO RFID
}
//LED
void setupLed()
{
  pinMode(chipLedPin, OUTPUT);
  digitalWrite(chipLedPin, LOW);
}
void setLed(boolean state)
{
  digitalWrite(chipLedPin, state);
}
//RELE
void setupRelay()
{
  pinMode(chipRelayPin, OUTPUT);
  digitalWrite(chipRelayPin, HIGH);
}
void activate()
{
  beep();
  setLed(HIGH);
  digitalWrite(chipRelayPin, LOW);
  delay(activateTime);
  digitalWrite(chipRelayPin, HIGH);
  setLed(LOW);
  delay(500);
}
//RFID
String getCard()
{
  if ( ! mfrc522.PICC_IsNewCardPresent()) {//CREO NUOVA CARTA
    return "";
  }
  if ( ! mfrc522.PICC_ReadCardSerial()) {//SELEZIONA UNA DELLE CARTE
    return "";
  }
  String uid_s = "";
  if (!mfrc522.PICC_IsNewCardPresent() && !mfrc522.PICC_ReadCardSerial()) {
    for (byte i = 0; i < mfrc522.uid.size; i++) {
      String uid_a = String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "");
      String uid_b = String(mfrc522.uid.uidByte[i], HEX);
      uid_s = uid_s + uid_a + uid_b;
    }
  }
  return uid_s;
}

ma la sezione di codice che mi ha fatto di più elencare il calendario sono state queste 4 rige:

if (client.connect(server, serverPort))
  {
    lcd.setCursor(0,2);
    lcd.print("      COLLEGATO     ");
    delay (1000);
    client.println("GET http://xxxxx.it/arduino.php?idcardnfc=" + ID + "&gate=" + gate );
    client.print(" ");
    client.println("Connection: close");
    client.println();

non capisco esattamente il motivo ma sia sui sketch esempio e sia sul web, ho trovato sempre il codice scritto cosi, e dava sempre errore "pagina non trovata" il che era impossibile.

    client.println("GET /arduino.php?idcardnfc=" + id);
    Serial.println("GET /arduino.php?idcardnfc=" + id); //Test
    client.print(" ");      //SPACE BEFORE HTTP/1.1
    client.println("HTTP/1.0");
    client.println("Host: www.innet.it");
    client.println();
    //client.stop();

Ma eliminando il "client.println("HTTP/1.1 o 1.0"); client.println(host: "www.ilmiosito.it"); e inserendo direttamente nel GET /www.ilmiosito.it/arduino.php?idcardnfc=" + id;
Ha funzionato.