Comment intégrer Google reCAPTCHA avec PHP ?

 

De nos jours, tout le monde veut se débarrasser du spam sur son site Web, qu’il s’agisse de commentaires indésirables, de messages indésirables ou de trafic de spam sur votre site. Pour protéger votre site Web contre le spam, l’un des moyens les meilleurs et les plus simples consiste à utiliser Google reCAPTCHA.

Autrefois, les gens mettaient un nombre ou une chaîne aléatoire sur l’écran et le vérifiaient côté serveur. Mais cette méthode est l’ancienne méthode et elle prend également du temps pour de nombreux utilisateurs, alors que la méthode reCAPTCHA de Google est facile à utiliser et prend moins de temps, ce qui se traduit par une meilleure expérience utilisateur. Il leur suffit d’un simple clic pour prouver qu’ils sont des humains et non un robot. Google reCAPTCHA est très simple à implémenter dans un script PHP.

Lecture recommandée: ,warComment intégrer la protection Google ReCaptcha sur votre boutique PrestaShop ?

Dans ce blog, vous apprendrez comment intégrer Google reCaptcha à PHP dans notre guide étape par étape.

Étape 1 : Pour récupérer la clé API Google reCAPTCHA

Pour obtenir une clé API permettant d’utiliser reCAPTCHA avec PHP, vous devez enregistrer votre site Web sur – https://www.google.com/recaptcha/admin. Les captures d’écran sont données ci-dessous pour votre aide :


Étiquette: Utilisez une étiquette de votre choix, afin qu’il soit facile de reconnaître le site à l’avenir. Vous pouvez ajouter le nom de votre marque ou l’URL du site Web dans ce champ pour améliorer la lisibilité du nom du projet.

Tapez reCAPTCHA : Choisissez le type de reCAPTCHA que vous préférez pour votre site. Il existe actuellement deux types disponibles, à savoir reCAPTCHA v3 et reCAPTCHA v2. Nous avons utilisé reCAPTCHA v2 dans l’exemple de projet.

Domaines: Ici, vous devez saisir le nom de votre site Web pour lequel vous allez implémenter la fonctionnalité reCAPTCHA. Cela s’applique aux domaines que vous saisissez ici, ainsi qu’à ses sous-domaines. Par exemple, une inscription sur abc.com enregistre également xyz.abc.com.

Maintenant, cochez simplement la case de Acceptez les conditions d’utilisation de reCAPTCHA et cliquez sur sur le bouton Soumettre.

Vous disposez désormais de la clé de site et de la clé secrète de votre site Web.

Étape 2 : Pour implémenter Google reCaptcha avec PHP, la deuxième étape consiste à implémenter la fonctionnalité reCAPTHA sur votre site :

  • Pour ajouter reCAPTCHA en PHP, vous devez d’abord inclure la bibliothèque JavaScript reCAPTCHA dans votre code HTML.
    
    
  • Ajoutez maintenant ce code HTML à l’endroit où vous souhaitez afficher le widget reCAPTCHA.
    
    
  • Remplacez “site_key” par la clé de site fournie par Google pour votre site Web.
  • C’est fait maintenant, actualisez simplement votre page et vous verrez le widget reCAPTCHA sur votre site.

Étape 3 : Pour valider la réponse de l’utilisateur

Désormais, vous devez valider la réponse lorsqu’un utilisateur clique sur le widget reCAPTCHA. Le code PHP permettant de vérifier la réponse de l’utilisateur est donné ci-dessous :

success) { $succMsg = 'Votre demande de contact a été soumise avec succès.'; } else { $errMsg = 'La vérification du robot a échoué, veuillez réessayer.'; } } ?>

Ajoutez votre clé secrète réelle dans le code ci-dessus et vous avez terminé.

Obtenez l’exemple de code ici.

Lecture recommandée: Deux modules efficaces pour éloigner les spammeurs et les robots de la boutique PrestaShop

Knowband propose le module complémentaire Google ReCaptcha pour diverses plates-formes, notamment PrestaShop, et de OpenCart. Le module Google ReCaptcha est un outil de sécurité puissant qui protège votre site Web contre les entrées de spam tout en facilitant un accès facile aux utilisateurs réels.

