Come integrare Google reCAPTCHA con PHP?

 

Al giorno d’oggi tutti vogliono sbarazzarsi dello spam sul proprio sito web, che si tratti di commenti spam, messaggi spam o traffico spam sul proprio sito. Per proteggere il tuo sito web dallo spam, uno dei modi migliori e più semplici è utilizzare Google reCAPTCHA.

In passato, le persone mettevano un numero o una stringa casuale sullo schermo e lo verificavano sul lato server. Ma questo metodo è quello dei vecchi tempi e richiede molto tempo per molti utenti, mentre il metodo reCAPTCHA di Google è facile da usare e richiede meno tempo, con conseguente migliore esperienza utente. Basta un solo clic per dimostrare che sono esseri umani e non robot. Google reCAPTCHA è molto semplice da implementare in uno script PHP.

Raccomandato Leggi: Come integrare la protezione di Google ReCaptcha nel tuo negozio PrestaShop?

In questo blog imparerai come integrare Google reCaptcha con PHP nella nostra guida passo passo.

Passaggio 1: recuperare la chiave API di Google reCAPTCHA

Per ottenere una chiave API per utilizzare reCAPTCHA con PHP, devi registrare il tuo sito web su: https://www.google.com/recaptcha/admin. Gli screenshot sono riportati di seguito per tuo aiuto:


Etichetta: Utilizza un’etichetta di tua scelta, in modo che sia facile riconoscere il sito in futuro. Puoi aggiungere il nome del tuo marchio o l’URL del sito web in questo campo per migliorare la leggibilità del nome del progetto.

Tipo reCAPTCHA: Scegli il tipo di reCAPTCHA che preferisci per il tuo sito. Attualmente sono disponibili due tipi, ovvero reCAPTCHA v3 e reCAPTCHA v2. Abbiamo utilizzato reCAPTCHA v2 nel progetto di esempio.

domini: Qui devi inserire il nome del tuo sito web per il quale implementerai la funzionalità reCAPTCHA. Si applica ai domini che inserisci qui e anche ai relativi sottodomini. Ad esempio, una registrazione per abc.com registra anche xyz.abc.com.

Ora basta selezionare la casella di controllo Accetta i Termini di servizio di reCAPTCHA e fai clic sul pulsante Invia.

Ora hai la chiave del sito e la chiave segreta per il tuo sito web.

Passaggio 2: per implementare Google reCaptcha con PHP, il secondo passaggio prevede l’implementazione della funzionalità reCAPTHA sul tuo sito:

  • Per aggiungere reCAPTCHA in PHP devi prima includere la libreria JavaScript reCAPTCHA nel tuo HTML.
    
    
  • Ora aggiungi questo codice HTML nel punto in cui desideri mostrare il widget reCAPTCHA.
    
    
  • Sostituisci “site_key” con la chiave del sito fornita da Google per il tuo sito web.
  • Ora è fatto, basta aggiornare la tua pagina e vedrai il widget reCAPTCHA sul tuo sito.

Passaggio 3: Per convalidare la risposta dell’utente

Ora devi convalidare la risposta quando un utente fa clic sul widget reCAPTCHA. Il codice PHP per verificare la risposta dell’utente è riportato di seguito:

success) { $succMsg = 'La tua richiesta di contatto è stata inviata con successo.'; } else { $errMsg = 'Verifica del robot fallita, riprova.'; } } ?>

Aggiungi la tua vera chiave segreta nel codice sopra e il gioco è fatto.

Ottieni il codice di esempio qui.

Raccomandato Leggi: Due moduli efficaci per tenere lontani spammer e bot dal negozio PrestaShop

Knowband offre il componente aggiuntivo Google ReCaptcha per varie piattaforme, tra cui PrestaShop, ed OpenCart. Il modulo Google ReCaptcha è un potente strumento di sicurezza che protegge il tuo sito web dalle voci di spam facilitando al contempo un facile accesso per gli utenti effettivi.

Il plug-in Google ReCaptcha può essere utilizzato per l’accesso, la registrazione, la reimpostazione della password, moduli di contatto noti e altre cose. Le immagini vengono mostrate nel componente aggiuntivo Google ReCaptcha come parte dei processi di convalida standard per aiutare a identificare gli esseri umani.

