ACCESSO REMOTO arduino uno + shield eth+rfid+php

Salve ragazzi, sto cercando di realizzare un accesso remoto con un rfid rc522 con uno shield eth e arduino uno.
Teoricamente l' idea e semplice. Leggo id del tag, arduino invia al server, il server controlla se id è nel suo database, se si mi da risposta "ok", entro, altrimenti "ko", no. Semplice giusto? no.
Lo skech è il seguente:

#include <Wire.h>    //lcd
#include <LiquidCrystal_I2C.h>   //lcd
#include<SPI.h>
#include<MFRC522.h>
#include<SoftwareSerial.h>
#include <Ethernet.h>

#define SS_PIN 9 //FOR RFID SS PIN BECASUSE WE ARE USING BOTH ETHERNET SHIELD AND RS-522
#define RST_PIN 8
#define No_Of_Card 3


byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte server[] = {1, 1, 1, 1}; //YOUR SERVER
IPAddress ip(192, 168, 0, 104);
EthernetClient client;

SoftwareSerial mySerial(8, 9);
MFRC522 rfid(SS_PIN, RST_PIN);
MFRC522::MIFARE_Key key;

LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x27 for a 16 chars and 2 line display
char ok;
char permesso;
byte i;
byte id_temp[3][3];
String id;

void setup()
{
  //LCD
  lcd.init();                      // initialize the lcd
  lcd.init();
  // Print a message to the LCD.
  lcd.backlight();
  /////////fine LCD

  pinMode(2, OUTPUT); //led verde
  pinMode(6, OUTPUT); //buzzer
  Serial.begin(9600);
  mySerial.begin(9600);
  SPI.begin();
  rfid.PCD_Init();
  for (byte i = 0; i < 6; i++)
  {
    key.keyByte[i] = 0xFF;
  }
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    Ethernet.begin(mac, ip);
  }
  delay(1000);
  Serial.println("connessione...");
}


void loop()
{
  id = "";
  int m = 0;

  if (!rfid.PICC_IsNewCardPresent())
    return;
  if (!rfid.PICC_ReadCardSerial())
    return;
  for (i = 0; i < 4; i++)
  {
    id_temp[0][i] = rfid.uid.uidByte[i];
    id = id + rfid.uid.uidByte[i];
    Serial.print(rfid.uid.uidByte[i]);
    Serial.print(" ");
    delay(50);
  }

  Sending_To_DB();

  // Halt PICC
  rfid.PICC_HaltA();
  Serial.println();

  // Stop encryption on PCD
  rfid.PCD_StopCrypto1();
  Serial.println(" \n ID: " + id); //test
}

void Sending_To_DB()  {  //CONNECTING WITH MYSQL

  if (client.connect(server, 80)) {
    Serial.println("connesso");
    // Make a HTTP request:
    client.println("GET /arduino.php?idcardnfc=" + id);
    Serial.println("GET /arduino.php?idcardnfc=" + id); //YOUR URL
    //client.print(" ");      //SPACE BEFORE HTTP/1.1
    client.println("HTTP/1.1");
    client.println("Host: www.ilmiosito.it");
    client.println();
    //client.stop();
  }
  else {
    Serial.println("connessione al file sul server web fallita");
  }
  if (client.connected()) {

    if (client.find("permesso:")) {
      //ok = client.parseInt();
      client.find("ok");
      float value = client.parseFloat();
      Serial.print("permesso: ");
      Serial.println(value);
      if (permesso == ok) {
        digitalWrite(2, HIGH);
        Serial.println ("permesso:ok");
      }
      else {
        digitalWrite(6, HIGH);
        Serial.println ("permesso:ko");
      }
    }
    else {
      Serial.println ("disconnesso");
    }
    client.stop();
  }
  /*    
    if (client.find("<span"pr\">")) {
       client.find(">");
      float value = client.parseFloat();
       Serial.print("Ilre delle azioni di Google: ");
    Serial.println(value);
    
    }}
    if (client.connected()) {

    if (client.find("permesso:")) {
      char permesso = client.parseInt();
      Serial.print("permesso:");
      Serial.println (permesso);
      if (permesso == ok)
        char ok = client.read();



      Serial.print(ok);
      client.stop();

      lcd.backlight();
      lcd.setCursor(3, 0);
      lcd.print(codice);
      delay (3000);
      lcd.clear();
      digitalWrite(2, HIGH);//led verde
      digitalWrite(6, HIGH); //buzzer
      delay(50);
      digitalWrite(2, LOW);
      digitalWrite(3, LOW);
      delay(150);
      digitalWrite(2, HIGH);
      digitalWrite(3, HIGH);
      delay(500);
      digitalWrite(2, LOW);
      digitalWrite(3, LOW);
      delay(10);

    } else {
      // if you didn't get a connection to the server:
      Serial.println("connection failed");
    }
    }*/

}