Le plugin Google ReCaptcha peut être utilisé pour la connexion, l’enregistrement, la réinitialisation du mot de passe, les formulaires de contact connus et bien d’autres choses. Les images sont affichées dans le module complémentaire Google ReCaptcha dans le cadre de leurs processus de validation standard pour aider à identifier les humains.

Ce module Google reCaptcha offre d’excellentes performances et est extrêmement personnalisable. Depuis le back-end des modules Knowband, l’e-commerçant peut ajuster rapidement l’addon Google reCaptcha.

Module complémentaire Prestashop Google ReCaptcha

PrestaShop Google reCaptcha de Knowband améliore la sécurité de votre boutique en intégrant Google reCaptcha, empêchant ainsi le spam et les robots automatisés.

Achetez maintenant

Mots finaux:

La mise en œuvre de Google reCAPTCHA sur les sites Web est essentielle pour la sécurité. Il permet de distinguer les vrais utilisateurs des robots, empêchant ainsi le spam et les attaques automatisées. Cela protège les données des utilisateurs et garantit le bon fonctionnement du site Web. En bloquant le trafic nuisible, reCAPTCHA améliore l’expérience utilisateur, rendant les interactions en ligne plus sûres et plus fiables.

Lecture recommandée – Renforcez la sécurité de votre boutique PrestaShop avec les meilleurs modules PrestaShop de Knowband
Parallèlement à cela, Google reCaptcha est également compatible avec One Page Checkout de Knowband, vous protégeant contre la fraude aux transactions. C’est le meilleur moyen de protéger votre boutique contre la fraude transactionnelle. Pour voir la démo d’administration et la démo frontale du module Google reCaptcha, visitez notre Boutique.

Évitez de laisser les spammeurs nuire à votre entreprise !

 

Comment changer le statut de commande par défaut sur WooCommerce

Parfois, lors du développement d'un site Web de commerce électronique, vous devez vérifier automatiquement le statut du paiement et marquer le statut de la commande comme "Avoir complété un “”En attente"ou selon vos besoins. Un statut de commande par défaut est défini sur la base du paiement effectué. Les utilisateurs frontaux peuvent consulter le statut de leur commande sur la page Historique de leur compte. Dans ce blog, nous apprendrons comment modifier le statut de commande par défaut le Woo Commerce as "Facture à imprimer" pas à pas.

Étape 1: Créer un plugin personnalisé

Pour créer un plugin personnalisé sur votre site Web, suivez les étapes suivantes:

1. Accédez au dossier des plugins Word Press, dans notre cas il s’agit d’app / plugins. Créer un dossier en tant que "statut personnalisé“.

Note importante: Attribuez un nom unique à votre dossier (le nom des plugins par défaut de Word Press ne doit pas entrer en conflit avec le nom de votre plugin) en minuscules et en tirets.

2. Créez maintenant le fichier PHP principal de votre plugin. Pour ce faire, créez un fichier PHP dans votre dossier plug-in et donnez-lui le même nom que le nom du dossier. Dans notre cas, le nom du dossier est "customstatus" et le nom du fichier sera donc customstatus.php.

3. Configurez les informations de votre plugin. Copiez simplement le code ci-dessous dans le fichier 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
?*/

Veuillez noter que : Modifiez les détails tels que le nom de l'auteur, le nom du plugin, la description, etc. selon vos besoins.

4. C'est ça! Vous venez de terminer le nombre minimum d'étapes requises pour créer un plug-in Word Press. Vous pouvez maintenant l'activer à partir de l'onglet Plugins dans Word Press admin.

Etape 2: Ajouter du code dans votre plugin personnalisé

1. Nous devons maintenant créer une fonction et l’attacher à une action spécifique. Copiez simplement la fonction ci-dessous dans votre customstatus.php.

2. Puisque nous souhaitons mettre à jour le statut de la commande lors du paiement complet, ajoutez une action au hook 'woocommerce_payment_complete' comme indiqué ci-dessous dans le code en surbrillance. // COPIE LE CODE ENTIER DANS LE FICHIER customstatus.php.