Questo modulo Google reCaptcha offre prestazioni eccellenti ed è estremamente personalizzabile. Dal back-end dei moduli Knowband, l’e-mercante può modificare rapidamente il componente aggiuntivo Google reCaptcha.

Componente aggiuntivo Google ReCaptcha di Prestashop

PrestaShop Google reCaptcha di Knowband migliora la sicurezza del tuo negozio integrando Google reCaptcha, prevenendo spam e bot automatizzati.

Acquistare ora

Parole finali:

L’implementazione di Google reCAPTCHA sui siti Web è essenziale per la sicurezza. Aiuta a distinguere gli utenti reali dai bot, prevenendo spam e attacchi automatizzati. Ciò mantiene i dati degli utenti al sicuro e garantisce che il sito Web funzioni senza intoppi. Bloccando il traffico dannoso, reCAPTCHA migliora l’esperienza dell’utente, rendendo le interazioni online più sicure e affidabili.

Lettura consigliata – Potenzia la sicurezza del tuo negozio PrestaShop con i migliori moduli PrestaShop di Knowband
Oltre a questo, Google reCaptcha è anche compatibile con One Page Checkout di Knowband, proteggendoti dalle frodi sulle transazioni. È il modo migliore per proteggere il tuo negozio dalle frodi sulle transazioni. Per visualizzare la demo amministrativa e la demo front-end del modulo Google reCaptcha, visita il nostro Tornare al suo account.

Evita che gli spammer danneggino la tua attività!

 

Come modificare lo stato dell'ordine predefinito su WooCommerce

A volte, durante lo sviluppo di un sito Web di e-commerce, dovrai controllare automaticamente lo stato del pagamento e contrassegnare lo stato dell'ordine come "Aver completato il“”Attesa Pagamento"o in base alle tue esigenze. Uno stato dell'ordine predefinito è impostato sulla base del pagamento effettuato. Gli utenti front-end possono controllare lo stato del loro ordine nella pagina Cronologia account. In questo blog impareremo come modificare lo stato dell'ordine predefinito su Woo Commerce come "Fattura da stampare" passo dopo passo.

Passaggio 1: creare un plug-in personalizzato

Per creare un plug-in personalizzato sul tuo sito Web, procedi come segue:

1. Passare alla cartella dei plugin di Word Press, nel nostro caso si tratta di app / plug-in. Crea una cartella come "customstatus“.

Nota importante: Assegna alla tua cartella un nome univoco (il nome dei plug-in predefiniti di Word Press non deve essere in conflitto con il nome del tuo plug-in) utilizzando lettere minuscole e trattini.

2. Ora crea il file PHP principale del tuo plugin. Per fare ciò, crea un file PHP nella cartella del tuo plugin e assegnagli lo stesso nome della cartella. Nel nostro caso, il nome della cartella è "customstatus", quindi il nome del file sarà customstatus.php.

3. Imposta le informazioni del tuo plug-in. Basta copiare incolla il codice seguente nel file customstatus.php.

/ **
?* Plugin Name: My First Plugin
?* Plugin URI: https://www.mywebsite.com/my-first-plugin
?* Description: The very first plugin that I have ever created.
?* Version: 1.0
?* Author: Your Name
?* Author URI: https://www.mywebsite.com
?*/

Nota: Modifica i dettagli come Nome autore, Nome plug-in, Descrizione, ecc. In base alle tue esigenze.

4. Questo è tutto! Hai appena completato il numero minimo di passaggi necessari per creare un plug-in Word Press. Ora puoi attivarlo dalla scheda Plugin in Word Press admin.

Passaggio 2: aggiungi il codice nel plug-in personalizzato

1. Ora dobbiamo creare una funzione e agganciarla a un'azione specifica. Copia semplicemente la funzione seguente nel tuo customstatus.php.

2. Poiché vogliamo aggiornare lo stato dell'ordine al pagamento completo, aggiungi un'azione all'hook "woocommerce_payment_complete" come indicato di seguito nel codice evidenziato. // COPIA IL CODICE INTERO NEL FILE customstatus.php.

