RC522 + Ethernet shield nao sei porque nao esta enviando

o que meu código deve fazer, receber e armazenar um IDcard, armazenar 4 chaves do teclado e enviar para o meu banco de dados via PHP (e cada passo mostrado no LCD)

porem na hora depois de enviar vou ver no banco de dados e nao esta la.

#include <SPI.h>
#include <RFID.h>
#include <Keypad.h>
#include <Ethernet.h>
#include <LiquidCrystal_I2C.h>

RFID rfid(8,9);

byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 };
char serv[] = "192.168.2.121";
LiquidCrystal_I2C lcd(0x27, 16, 2); 
IPAddress ip(192, 168, 2, 188);
EthernetClient client; 
 
char OS[4];
int cracha;
char funcao;
int estado = 0;
byte data_count = 0;
String nome_funcao;
String nome_pessoa;
int prioridade = 0;
String msg_lcd = "";
bool fica_aki = true;
bool cracha_1 = true;
bool pode_ir = false;
bool guarda69 = false;
bool cracha_69 = true;
bool autorizado = true;
bool sai_funcao = false;
bool modo_envia = false;
bool modo_finaliza = false;

char OS69[4];  
char guarda_funcao69;
char guarda_funcao1;
char OS1[4];  


const byte ROWS = 4;
const byte COLS = 3;
char hexaKeys[ROWS][COLS] = {
  {'1', '2', '3'},
  {'4', '5', '6'},
  {'7', '8', '9'},
  {'*', '0', '#'}
};
byte rowPins[ROWS] = {6,7,A0,A1};
byte colPins[COLS] = {2,3,5};
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);



void setup() {

   nome_funcao.reserve(17);
   nome_pessoa.reserve(11);
   lcd.init(); 
   lcd.backlight();
   SPI.begin();
   Ethernet.begin(mac, ip);
   lcd.print("Iniciando");
    if (Ethernet.begin(mac) == 0) {
      if (Ethernet.hardwareStatus() == EthernetNoHardware) {
      }
    }
   rfid.init();
  
}

void loop() {

  lcd.setCursor(0,0);
  lcd.print("BATA O CARTAO");
  if(rfid.isCard()){
    modo_cartao();
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Bom Trabalho");
    delay(1000);
  }
  rfid.halt();

  if(modo_envia == true){
    envia_dados();
    if(cracha == 69){cracha_69 = false;}
    else if(cracha == 1){cracha_1 = false;}
    modo_envia = false;
  }
}


void modo_cartao(){
      
      String rfidCard;
      if (rfid.readCardSerial()) {
        rfidCard = String(rfid.serNum[0]) + " " + String(rfid.serNum[1]) + " " + String(rfid.serNum[2]) + " " + String(rfid.serNum[3]);
        if(rfidCard == "202 73 165 21"){cracha = 69; guarda69=true;}
        else if(rfidCard == "199 91 20 179"){cracha = 1; guarda69=false;}
        verifica_pessoa();
        if(autorizado == true){
           pega_nome_pessoa();
           lcd.clear();
           lcd.setCursor(0,0);
           lcd.print("Ola");
           lcd.setCursor(4,0);
           lcd.print(nome_pessoa);
           lcd.setCursor(0,1);
           lcd.print("Insira a OS");
           delay(1000);
           while(pode_ir == false){
             modo_teclado();
           }
           modo_confirmar();
           pode_ir = false;
           modo_envia = true;
        }
        else if(autorizado == false){
          if(rfidCard == "202 73 165 21"){cracha_69 = true; cracha = 69;}
          else if(rfidCard == "199 91 20 179"){cracha_1 = true; cracha = 1;}
          modo_finaliza = true;
        }
        data_count = 0;
    }
}