# <editor-fold defaultstate = "collapsed" desc = "Statut par défaut de la facture à imprimer"> function action_woocommerce_payment_complete ($ order_id) {if (! $ order_id) return; $ order = wc_get_order ($ order_id); $ order-> update_status ('wc-print-invoice'); // Le statut de la commande sera mis à jour avec "Facture à imprimer". }; // ajoute l'action add_action ('woocommerce_payment_complete', 'action_woocommerce_payment_complete', 10, 3); # </ editor-fold>

3. Il suffit de sauvegarder votre fichier customstatus.php et le tour est joué. A partir de maintenant, le statut de la commande sera mis à jour avec "Facture à imprimer" à la fin du paiement.

NOTE UTILE: Si vous souhaitez mettre à jour le statut de la commande lorsque la page "Merci" ou "Checkout Success" est chargée, vous pouvez ajouter l'action sur le crochet "woocommerce_thankyou". Dans customstatus.php, remplacez add_action ('woocommerce_payment_complete', 'action_woocommerce_payment_complete', 10, 3); avec add_action ('woocommerce_thankyou', 'ggb_custom_change_order_status', 10,3);


Spring Omni Manifest

Comment obtenir le rapport de manifeste des expéditions Spring Omni?

SOLUTION: Nous avons posé une question à spring Omni, s’ils disposent d’une API pour générer le manifeste des envois créés un jour donné.

Ils ont répondu:

“Nous ne fournissons pas actuellement de manifeste". Nous avons donc essayé de générer un manifeste de notre côté et avons confirmé auprès du pick up boy de Spring Omni s’ils avaient besoin d’un rapport de manifeste pour récupérer les colis. Ils ont répondu qu’il n’était pas nécessaire de générer un rapport de manifeste des envois car ils facturaient simplement seulement le nombre d’étiquettes (colis) qui leur sont remises. Pour plus de blogs connexes, veuillez visiter ici:

Spring Global (Spring Omni) Error: la propriété phone_number est requise.

Spring Global (Spring Omni) Error: L'envoi n'est pas enregistré

Spring Global (Spring Omni): Concept de facturation

Erreur Spring Global (Spring Omni): ressource introuvable

Erreur Spring Global (Spring Omni): Obtention d'une réponse vide lors de l'extraction d'une étiquette


Spring Global (Spring Omni): Concept de facturation

Nous voulons savoir que Spring Global nous facture les envois que nous avons créés et enregistrés OU les colis que nous leur remettons pour livraison.

Nous avons soulevé un ticket sur Spring Global:

Quels envois (colis) vont-ils nous facturer? S'agira-t-il des envois que nous avons créés et enregistrés OU des colis que nous leur remettrons?

Supposons que nous ayons créé et enregistré des envois 10 mais que nous ne leur livrions que des colis 8 (nous ne souhaitons pas que des envois 2 soient livrés). Alors maintenant, dans ce cas particulier, vont-ils nous facturer les envois 10 ou 8?

Ils ont répondu:

“Spring ne facturera que les étiquettes numérisées. Donc, dans votre exemple, vous ne seriez que“.

Comme nous pouvons le constater, seuls les colis que nous leur transmettons nous seront facturés, quel que soit le nombre d’envois que nous avons créés.

S'il vous plaît visitez ici pour des informations connexes:

Spring Global (Spring Omni) Error: la propriété phone_number est requise.

Manifeste Omni du printemps

Spring Global (Spring Omni) Error: L'envoi n'est pas enregistré

Erreur Spring Global (Spring Omni): ressource introuvable

Erreur Spring Global (Spring Omni): Obtention d'une réponse vide lors de l'extraction d'une étiquette


Erreur Spring Global (Spring Omni): ressource introuvable

Lors de la création d'un envoi à l'aide de Spring Omni, vous pouvez recevoir une erreur de réponse telle que mentionnée ci-dessous:

[status] => 404 [code] => 10002 [title] => Ressource introuvable [detail] => Une ou plusieurs ressources des régions sont introuvables. Nous avons eu cette erreur lors de l'envoi de la demande suivante pour créer l'envoi:

'{
  "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"
        }
      }
    }
  }
}'

Lorsque nous avons demandé à Spring Global la raison de cette erreur, ils ont répondu que le problème était "La région qui n’est pas reconnue car elle n’a pas encore de région pour les États-Unis". Omettre simplement la région devrait résoudre ce problème. Le JSON ci-dessous devrait fonctionner:

'{
  "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"
        }
      }
    }
  }
}'