# <editor-fold defaultstate = "collapsed" desc = "Stato predefinito come fattura da stampare"> funzione action_woocommerce_payment_complete ($ order_id) {if (! $ order_id) return; $ order = wc_get_order ($ order_id); $ order-> update_status ('wc-print-fattura'); // Lo stato dell'ordine verrà aggiornato in "Fattura da stampare". }; // aggiungi l'azione add_action ('woocommerce_payment_complete', 'action_woocommerce_payment_complete', 10, 3); # </ Redattore fold>

3. Basta salvare il file customstatus.php ed è fatto. D'ora in poi, lo stato dell'ordine verrà aggiornato in "Fattura da stampare" al termine del pagamento.

NOTA UTILE: Se desideri aggiornare lo stato dell'ordine quando viene caricata la pagina "Grazie" o "Pagamento riuscito", puoi aggiungere l'azione sul gancio "woocommerce_thankyou". In customstatus.php sostituisci add_action ('woocommerce_payment_complete', 'action_woocommerce_payment_complete', 10, 3); con add_action ('woocommerce_thankyou', 'ggb_custom_change_order_status', 10,3);


Spring Omni Manifest

Come ottenere il rapporto manifesto delle spedizioni Spring Omni?

SOLUZIONE: Abbiamo sollevato una query per far saltare Omni, se hanno qualche API per generare il manifest delle spedizioni create in un particolare giorno.

Hanno risposto:

“Al momento non forniamo un manifestQuindi abbiamo cercato di generare manifest dalla nostra parte e abbiamo confermato con il pick up di Spring Omni se hanno bisogno di un report manifest per raccogliere i pacchi? Hanno risposto che non è necessario generare un report manifest delle spedizioni in quanto fanno semplicemente pagare solo il numero di etichette (pacchi) di consegna a loro. Per altri blog correlati, visita qui:

Spring Global (Spring Omni) Errore: è richiesta la proprietà phone_number

Spring Global (Spring Omni) Errore: la spedizione non è stata registrata

Spring Global (Spring Omni): concetto di fatturazione

Spring Global (Spring Omni) Error: Resource Not Found

Spring Global (Spring Omni) Errore: ottenere una risposta vuota durante il recupero dell'etichetta


Spring Global (Spring Omni): concetto di fatturazione

Vogliamo sapere che Spring Global ci addebita sulle spedizioni che abbiamo creato e registrato o pacchi che consegneremo a loro per la consegna.

Abbiamo raccolto un biglietto su Spring Global:

Quali spedizioni (pacchi) ci faranno pagare? Sarà sulle spedizioni che abbiamo creato e registrato o pacchi che consegneremo a loro.

Supponiamo di aver creato e registrato le spedizioni 10 ma di consegnare loro solo pacchi 8 per la consegna (Dato che non vogliamo che le spedizioni 2 siano consegnate). Quindi, per questo caso particolare, ci faranno pagare per le spedizioni 10 o 8?

Hanno risposto:

“Spring fatturerà solo le etichette che sono state scansionate. Quindi nel tuo esempio lo saresti solo tu“.

Come possiamo vedere, ci verranno addebitati solo i pacchi da consegnare a loro per la consegna, indipendentemente dal numero di spedizioni che abbiamo creato sulla loro destinazione.

Si prega di visitare qui per informazioni correlate:

Spring Global (Spring Omni) Errore: è richiesta la proprietà phone_number

Spring Omni Manifest

Spring Global (Spring Omni) Errore: la spedizione non è stata registrata

Spring Global (Spring Omni) Error: Resource Not Found

Spring Global (Spring Omni) Errore: ottenere una risposta vuota durante il recupero dell'etichetta


Spring Global (Spring Omni) Error: Resource Not Found

Durante la creazione di una spedizione utilizzando Spring Omni, è possibile che si verifichi un errore nella risposta, come indicato di seguito:

[stato] => 404 [codice] => 10002 [titolo] => Risorsa non trovata [dettaglio] => Non è stato possibile trovare una o più risorse della regione. Abbiamo ricevuto questo errore durante l'invio della seguente richiesta per creare la spedizione:

'{
  "data": {
    "type": "shipments",
    "attributes": {
      "recipient_address": {
        "street_1": "4363 N 55TH ST",
        "street_2": "Marylebone",
        "street_number": 221,
        "postal_code": "53216-1201",
        "city": "MILWAUKEE",
        "region_code": "WI",
        "country_code": "US",
        "first_name": "Sherlock",
        "last_name": "Holmes",
        "company": "Attn",
        "email": "Aparajita.singh@abc.com",
        "phone_number": "1234567890"
      },
      "return_address": {
        "street_1": "Baker Street",
        "street_2": "Marylebone",
        "street_number": 221,
        "street_number_suffix": "B",
        "postal_code": "NW1 6XE",
        "city": "London",
        "region_code": "ENG",
        "country_code": "GB",
        "first_name": "Sherlock",
        "last_name": "Holmes",
        "company": "Holmes Investigations",
        "email": "Aparajita.singh@abc.com",
        "phone_number": ""
      },
      "sender_address": {
        "street_1": "Baker Street",
        "street_2": "Marylebone",
        "street_number": 221,
        "street_number_suffix": "B",
        "postal_code": "NW1 6XE",
        "city": "London",
        "region_code": "ENG",
        "country_code": "GB",
        "first_name": "Sherlock",
        "last_name": "Holmes",
        "company": "Holmes Investigations",
        "email": "Aparajita.singh@abc.com",
        "phone_number": ""
      },
      "description": "Order #8008135",
      "physical_properties": {
        "height": 150,
        "width": 300,
        "length": 500,
        "volume": 22.5,
        "weight": 100
      },
      "items": [
        {
          "sku": "123456789",
          "description": "OnePlus X",
          "item_value": {
            "amount": 995,
            "currency": "EUR"
          },
          "quantity": 2,
          "hs_code": "8517.12.00",
          "origin_country_code": "GB",
          "item_weight": 135
        }
      ],
      "customs": {
        "content_type": "merchandise",
        "invoice_number": "9000",
        "non_delivery": "return",
        "incoterm": "DAP",
        "license_number": "218532158",
        "certificate_number": "12122121"
      },
      "register_at": 0
    },
    "relationships": {
      "shop": {
        "data": {
          "type": "shops",
          "id": "1a9414f0-24ef-4008-b6ad-9a75e27a879e"
        }
      },
      "service": {
        "data": {
          "type": "services",
          "id": "05aeb5e9-90be-4ec7-94c9-1a0949262577"
        }
      }
    }
  }
}'

Quando abbiamo chiesto a Spring Global la ragione di questo errore, hanno risposto che il problema qui è "La regione che non è riconosciuta in quanto non hanno ancora regioni per gli Stati Uniti". Omettere semplicemente la regione dovrebbe risolvere questo problema. Il seguente JSON dovrebbe funzionare:

'{
  "data": {
    "type": "shipments",
    "attributes": {
      "recipient_address": {
        "street_1": "4363 N 55TH ST",
        "street_2": "Marylebone",
        "street_number": 221,
        "postal_code": "53216-1201",
        "city": "MILWAUKEE",
        "country_code": "US",
        "first_name": "Sherlock",
        "last_name": "Holmes",
        "company": "Attn",
        "email": "Aparajita.singh@abc.com",
        "phone_number": "1234567890"
      },
      "return_address": {
        "street_1": "Baker Street",
        "street_2": "Marylebone",
        "street_number": 221,
        "street_number_suffix": "B",
        "postal_code": "NW1 6XE",
        "city": "London",
        "region_code": "ENG",
        "country_code": "GB",
        "first_name": "Sherlock",
        "last_name": "Holmes",
        "company": "Holmes Investigations",
        "email": "Aparajita.singh@abc.com",
        "phone_number": ""
      },
      "sender_address": {
        "street_1": "Baker Street",
        "street_2": "Marylebone",
        "street_number": 221,
        "street_number_suffix": "B",
        "postal_code": "NW1 6XE",
        "city": "London",
        "region_code": "ENG",
        "country_code": "GB",
        "first_name": "Sherlock",
        "last_name": "Holmes",
        "company": "Holmes Investigations",
        "email": "Aparajita.singh@abc.com",
        "phone_number": ""
      },
      "description": "Order #8008135",
      "physical_properties": {
        "height": 150,
        "width": 300,
        "length": 500,
        "volume": 22.5,
        "weight": 100
      },
      "items": [
        {
          "sku": "123456789",
          "description": "OnePlus X",
          "item_value": {
            "amount": 995,
            "currency": "EUR"
          },
          "quantity": 2,
          "hs_code": "8517.12.00",
          "origin_country_code": "GB",
          "item_weight": 135
        }
      ],
      "customs": {
        "content_type": "merchandise",
        "invoice_number": "9000",
        "non_delivery": "return",
        "incoterm": "DAP",
        "license_number": "218532158",
        "certificate_number": "12122121"
      },
      "register_at": 0
    },
    "relationships": {
      "shop": {
        "data": {
          "type": "shops",
          "id": "1a9414f0-24ef-4008-b6ad-9a75e27a879e"
        }
      },
      "service": {
        "data": {
          "type": "services",
          "id": "05aeb5e9-90be-4ec7-94c9-1a0949262577"
        }
      }
    }
  }
}'