void modo_teclado(){

  char customKey;
  lcd.setCursor(0,0);
  while(fica_aki == true){
    customKey = customKeypad.getKey();
    if(estado == 2){
      fica_aki = false;
    }
    
    if (customKey){
      if(customKey == '#'){
        OS[data_count--] = 0;
        data_count = 0;
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("Limpando");
        delay(500);
      }
      else if(customKey == '*'){
        estado++;
      }

      if(estado == 1){
        funcao = customKey;
        if(guarda69==true){guarda_funcao69 = customKey;}
        else if(guarda69==false){guarda_funcao1 = customKey;}
      }
      
      if(estado == 0){
        if(data_count == 0){
          lcd.clear();
        }
        if(guarda69==true){
          OS69[data_count] = customKey;
        }
        if(guarda69==false){
         OS1[data_count] = customKey;
        }         
        OS[data_count] = customKey;
        msg_lcd ="Numero da os";
        lcd.setCursor(0,0);
        lcd.print(msg_lcd);
        lcd.setCursor(data_count,1); 
        lcd.print(OS[data_count]); 

      }

      if(estado == 1){
        lcd.clear();
        msg_lcd = "Funcao";
        lcd.setCursor(0,0);
        lcd.print(msg_lcd);
      }
      
      if(funcao == '4'){
        pega_nome_funcao();
        lcd.setCursor(0,1);
        lcd.print(customKey);
        lcd.setCursor(2,1);
        lcd.print(nome_funcao);
        delay(1000);
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("qual prioridade");
        lcd.setCursor(0,1);
        lcd.print("U-1");
        lcd.setCursor(4,1);
        lcd.print("M-2");
        lcd.setCursor(8,1);
        lcd.print("N-3");
        while(sai_funcao == false){
          customKey = customKeypad.getKey();
          if(customKey == '1'){
            prioridade = 1;
            lcd.clear();
            lcd.setCursor(0,1);
            lcd.print("Urgente");
            lcd.setCursor(0,0);
            lcd.print("prioridade");
            delay(1000);
            sai_funcao = true;
          }
          if(customKey == '2'){
            prioridade = 2;
            lcd.clear();
            lcd.setCursor(0,1);
            lcd.print("Medio");
            lcd.setCursor(0,0);
            lcd.print("prioridade");
            delay(1000);
            sai_funcao = true;
          }
          if(customKey == '3'){
            prioridade = 3;
            lcd.clear();
            lcd.setCursor(0,1);
            lcd.print("Normal");
            lcd.setCursor(0,0);
            lcd.print("prioridade");
            delay(1000);
            sai_funcao = true;
          }
        }
        estado++;
      }
      else if(funcao == '0'){
          pega_nome_funcao();
          lcd.setCursor(0,1);
          lcd.print(customKey);
          lcd.setCursor(2,1);
          lcd.print(nome_funcao);
          delay(1000);
          estado++;
       }
          
       else if(funcao == '1'){
          pega_nome_funcao();
          lcd.setCursor(0,1);
          lcd.print(customKey);
          lcd.setCursor(2,1);
          lcd.print(nome_funcao);
          delay(1000);
          estado++;
       }
          
       else if(funcao == '2'){
          pega_nome_funcao();
          lcd.setCursor(0,1);
          lcd.print(customKey);
          lcd.setCursor(2,1);
          lcd.print(nome_funcao);
          delay(1000);
          estado++;
       }
          
       else if(funcao == '3'){
          lcd.setCursor(0,1);
          lcd.print(customKey);
          lcd.setCursor(2,1);
          lcd.print(nome_funcao);
          delay(1000);
          estado++;
       }
          
       else if(funcao == '5'){
          pega_nome_funcao();
          lcd.setCursor(0,1);
          lcd.print(customKey);
          lcd.setCursor(2,1);
          lcd.print(nome_funcao);
          delay(1000);
          estado++;
       }
          
       else if(funcao == '6'){
          pega_nome_funcao();
          lcd.setCursor(0,1);
          lcd.print(customKey);
          lcd.setCursor(2,1);
          lcd.print(nome_funcao);
          delay(1000);
          estado++;
       }
          
       else if(funcao == '7'){
          pega_nome_funcao();
          lcd.setCursor(0,1);
          lcd.print(customKey);
          lcd.setCursor(2,1);
          lcd.print(nome_funcao);
          delay(1000);
          estado++;
       }
          
       else if(funcao == '8'){
          pega_nome_funcao();
          lcd.setCursor(0,1);
          lcd.print(customKey);
          lcd.setCursor(2,1);
          lcd.print(nome_funcao);
          delay(1000);
          estado++;
       }
          
       else if(funcao == '9'){
          pega_nome_funcao();
          lcd.setCursor(0,1);
          lcd.print(customKey);
          lcd.setCursor(2,1);
          lcd.print(nome_funcao);
          delay(1000);
          estado++;
       }
       if(customKey != '#'){
        if(customKey != '*'){
          data_count++;
        }
       }
    }   
  }
  pode_ir = true;
  lcd.clear();
}