S'il vous plaît visitez ici pour des informations connexes:

Spring Global (Spring Omni) Error: la propriété phone_number est requise.

Manifeste Omni du printemps

Spring Global (Spring Omni) Error: L'envoi n'est pas enregistré

Spring Global (Spring Omni): Concept de facturation

Erreur Spring Global (Spring Omni): Obtention d'une réponse vide lors de l'extraction d'une étiquette


Erreur Spring Global (Spring Omni): Obtention d'une réponse vide lors de l'extraction d'une étiquette

Nous étions confrontés à un problème pendant que nous essayions de créer une expédition (Utilisation de l'API / expéditions) et ensuite nous avons récupéré l’étiquette (Utilisation de l'API / expéditions / {ID_expédition} / files). Le problème était que nous avions une réponse en blanc. Lorsque nous avons vérifié les envois sur le back-office, la capture d'écran ci-dessous était la suivante:

Lorsque nous avons cliqué sur l'envoi (avec status = "concept"), nous avons reçu un message comme "L'envoi a été créé, mais n'a pas encore été enregistré auprès du transporteur.“

Lorsque nous avons compris le concept de ce nouveau processus de création d’envois dans Spring Omni, nous avons appris qu’à Spring Global, nous devions enregistrer un envoi au lieu de le créer uniquement avant de récupérer l’étiquette correspondant à l’envoi. Il existe deux scénarios possibles pour enregistrer un envoi:

  1. Créez l'envoi et enregistrez-le en même temps
  2. Créez l'envoi, mais enregistrez-le à un moment précis, c'est-à-dire à l'avenir

1. Pour enregistrer un envoi instantanément

Lors de l'envoi de la demande de création d'un envoi, nous devons envoyer le "register_at"valeur du paramètre sous 0 ou heure passée (horodatage UNIX) dans les données de la demande. Veuillez vous reporter au code ci-dessous pour obtenir le même résultat:

{
  "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"
        }
      }
    }
  }
}

Si nous envoyons la valeur de register_at en tant qu'horodatage actuel, l'enregistrement de l'envoi risque d'être retardé. Spring Global nous a donc suggéré d'envoyer la valeur de register_at au format 0 afin que l'heure soit prise en compte et que l'expédition soit enregistrée dès que possible. comme possible. Puisque l'envoi sera enregistré maintenant, nous ne pourrons pas le supprimer / le modifier.

2. Enregistrer un envoi dans le futur

Si nous souhaitons modifier / supprimer l'envoi après avoir créé celui-ci, il nous suffit de l'enregistrer ultérieurement ou à un moment donné. Par exemple, pour enregistrer un envoi dans le futur, par exemple, après le nombre d’heures de création d’un envoi 5, transmettez simplement la valeur "register_at" comme horodatage futur de cinq heures sur la base de l’heure actuelle. Maintenant, nous pourrons éditer / supprimer l'envoi jusqu'à 5 mais nous ne pourrons pas récupérer l'étiquette et la facture commerciale. À l'heure indiquée, l'envoi sera automatiquement enregistré et nous pourrons récupérer l'étiquette et la facture commerciale après l'heure indiquée.

Ce sont donc les deux manières d’enregistrer l’envoi. Nous pouvons utiliser les deux sur la base de nos besoins.

S'il vous plaît visitez ici pour des informations connexes:

Spring Global (Spring Omni) Error: la propriété phone_number est requise.

Manifeste Omni du printemps

Spring Global (Spring Omni) Error: L'envoi n'est pas enregistré

Spring Global (Spring Omni): Concept de facturation

Erreur Spring Global (Spring Omni): ressource introuvable


Problème DHL : l’emplacement de destination n’est pas valide. Veuillez vérifier les données

Lors de la réservation d’un envoi sur DHL à l’aide de l’API (dans notre cas, le pays de livraison était “Irlande”), nous avons reçu une erreur dans la réponse à la demande de capacité. L’erreur était “L’emplacement de destination n’est pas valide. Veuillez vérifier les données“.

Solution : �

Pour ce problème, nous avons émis un ticket sur DHL, et en réponse, ils ont répondu comme suit :