Si prega di visitare qui per informazioni correlate:

Spring Global (Spring Omni) Errore: è richiesta la proprietà phone_number

Spring Omni Manifest

Spring Global (Spring Omni) Errore: la spedizione non è stata registrata

Spring Global (Spring Omni): concetto di fatturazione

Spring Global (Spring Omni) Errore: ottenere una risposta vuota durante il recupero dell'etichetta


Spring Global (Spring Omni) Errore: ottenere una risposta vuota durante il recupero dell'etichetta

Stavamo affrontando un problema mentre tentavamo di creare una spedizione (Utilizzo dell'API / spedizioni) e dopo che stavamo recuperando l'etichetta (Utilizzo di / spedizioni / {shipment_id} / file API). Il problema era che avevamo una risposta vuota. Quando abbiamo controllato Spedizioni nel back office, sembrava che sotto lo screenshot:

Quando abbiamo cliccato sulla spedizione (con status = "concetto"), abbiamo ricevuto un messaggio come "La spedizione è stata creata, ma non è ancora stata registrata con il corriere.“

Quando abbiamo capito il concetto di questo nuovo processo di creazione delle spedizioni in Spring Omni, veniamo a sapere che in Spring Global, abbiamo bisogno di registrare una spedizione invece di creare la spedizione prima di recuperare l'etichetta corrispondente alla spedizione. Esistono due possibili scenari per la registrazione di una spedizione:

  1. Crea la spedizione e registrati allo stesso tempo
  2. Crea la spedizione ma registrala in un dato momento specifico, ad esempio in futuro

1. Per registrare una spedizione istantaneamente

Durante l'invio della richiesta di spedizione, è necessario inviare il messaggio "register_at"valore parametro come 0 o tempo passato (timestamp UNIX) nei dati della richiesta. Si prega di riferirsi al codice sottostante per lo stesso:

{
  "data": {
    "type": "shipments",
    "attributes": {
      "recipient_address": {
        "street_1": "Baker Street",
        "street_2": "Marylebone",
        "street_number": 221,
        "street_number_suffix": "B",
        "postal_code": "NW1 6XE",
        "city": "London",
        "region_code": "ENG",
        "country_code": "GB",
        "first_name": "Sherlock",
        "last_name": "Holmes",
        "company": "Holmes Investigations",
        "email": "s.holmes@holmesinvestigations.com",
        "phone_number": "+31 234 567 890"
      },
      "return_address": {
        "street_1": "Baker Street",
        "street_2": "Marylebone",
        "street_number": 221,
        "street_number_suffix": "B",
        "postal_code": "NW1 6XE",
        "city": "London",
        "region_code": "ENG",
        "country_code": "GB",
        "first_name": "Sherlock",
        "last_name": "Holmes",
        "company": "Holmes Investigations",
        "email": "s.holmes@holmesinvestigations.com",
        "phone_number": "+31 234 567 890"
      },
      "sender_address": {
        "street_1": "Baker Street",
        "street_2": "Marylebone",
        "street_number": 221,
        "street_number_suffix": "B",
        "postal_code": "NW1 6XE",
        "city": "London",
        "region_code": "ENG",
        "country_code": "GB",
        "first_name": "Sherlock",
        "last_name": "Holmes",
        "company": "Holmes Investigations",
        "email": "s.holmes@holmesinvestigations.com",
        "phone_number": "+31 234 567 890"
      },
      "pickup_location": {
        "code": "205604",
        "address": {
          "street_1": "Baker Street",
          "street_2": "Marylebone",
          "street_number": 221,
          "street_number_suffix": "B",
          "postal_code": "NW1 6XE",
          "city": "London",
          "region_code": "ENG",
          "country_code": "GB",
          "first_name": "Sherlock",
          "last_name": "Holmes",
          "company": "Holmes Investigations",
          "email": "s.holmes@holmesinvestigations.com",
          "phone_number": "+31 234 567 890"
        }
      },
      "description": "Order #8008135",
      "physical_properties": {
        "height": 150,
        "width": 300,
        "length": 500,
        "volume": 22.5,
        "weight": 5000
      },
      "items": [
        {
          "sku": "123456789",
          "description": "OnePlus X",
          "item_value": {
            "amount": 995,
            "currency": "EUR"
          },
          "quantity": 2,
          "hs_code": "8517.12.00",
          "origin_country_code": "GB",
          "item_weight": 135
        }
      ],
      "customs": {
        "content_type": "merchandise",
        "invoice_number": "9000",
        "non_delivery": "return",
        "incoterm": "DAP",
        "license_number": "218532158",
        "certificate_number": "12122121"
      },
      "register_at": 0
    },
    "relationships": {
      "service_options": {
        "data": [
          {
            "type": "service-options",
            "id": "4c675b1a-516c-4410-abff-d237fd45bcd0"
          }
        ]
      },
      "shop": {
        "data": {
          "type": "shops",
          "id": "35eddf50-1d84-47a3-8479-6bfda729cd99"
        }
      },
      "service": {
        "data": {
          "type": "services",
          "id": "175a235f-aff5-4e44-87b5-3657b75c1deb"
        }
      },
      "contract": {
        "data": {
          "type": "contracts",
          "id": "2cb32706-5762-4b96-9212-327e6afaeeff"
        }
      }
    }
  }
}

Se inviamo il valore register_at come timestamp corrente, potremmo ritenere che la registrazione della spedizione sia ritardata, quindi Spring Global ci ha suggerito di inviare il valore register_at come 0 in modo che l'orario sia considerato in passato e la spedizione sarà registrata al più presto il più possibile Dal momento che la spedizione sarà registrata ora, non saremo in grado di cancellare / modificare lo stesso.

2. Registra una spedizione in futuro

Se vogliamo modificare / eliminare la spedizione dopo aver creato quello, allora abbiamo solo bisogno di registrare la spedizione in futuro o in un dato momento specifico. Per registrare una spedizione in futuro, diciamo dopo ore 5 di creazione della spedizione, è sufficiente passare il valore "register_at" come timestamp futuro di cinque ore sulla base dell'ora corrente. Ora saremo in grado di modificare / cancellare la spedizione fino alle ore 5 ma non sarà possibile recuperare l'etichetta e la fattura commerciale. Alla data e ora, la spedizione verrà registrata automaticamente e potremo ritirare l'etichetta e la fattura commerciale dopo il tempo stabilito.

Quindi questi sono i due modi per registrare la spedizione. Possiamo usare entrambi in base al nostro requisito.

Si prega di visitare qui per informazioni correlate:

Spring Global (Spring Omni) Errore: è richiesta la proprietà phone_number

Spring Omni Manifest

Spring Global (Spring Omni) Errore: la spedizione non è stata registrata

Spring Global (Spring Omni): concetto di fatturazione

Spring Global (Spring Omni) Error: Resource Not Found


Problema DHL: la posizione di destinazione non è valida. Si prega di controllare i dati

Durante la prenotazione della spedizione su DHL utilizzando l’API (nel nostro caso, il paese di consegna era “Irlanda”), abbiamo ricevuto un errore nella risposta alla richiesta di capacità. L’errore era “La posizione di destinazione non è valida. Si prega di controllare i dati“.

Soluzione: �

Per questo problema, abbiamo sollevato un ticket su DHL e, in risposta, hanno risposto come di seguito:

Quando si richiedono funzionalità, è importante fornire dati di indirizzo completi e di qualità. È necessario determinare informazioni e capacità di instradamento accurate per l’origine e la destinazione. Il motivo dell’errore potrebbe essere il seguente:

  1. Potrebbe essere possibile che ci siano più città con lo stesso nome in diverse periferie. Quindi, per ottenere una risposta di successo, dobbiamo aggiungere i sobborghi nell’indirizzo di destinazione in modo speciale, per il paese di consegna “Irlanda”.
  2. Per i paesi di destinazione, che non hanno codici postali, il nome della città deve essere digitato correttamente. Ad esempio, non esiste una città chiamata NORTH ROAD in IE, la città effettiva si chiama M50 NORTH ROAD.

Da questa risposta, non siamo stati chiari sulla convalida dell’indirizzo significa come facciamo a sapere se l’indirizzo è corretto o meno o il nome della città è corretto o meno. Ad esempio, se stiamo inviando il nome della città come “Co. Dublino” nella richiesta di creazione della spedizione, riceviamo un errore di Posizione non valida. Quindi abbiamo sollevato di nuovo un biglietto per sapere come possiamo convalidare l’indirizzo e in risposta, DHL ha suggerito uno strumento chiamato DHL Capability Tool (https://dct.dhl.com/). Basta inserire il mittente e l’indirizzo di destinazione nel modulo e fare clic sul pulsante di ricerca come mostrato nella schermata seguente:

Questo strumento darà il risultato se l’indirizzo è valido o meno. Pertanto, se ricevi un errore relativo alla posizione, puoi convalidare l’indirizzo utilizzando questo strumento di funzionalità.

Password Protection with?htaccess

Introduzione

È sempre consigliabile aggiungere una protezione tramite password a qualsiasi cartella / pagina web del sito Web se si desidera limitare l'accesso a tali siti. Il metodo per applicare lo stesso è più importante. Possiamo usare PHP per autorizzare le informazioni su ogni pagina, ma questo non protegge le tue immagini o altri media, vero? Quindi possiamo usare un altro metodo noto come protezione password htaccess?or autenticazione htaccess. È affidabile e molto più semplice.

Obiettivo

Questo blog ti aiuta a sapere come limitare l'accesso al sito da parte di utenti non autorizzati.

Si prega di seguire i passaggi indicati di seguito:

Passo 1. Per utilizzare protezione password htaccess abbiamo bisogno di creare due file nella directory in cui si desidera limitare l'accesso: –

1) .htaccess
2) .htpasswd file