il codice php è questo:

<?php


$idnfc = $_GET['idcardnfc'];
$idnfcpost = $_POST['idcardnfc'];

if($idnfc=="11210354165" || $idnfcpost=="11210354165" ){
	$messaggio = array('messaggio'=> "Sei abilitato ad entrare", 'permesso'=>'ok');
}else{
	$messaggio = array('messaggio'=> "Non sei abilitato ad entrare", 'permesso'=>'ko');
	}


echo json_encode($messaggio);

da broser:

{"messaggio":"Non sei abilitato ad entrare","permesso":"ko"}

Questo e invece il monitor seriale:

connessione...
112 103 54 165 connesso
GET /arduino.php?idcardnfc=11210354165
disconnesso

 
 ID: 11210354165

Sono sincero, ho quasi esaurito la quantità di scrittura per i tentativi fatti.

perchè non riesco ad riceve il permesso ok? dove sbaglio?

grazie a tutti.

Buongiorno,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda:
- serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- pinout delle varie schede by xxxPighi: Pinout
- link generali utili: Link Utili

Salve ragazzi.
Oggi sono riuscito a fare un piccolissimo passo in avanti.
Ho fatto delle micro modifiche allo sketch:

void Sending_To_DB()  { 

  if (client.connect(server, 80)) {
    Serial.println("connesso");
    client.println("GET /arduino./arduino.php?idcardnfc=" + id);
    Serial.println("GET /arduino.php?idcardnfc=" + id);
    client.println("HTTP/1.1");
    client.println("Host: www.ilmiosito.it");
    client.println( "Connection: close" );
    client.println();
    
  }
  else {
    Serial.println("connessione al server web fallita");
  }
  if (client.connected()) {
    char c = client.read();
    Serial.print(c);
  }

  if (client.find('permesso')) {
    client.find(':');
    client.find('ok');
    ok = client.parseInt();
    Serial.print("permesso");
    Serial.println(ok);
    if (ok == ok) {
      digitalWrite(2, HIGH);
      delay(300); 
      digitalWrite(2, LOW);
      delay(200);
      digitalWrite(2, HIGH);
      delay(300);
      digitalWrite(2, LOW);
      delay(200);
      Serial.println ("permesso:ok");
    }
    else {
      digitalWrite(5, HIGH);
      delay(300);
      digitalWrite(5, LOW);
      delay(300);
      digitalWrite(5, HIGH);
      delay(300);
      digitalWrite(5, LOW);
      delay(200);
      Serial.println ("permesso:ko");
    }
  }
  else {
    Serial.println ("disconnesso");
    digitalWrite(2, HIGH);
    delay(300);
    digitalWrite(2, LOW);
    delay(200);
    digitalWrite(5, HIGH);
    delay(300)
    digitalWrite(5, LOW);
    delay(200);
  }
  client.stop();
}

Ora però, anche se leggo un id tag diverso di quello che ho nel database mi da sempre ok.
Ho già provato a cambiare la parola nel comando di ricerca "if (client.find('messaggio')) {" ma nulla.
Ho notato anche che nel monitor seriale sono comparsi un 1 o 0 come risposta a "permesso".
Il comando client.parseInt se non erro dovrebbe cercare un numero intero, giusto? ma esiste un comando simile per String o char.
Mi sto veramente esaurendo.