Lors de la demande de capacités, il est important de fournir des données d’adresse complètes et de qualité. Il est nécessaire de déterminer des informations et des capacités de routage précises pour l’origine et la destination. Ce qui suit peut être la raison de l’erreur :

  1. Il est possible qu’il y ait plus d’une ville avec le même nom dans différentes banlieues. Donc, pour obtenir une réponse réussie, nous devons ajouter des banlieues dans l’adresse de destination spécialement, pour le pays de livraison “Irlande”.
  2. Pour les pays de destination, qui n’ont pas de codes postaux, le nom de la ville doit être orthographié avec précision. Par exemple, il n’y a pas de ville appelée NORTH ROAD dans IE, la ville réelle s’appelle M50 NORTH ROAD.

D’après cette réponse, nous n’étions pas clairs sur les moyens de validation de l’adresse, comment savons-nous que l’adresse est correcte ou non ou que le nom de la ville est correct ou non. Par exemple, si nous envoyons le nom de la ville sous la forme “Cie Dublin” dans la demande de création d’expédition, nous obtenons une erreur d’emplacement non valide. Nous avons donc de nouveau créé un ticket pour savoir comment nous pouvons valider l’adresse et en réponse, DHL a suggéré un outil nommé DHL Capability Tool (https://dct.dhl.com/). Entrez simplement l’expéditeur et l’adresse de destination dans le formulaire et cliquez sur le bouton de recherche comme indiqué dans la capture d’écran ci-dessous :

Cet outil donnera le résultat si l’adresse est valide ou non. Donc, si vous obtenez une erreur concernant l’emplacement, vous pouvez valider l’adresse à l’aide de cet outil de capacité.

Password Protection with?htaccess

Introduction

Il est toujours judicieux d’ajouter une protection par mot de passe à l’un des dossiers / pages Web de votre site Web si vous souhaitez en restreindre l’accès. La méthode pour appliquer la même chose est plus importante. Nous pouvons utiliser PHP pour autoriser les informations sur chaque page, mais cela ne protège pas vos images ni aucun autre média, n'est-ce pas? Nous pouvons donc utiliser une autre méthode appelée htaccess protection par mot de passe?or authentification htaccess. C'est fiable et beaucoup plus facile.

Objectif

Ce blog vous aide à savoir comment restreindre l'accès au site Web d'utilisateurs non autorisés.

Veuillez suivre les étapes mentionnées ci-dessous:

Étape 1. Utiliser htaccess protection par mot de passe nous devons créer deux fichiers dans le répertoire dans lequel vous souhaitez restreindre l'accès: –

1) .htaccess
2) fichier .htpasswd

Étape 2. Ajoutez le code suivant dans le fichier .htaccess que vous avez créé à l'étape 1.

Le code .htaccess

AuthType Basic AuthName "No Access" AuthUserFile C: /wamp64/www/test_project/self_stitch/.htpasswd nécessite un utilisateur valide.

Remarque : Vous pouvez remplacer "C: / wamp64 / www / test_project /" par votre propre structure de répertoires. Le code ci-dessus (directives) est décrit ci-dessous:

je.) AuthType La directive AuthType vous permet de sélectionner la méthode utilisée pour authentifier l'utilisateur.

ii.) AuthName Remplacer "Pas d'accès"à n'importe quel nom selon vos besoins. Ce nom sera affiché dans la zone d'alerte lorsque l'utilisateur tentera d'ouvrir une page protégée par htaccess.AuthName?directive sets the?domain?to be used in the authentication.

Once a client has passed the authentication in the?”Pas d'accès"zone, il n’est pas nécessaire de saisir le mot de passe pour accéder à tout autre fichier de la même zone sur le même serveur. Par conséquent, empêchez un utilisateur de saisir le mot de passe encore et encore en laissant plusieurs zones restreintes partager le même domaine.

iii.) AuthUserFile

  • Vous devez ajouter votre chemin .htpasswd à la place de "C: /wamp64/www/test_project/self_stitch/.htpasswd".
  • Le "AuthUserFile"La valeur est toujours spécifique à votre configuration hôte.
  • Si vous ne savez pas ce que la valeur devrait être, faites un
  • Pour cela, il vous suffit d'ajouter la ligne "<? Php phpinfo ();?>" Dans le fichier phpinfo.php. Vous pouvez trouver le fichier phpinfo.php dans votre dossier racine (www pour localhost), puis exécuter le fichier phpinfo.php sur le navigateur. Par exemple, sur localhost, exécutez localhost / phpinfo.php