void modo_confirmar(){
  
  bool confirmacao = true;
  bool confirmado = false;
  bool pronto = false;
  char customKey;
  int i = 0;

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("OS:");
  
  while(i != (data_count - 1)){
    lcd.setCursor(i+3,0); 
    lcd.print(OS[i]);
    i++;
  }
  lcd.print("-");
  lcd.print("Funcao:");
  lcd.print(funcao);
  lcd.setCursor(0,1);
  lcd.print("confirma?"); 
  while(confirmado == false){
    customKey = customKeypad.getKey();
     if(customKey == '*'){
      confirmacao = false;
      confirmado = true;
     }
     else if(customKey == '#'){
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Corrigir OS:1");
      lcd.setCursor(0,1);
      lcd.print("Corrir Funcao:2");
      confirmacao = true;
      confirmado = true;
     }
  }
  while(confirmacao == true){
    customKey = customKeypad.getKey();
    if(customKey == '1'){
      lcd.clear();
      OS[data_count--] = 0;
      data_count = 0;
      msg_lcd ="Numero da os";
      lcd.setCursor(0,0);
      lcd.print(msg_lcd);
      while(pronto == false){
        customKey = customKeypad.getKey();
        if(customKey == '*'){
          pronto = true;
          confirmacao = false;
        }
        else if(customKey){
          if(guarda69==true){
            OS69[data_count] = customKey;
          }
          if(guarda69==false){
            OS1[data_count] = customKey;
          }
          OS[data_count] = customKey;
          lcd.setCursor(data_count,1); 
          lcd.print(OS[data_count]);
          data_count++;
        }
       }
      }
    else if(customKey == '2'){
      lcd.clear();
      funcao = -1;
      if(guarda69==true){guarda_funcao69 = -1;}
      else if(guarda69==false){guarda_funcao1 = -1;}
      sai_funcao = false;
      msg_lcd ="Numero da funcao";
      lcd.setCursor(0,0);
      lcd.print(msg_lcd);
      while(pronto == false){
        customKey = customKeypad.getKey();
        if(customKey){
          funcao = customKey;
          if(guarda69==true){guarda_funcao69 = customKey;}
          else if(guarda69==false){guarda_funcao1 = customKey;}
          if(customKey != 4){
            pega_nome_funcao();
            lcd.clear();
            lcd.setCursor(0,1); 
            lcd.print(funcao);
            lcd.setCursor(0,0);
            lcd.print(nome_funcao);
            delay(1500);
            pronto = true;
            confirmacao = false;
          }
          else if(customKey == 4){
           while(sai_funcao == false){
            customKey = customKeypad.getKey();
            if(customKey){
              if(customKey == '1'){
                lcd.clear();
                lcd.setCursor(0,1);
                lcd.print("Urgente");
                lcd.setCursor(0,0);
                lcd.print("prioridade");
                delay(1500);
                prioridade = 1;
                sai_funcao = true;
              }
              if(customKey == '2'){
                lcd.clear();
                lcd.setCursor(0,1);
                lcd.print("Media");
                lcd.setCursor(0,0);
                lcd.print("prioridade");
                delay(1500);
                prioridade = 2;
                sai_funcao = true;
              }
              if(customKey == '3'){
                lcd.clear();
                lcd.setCursor(0,1);
                lcd.print("Normal");
                lcd.setCursor(0,0);
                lcd.print("prioridade");
                delay(1500);
                prioridade = 3;
                sai_funcao = true;
              } 
            }
          }
         }
       }
     }
   }
 }
 pode_ir = false;
}

void envia_dados(){

  bool conectou = false;
  while(conectou){
      if (client.connect(serv, 80)) { //Connecting at the IP address and port we saved before
        conectou = true;
        client.print("GET /ethernet2/data.php?"); //Connecting and Sending values to database
        client.print("OS=");
        client.print(OS);
        client.print("&funcao=");
        client.print(funcao);
        client.print("&cracha=");
        client.println(cracha);
        client.stop();
    }
  }
}

void finaliza_OS(){

  bool conectou = false;
  while(conectou){
    if(cracha = 69){
      if (client.connect(serv, 80)) { //Connecting at the IP address and port we saved before    
        client.print("GET /ethernet2/data.php?"); //Connecting and Sending values to database
        client.print("OS=");
        client.print(OS69);
        client.print("&funcao=");
        client.print(funcao);
        client.print("&cracha=");
        client.println(cracha);
        client.stop();
      }
    }
    else{
      if (client.connect(serv, 80)) { //Connecting at the IP address and port we saved before
        client.print("GET /ethernet2/data.php?"); //Connecting and Sending values to database
        client.print("OS=");
        client.print(OS1);
        client.print("&funcao=");
        client.print(funcao);
        client.print("&cracha=");
        client.println(cracha);
        client.stop();
      }
    }
  }
}

void pega_nome_funcao(){

  switch (funcao){
    case '1':
      nome_funcao = "- higiene ext";
      break;
    case '2':
      nome_funcao = "- desmontagem";
      break;
    case '3':
      nome_funcao = "- relacao peca";
      break;
    case '4':
      nome_funcao = "- prioridade";
      break;
    case '5':
      nome_funcao = "- estoque";
      break;
    case '6':
      nome_funcao = "- higiene peca";
      break;    
    case '7':
      nome_funcao = "- montagem";
      break;
    case '8':
      nome_funcao = "- teste";
      break;
    case '9':
      nome_funcao = "- check-out";
      break;
    case '0':
      nome_funcao = "- check-in";
      break;
  }
}

void pega_nome_pessoa(){
  if(cracha == 1){
    nome_pessoa = "Armando";
  }
  else if(cracha == 69){
    nome_pessoa = "Francisco";
  }
}

void verifica_pessoa(){
  if(cracha == 1){
   if(cracha_1 == true){
    autorizado = true;
   }
   else if(cracha_1 == false){
    autorizado = false;
   }
  }

  if(cracha == 69){
   if(cracha_69 == true){
    autorizado = true;
   }
   else if(cracha_69 == false){
    autorizado = false;
   }
  }
}