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 ([u]spiegando bene quali conoscenze hai di elettronica e di programmazione[/u] ... possibilmente [u]evitando[/u] 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, [u]NON[/u] 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 [u]generali[/u] 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.