REMARQUE:

1.Pour protéger par mot de passe plusieurs fichiers dans le même dossier, créez simplement plusieurs blocs <Fichiers> </ Files> dans le même fichier .htaccess – par exemple:

AuthUserFile /full/path/to/.htpasswd AuthType Basic AuthName "Ma page secrète" <Fichiers "mypage.html"> Requiert un utilisateur valide </ Files> <Fichiers "myotherpage.html"> Requiert un utilisateur valide </ Files>.

2. Pour autoriser uniquement les utilisateurs à accéder aux types de fichiers spécifiques, vous devez ajouter le code suivant:

AuthUserFile /full/path/to/.htpasswd AuthType Basic AuthName "Ma page secrète" # nier * tout * <FilesMatch ". *"> Ordre Autoriser, Refuser Refuser de tous </ FilesMatch> # Autoriser uniquement * certains * fichiers nécessaires: <FilesMatch ". * \. (Php | html | css | js | JS | CSS) $"> Ordre Autorisé, Refus Autorisé de tous </ FilesMatch>

Ici, tout d’abord, nous limitons l’accès à tout via <FilesMatch ". *">, Après quoi nous autorisons uniquement l’accès à certains fichiers (php, html, css, js) à l’aide de <FilesMatch ". * \. (Php | html | css | js | JS | CSS) $ "> Notre exemple n'autorise pas l'accès à d'autres fichiers, par exemple. .jpg, .png, etc. Vous pouvez également autoriser l'accès depuis une adresse IP spécifique en utilisant "permettent de 12.34.56.78" à la place d'utiliser "permettre de toute“.

3. Pour ajouter un mot de passe htaccess uniquement aux types de fichiers spécifiques, vous devez ajouter le code suivant:

AuthType Basic AuthName "zone restreinte" AuthUserFile C: /wamp64/www/test_project/self_stitch/.htpasswd # mais n'autorise plus que * certains * fichiers nécessaires: <FilesMatch ". * \. (Txt) $"> nécessite un utilisateur valide <, / FilesMatch>

En utilisant le code ci-dessus, tous les fichiers seront accessibles sans mot de passe, mais les fichiers avec l'extension .txt auront besoin d'un nom d'utilisateur et d'un mot de passe.

4. Si vous devez appliquer un mot de passe htaccess à tous les fichiers sauf un, ajoutez le code suivant:

AuthType Basic AuthName "zone restreinte" AuthUserFile C: /wamp64/www/test_project/self_stitch/.htpasswd <FilesMatch ". *"> Requiert utilisateur valide </ FilesMatch> # mais n'autorise plus que * certains * fichiers * nécessaires: <FilesMatch " . * \. (txt) $ "> Requiert tous les droits </ FilesMatch>

Dans l'exemple ci-dessus, à l'exception des fichiers .txt, tous les autres fichiers auront besoin du nom d'utilisateur et du mot de passe pour pouvoir être utilisés.

iv.) exiger

La ligne "Nécessite un utilisateur valide"signifie que tout utilisateur spécifié dans votre
Étape 3. Ajoutez le nom d'utilisateur et le mot de passe dans le fichier .htpasswd comme décrit ci-dessous:

Le code .htpasswd

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

je.) le

ii.) Les mots de passe sont cryptés à l’aide de MD5 à des fins de sécurité.

iii.) Comme vous pouvez le voir ci-dessus, seul l'utilisateur 1 est autorisé, c'est-à-dire avec le mot de passe John: Mot de passe actuel: egypt4721 Mot de passe crypté: $ apr1 $ DObQIej5 $ 0ZmEaLN42GEZ / XJEiJXhXNXX. (Crypté avec MD9).

iv.) Pour générer un fichier .htpasswd, utilisez le lien indiqué ci-dessous:

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

Après avoir créé le fichier .htaccess et .htpasswd dans le répertoire que vous souhaitez protéger, une alerte sera affichée à l'ouverture de votre site Web. Veuillez vous référer à la capture d'écran ci-dessous:

Plus de détails pour télécharger un exemple de projet avec .htaccess protégé par mot de passe.