Passo 2. Aggiungi il seguente codice nel file .htaccess che hai creato nel passaggio 1.

Il codice .htaccess

AuthType Basic AuthName "Nessun accesso" AuthUserFile C: /wamp64/www/test_project/self_stitch/.htpasswd richiede utente valido

Nota: È possibile sostituire "C: / wamp64 / www / test_project /" con la propria struttura di directory. Il codice di cui sopra (direttive) è descritto di seguito:

io.) AuthType Dalla direttiva AuthType è possibile selezionare il metodo utilizzato per autenticare l'utente.

ii.) AuthName Replace "Nessun accesso"a qualsiasi nome secondo il tuo requisito. Questo nome verrà visualizzato nella finestra di avviso quando l'utente tenta di aprire una pagina protetta da htaccess.AuthName?directive sets the?domain?to be used in the authentication.

Once a client has passed the authentication in the?”Nessun accesso"zona, quindi non è necessario immettere la password per accedere a qualsiasi altro file nella stessa zona sullo stesso server, per impedire a un utente di immettere la password più e più volte lasciando che più aree riservate condividano lo stesso dominio.

iii.) AuthUserFile

  • Devi aggiungere il tuo percorso .htpasswd al posto di "C: /wamp64/www/test_project/self_stitch/.htpasswd".
  • Il "AuthUserFile"il valore è sempre specifico per la configurazione dell'host.
  • Se non sai quale dovrebbe essere il valore, fai a
  • Per questo è sufficiente aggiungere la riga "<? Php phpinfo ();?>" Nel file phpinfo.php. È possibile trovare il file phpinfo.php nella cartella principale (www per localhost) e quindi eseguire il file phpinfo.php sul browser. Ad esempio, su localhost, esegui localhost / phpinfo.php