non sono stato a leggere tutto ma qui tu leggi un solo carattere, non tutti quelli disponibili

  if (client.connected()) {
    char c = client.read();
    Serial.print(c);
  }

  if (client.find('permesso')) {

Non ho mai usato la connessione a qualche server, ma ci sono diverse cose strane:

 if (client.connected()) {
    char c = client.read();
    Serial.print(c);
  }

Qui leggi un carattere e lo stampi sul monitor seriale... A cosa ti serve quel carattere?

if (client.find('permesso')) {
    client.find(':');
    client.find('ok');
    ok = client.parseInt();
    Serial.print("permesso");
    Serial.println(ok);

Qui controlli la stringa "permesso" (che credo vada tra doppi apici) nell'if.
Poi controlli ":" e "ok"... ma cosa dovrebbero fare queste 2 istruzioni?
Poi alla variabile ok assegni un intero... cosa ti aspetti dalla parseInt()?

In ogni caso, questo è sicuramente un errore:

if (ok == ok) {

Confronti la variabile con sè stessa, quindi quell'if sarà sempre vera...

Ragazzi scusatemi ma non riesco ad venirne a capo.
Ho ri-ri-ri-provato a cambiare per ennesima volta il codice, ma nulla.
Ho pensato, se è possibile accendere un led via web, potrei utilizzare la stessa cosa col mio.

Sending_To_DB();

  // Halt PICC
  rfid.PICC_HaltA();
  Serial.println();

  // Stop encryption on PCD
  rfid.PCD_StopCrypto1();
  Serial.println(" \n ID: " + id); //test
}

void Sending_To_DB()  {  //CONNECTING WITH MYSQL

  if (client.connect(server, 80)) {
    Serial.println("connesso");
    // Make a HTTP request:
    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.ilmiosito.it");
    client.println();
    //client.stop();
  }
  else {
    Serial.println("connessione al server web fallita");
    return;
  }
  if (client.connected()) {
    while(client.connected()){
      char c = client.read();
      ascoltatore.concat(c);
      Serial.println (ascoltatore);
      if (c == '\n'){
        if(ascoltatore.indexOf("ok")==ok){
          digitalWrite(2,HIGH);
        }
        else {
          digitalWrite(2,LOW);
        }
        client.println("HTTP/1.0 200 OK"); //dico al client che è tutt'ok - standard http
        client.println("Content-Type: text/html"); //indico il formato - standard http
        client.println(); //necessario per non buggare 
        client.println("<html>"); //inizio codice html
        client.println("<head></head>");
        client.println("<body><'{'messaggio':'Sei abilitato ad entrare','permesso':'ok'}'></body");
        client.println("</html>"); //fine codice html
        client.stop(); //stop richieste dal client
        ascoltatore="";
        
      }
    }
  }
}

ma come risposta ricevo solo questo:

connessione...
112 103 54 165 connesso
GET /arduino.php?idcardnfc=11210354165
⸮
⸮⸮
⸮⸮⸮
⸮⸮⸮⸮
⸮⸮⸮⸮⸮
⸮⸮⸮⸮⸮⸮
⸮⸮⸮⸮⸮⸮⸮
⸮⸮⸮⸮⸮⸮⸮⸮
⸮⸮⸮⸮⸮⸮⸮⸮⸮
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!D
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DO
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOC
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCT
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTY
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYP
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE 
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE H
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HT
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTM
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML 
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML P
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PU
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUB
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBL
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLI
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC 
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-/
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//I
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IE
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IET
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF/
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF//
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF//D
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF//DT
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF//DTD
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF//DTD 
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF//DTD H
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF//DTD HT
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTM
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0/
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//E
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">


 
 ID: 11210354165

Qualcuno mi potrebbe dare una illuminazione?
Dove sto sbagliando?

client.println("GET /arduino.php?idcardnfc=" + id);

In C non puoi concatenare le stringhe in questo modo.

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.