NOTA:

1.Per proteggere con password più di un file nella stessa cartella, è sufficiente creare più blocchi <Files> </ Files> all'interno dello stesso file .htaccess, ad esempio:

AuthUserFile /full/path/to/.htpasswd AuthType Basic AuthName "My Secret Page" <Files "mypage.html"> Richiedi utente valido </ Files> <Files "myotherpage.html"> Richiedi utente valido </ Files>

2. Per consentire solo agli specifici tipi di file di accedere agli utenti, è necessario aggiungere il seguente codice:

AuthUserFile /full/path/to/.htpasswd AuthType Basic AuthName "My Secret Page" # deny * everything * <FilesMatch ". *"> Order Allow, Nega Nega da tutti </ FilesMatch> # Permettere solo * alcuni * file necessari: <FilesMatch ". * \. (Php | html | css | js | JS | CSS) $"> Ordine Consenti, Nega Consenti da tutti </ FileMatch>

Qui, per prima cosa stiamo limitando l'accesso a tutto usando <FilesMatch ". *"> E dopo questo stiamo consentendo l'accesso a determinati file (php, html, css, js) usando <FilesMatch ". * \. (Php | html | css | js | JS | CSS) $ "> Il nostro esempio non consente l'accesso ad altri file per es. .jpg, .png, ecc. Puoi anche consentire l'accesso da un indirizzo IP specifico usando "consentire da 12.34.56.78" invece di usare "consentire da tutti“.

3. Per aggiungere la password htaccess solo per i tipi specifici di file è necessario aggiungere il seguente codice:

AuthType Basic AuthName "area riservata" AuthUserFile C: /wamp64/www/test_project/self_stitch/.htpasswd # ma ora consentono solo * alcuni * file necessari: <FilesMatch ". * \. (Txt) $"> richiede utente valido < / FilesMatch>

Usando il codice sopra tutti i file saranno accessibili senza password ma i file con estensione .txt avranno bisogno di username e password per accedere.

4. Se è necessario applicare la password htaccess per tutti i file tranne uno di aggiungere il seguente codice:

AuthType Basic AuthName "area riservata" AuthUserFile C: /wamp64/www/test_project/self_stitch/.htpasswd <FilesMatch ". *"> Richiedi utente valido </ FilesMatch> # ma ora consente solo * alcuni * file necessari: <FilesMatch " . * \. (txt) $ "> Richiede tutto garantito </ FileMatch>

Nell'esempio sopra, ad eccezione dei file .txt, tutti gli altri file avranno bisogno del nome utente e della password a cui accedere.

iv.) richiedere

La linea "richiedono valid-user"significa che qualsiasi utente specificato nel tuo
Passo 3. Aggiungi il nome utente e la password nel file .htpasswd come descritto di seguito:

Il codice .htpasswd

john:$apr1$DObQIej5$0ZmEaLN42GEz/XJEiJXh9.

io.) Il

ii.) Le password sono crittografate usando MD5 per motivi di sicurezza.

iii.) Come si può vedere sopra, è consentito solo l'utente 1, ad esempio john con la password: Password effettiva: egypt4721 Password crittografata: $ apr1 $ DObQIej5 $ 0ZmEaLN42GEz / XJEiJXh9. (Crittografato con MD5).

iv.) Per generare il file .htpasswd usa il link di seguito:

https://www.htaccesstools.com/htaccess-authentication/

Dopo aver creato il file .htaccess e .htpasswd nella directory che si desidera proteggere, verrà visualizzato un avviso quando si apre il sito Web. Si prega di fare riferimento allo screenshot qui sotto:

Clicca qui per scaricare un progetto di esempio con .htaccess protetto da password.