Jak zintegrować Google reCAPTCHA z PHP?

 

W dzisiejszych czasach każdy chce pozbyć się spamu na swojej stronie internetowej, niezależnie od tego, czy jest to spam w komentarzach, wiadomościach spamowych, czy też ruchu spamowym w Twojej witrynie. Aby chronić swoją witrynę przed spamem, jednym z najlepszych i najłatwiejszych sposobów jest użycie Google reCAPTCHA.

Dawniej ludzie umieszczali na ekranie losową liczbę lub ciąg znaków i sprawdzali to po stronie serwera. Jednak ta metoda jest przestarzała i dla wielu użytkowników jest również czasochłonna, podczas gdy metoda Google reCAPTCHA jest łatwa w użyciu i zajmuje mniej czasu, co zapewnia lepszą wygodę użytkownika. Wystarczy jedno kliknięcie, aby udowodnić, że są ludźmi, a nie robotem. Google reCAPTCHA można bardzo łatwo zaimplementować w skrypcie PHP.

Zalecane przeczytanie: Jak zintegrować ochronę Google ReCaptcha w swoim sklepie PrestaShop?

Na tym blogu dowiesz się, jak zintegrować Google reCaptcha z PHP, w naszym przewodniku krok po kroku.

Krok 1: Aby pobrać klucz API Google reCAPTCHA

Aby otrzymać klucz API umożliwiający korzystanie z reCAPTCHA w PHP, musisz zarejestrować swoją witrynę pod adresem – https://www.google.com/recaptcha/admin. Aby uzyskać pomoc, poniżej znajdują się zrzuty ekranu:


Nazwa Użyj wybranej przez siebie etykiety, aby w przyszłości łatwo było rozpoznać witrynę. W tym polu możesz dodać nazwę swojej marki lub adres URL witryny, aby zwiększyć czytelność nazwy projektu.

typ reCAPTCHA: Wybierz dowolny typ reCAPTCHA, który wolisz dla swojej witryny. Obecnie dostępne są dwa typy, tj. reCAPTCHA v3 i reCAPTCHA v2. W przykładowym projekcie użyliśmy reCAPTCHA v2.

Domeny: W tym miejscu należy podać nazwę swojej witryny internetowej, dla której będziesz wdrażać funkcjonalność reCAPTCHA. Dotyczy to domen, które tu wpisujesz, a także ich subdomen. Na przykład rejestracja w witrynie abc.com rejestruje również witrynę xyz.abc.com.

Teraz wystarczy zaznaczyć pole wyboru Zaakceptuj Warunki korzystania z usługi reCAPTCHA i kliknij na przycisku Wyślij.

Teraz masz klucz witryny i tajny klucz do swojej witryny.

Krok 2: Aby zaimplementować Google reCaptcha w PHP, drugi krok to wdrożenie funkcjonalności reCAPTHA w Twojej witrynie:

  • Aby dodać reCAPTCHA w PHP, musisz najpierw dołączyć bibliotekę JavaScript reCAPTCHA do swojego kodu HTML.
    
    
  • Teraz dodaj ten kod HTML w miejscu, w którym chcesz wyświetlić widżet reCAPTCHA.
    
    
  • Zastąp „klucz_strony” kluczem witryny dostarczonym przez Google dla Twojej witryny.
  • To już gotowe, wystarczy odświeżyć swoją stronę, a zobaczysz widżet reCAPTCHA na swojej stronie.

Krok 3: Aby zweryfikować odpowiedź użytkownika

Teraz musisz sprawdzić odpowiedź, gdy użytkownik kliknie widżet reCAPTCHA. Poniżej znajduje się kod PHP służący do weryfikacji reakcji użytkownika:

sukces) { $succMsg = 'Twoja prośba o kontakt została pomyślnie przesłana.'; } else { $errMsg = 'Weryfikacja robota nie powiodła się, spróbuj ponownie.'; } } ?>

Dodaj swój aktualny tajny klucz do powyższego kodu i gotowe.

Pobierz przykładowy kod tutaj.

Zalecane przeczytanie: Dwa skuteczne moduły do ochrony przed spamerami i botami w sklepie PrestaShop

Knowband oferuje dodatek Google ReCaptcha dla różnych platform, w tym PrestaShop, i OpenCart. Moduł Google ReCaptcha to potężne narzędzie bezpieczeństwa, które chroni Twoją witrynę przed wpisami spamowymi, jednocześnie ułatwiając dostęp rzeczywistym użytkownikom.

Wtyczki Google ReCaptcha można używać do logowania, rejestracji, resetowania hasła, dobrze znanych formularzy kontaktowych i innych rzeczy. Obrazy są wyświetlane w dodatku Google ReCaptcha w ramach standardowych procesów sprawdzania poprawności, które pomagają identyfikować ludzi.

Ten moduł Google reCaptcha oferuje doskonałą wydajność i jest niezwykle konfigurowalny. Z zaplecza modułów Knowband sprzedawca elektroniczny może szybko dostosować dodatek Google reCaptcha.

Prestashop Dodatek Google ReCaptcha

PrestaShop Google reCaptcha firmy Knowband zwiększa bezpieczeństwo Twojego sklepu, integrując Google reCaptcha, zapobiegając spamowi i automatycznym botom.

Kupuj teraz

Ostatnie słowa:

Wdrożenie Google reCAPTCHA na stronach internetowych jest niezbędne ze względu na bezpieczeństwo. Pomaga odróżnić prawdziwych użytkowników od botów, zapobiegając spamowi i automatycznym atakom. Dzięki temu dane użytkowników są bezpieczne i zapewnia płynne działanie witryny. Blokując szkodliwy ruch, reCAPTCHA poprawia komfort użytkownika, dzięki czemu interakcje online są bezpieczniejsze i bardziej niezawodne.

Polecana lektura – Zwiększ bezpieczeństwo swojego sklepu PrestaShop dzięki najlepszym modułom PrestaShop firmy Knowband
Oprócz tego Google reCaptcha jest również kompatybilny z One Page Checkout firmy Knowband, chroniąc Cię przed oszustwami transakcyjnymi. To najlepszy sposób na zabezpieczenie Twojego sklepu przed oszustwami transakcyjnymi. Aby obejrzeć demo administratora i demo modułu Google reCaptcha, odwiedź naszą stronę sklep.

Nie pozwól, aby spamerzy zaszkodzili Twojej firmie!

 

Jak zmienić domyślny status zamówienia na WooCommerce

Czasami podczas opracowywania witryny e-commerce należy automatycznie sprawdzić status płatności i oznaczyć status zamówienia jako „Zakończony“”Do czasu”lub zgodnie z wymaganiami. Domyślny stan zamówienia jest ustalany na podstawie dokonanej płatności. Użytkownicy Front-end mogą sprawdzić status swojego zamówienia na stronie Historia konta. W tym blogu dowiemy się, jak zmienić domyślny stan zamówienia na Woo Commerce jako „Faktura do wydrukowania" krok po kroku.

Krok 1: utwórz niestandardową wtyczkę

Aby utworzyć niestandardową wtyczkę w swojej witrynie, wykonaj następujące czynności:

1. Przejdź do folderu wtyczek Word Press, w naszym przypadku jest to aplikacja / wtyczki. Utwórz folder jako „customstatus“.

Ważna uwaga: Nadaj folderowi unikalną nazwę (domyślna nazwa wtyczki Word Press nie powinna kolidować z nazwą wtyczki), używając małych liter i myślników.

2. Teraz utwórz główny plik PHP wtyczki. Aby to zrobić, utwórz plik PHP w folderze wtyczki i nadaj mu taką samą nazwę jak nazwa folderu. W naszym przypadku nazwa folderu to „customstatus”, więc nazwa pliku to customstatus.php.

3. Skonfiguruj informacje o wtyczce. Wystarczy skopiować i wkleić poniższy kod do pliku 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
?*/

Uwaga: Edytuj szczegóły, takie jak nazwa autora, nazwa wtyczki, opis itp. Zgodnie z wymaganiami.

4. Otóż ​​to! Właśnie ukończyłeś minimalną liczbę kroków wymaganych do utworzenia wtyczki Word Press. Możesz go teraz aktywować na karcie Wtyczki w Word Press admin.

Krok 2: Dodaj kod do niestandardowej wtyczki

1. Teraz musimy stworzyć funkcję i podpiąć ją do określonej akcji. Po prostu skopiuj poniższą funkcję do pliku customstatus.php.

2. Ponieważ chcemy zaktualizować status zamówienia po zakończeniu płatności, dodaj akcję do haka „woocommerce_payment_complete”, jak podano poniżej w wyróżnionym kodzie. // KOPIUJ CAŁY KOD W PLIKU customstatus.php.

# <editor-fold defaultstate = "collapsed" desc = "Domyślny status jako faktura do wydrukowania"> funkcja action_woocommerce_payment_complete ($ order_id) {if (! $ order_id) return; $ order = wc_get_order ($ order_id); $ order-> update_status („wc-print-faktura”); // Status zamówienia zostanie zaktualizowany do „Faktury do wydrukowania”. }; // dodaj działanie add action („woocommerce_payment_complete”, „action_woocommerce_payment_complete”, 10, 3); # </editor-fold>

3. Po prostu zapisz plik customstatus.php i gotowe. Od teraz status zamówienia zostanie zaktualizowany do „Faktury do wydrukowania” po zakończeniu płatności.

PRZYDATNA UWAGA: Jeśli chcesz zaktualizować status zamówienia po załadowaniu strony „Dziękujemy” lub „Sukces kasy”, możesz dodać akcję na haku „woocommerce_thankyou”. W customstatus.php zamień add działań („woocommerce_payment_complete”, „action_woocommerce_payment_complete”, 10, 3); z dodatkowym działaniem („woocommerce_thankyou”, „ggb_custom_change_order_status”, 10,3);


Spring Omni Manifest

Jak uzyskać manifest z przesyłek Spring Omni?

ROZWIĄZANIE: Podnieśliśmy zapytanie do wiosennego Omni, jeśli mają jakiekolwiek API do generowania manifestu przesyłek utworzonych w danym dniu.

Odpowiedzieli:

“Obecnie nie dostarczamy manifestu„. Próbowaliśmy więc wygenerować manifest na naszym końcu i potwierdzić, że wybraliśmy chłopca z Spring Omni, jeśli potrzebują oni manifestu do odebrania paczek? Odpowiedzieli, że nie ma potrzeby generowania raportu manifestu przesyłek, ponieważ po prostu pobierają opłaty tylko liczba przekazanych im etykiet (paczek) Aby uzyskać więcej powiązanych blogów, odwiedź tutaj:

Błąd Spring Global (Spring Omni): Wymagana jest właściwość numer_telefonu

Spring Global (Spring Omni) Error: Przesyłka nie jest zarejestrowana

Spring Global (Spring Omni): Koncepcja fakturowania

Spring Global (Spring Omni) Error: Resource Not Found

Błąd Spring Global (Spring Omni): uzyskiwanie pustej odpowiedzi podczas pobierania etykiety


Spring Global (Spring Omni): Koncepcja fakturowania

Chcemy wiedzieć, że Spring Global nalicza nam opłaty za przesyłki, które stworzyliśmy i zarejestrowaliśmy paczki OR, które przekażemy im do wysyłki.

Podnieśliśmy bilet na Spring Global:

Jakie przesyłki (paczki) będą pobierać od nas? Czy będzie to na przesyłkach, które stworzyliśmy i zarejestrowaliśmy paczki LUB, które im przekażemy.

Załóżmy, że stworzyliśmy i zarejestrowaliśmy przesyłki 10, ale przekazujemy im tylko paczki 8 w celu ich dostarczenia (ponieważ nie chcemy dostarczania przesyłek 2). Czy teraz w tym konkretnym przypadku będą pobierać opłaty za przesyłki 10 lub 8?

Odpowiedzieli:

“Spring będzie wystawiał tylko etykiety zeskanowane. Więc w twoim przykładzie byłbyś tylko“.

Jak widzimy, będziemy pobierać opłaty tylko za przesyłki, które im przekazujemy, niezależnie od liczby przesyłek, które stworzyliśmy na ich końcu.

Odwiedź tutaj, aby uzyskać powiązane informacje:

Błąd Spring Global (Spring Omni): Wymagana jest właściwość numer_telefonu

Wiosenny manifest omni

Spring Global (Spring Omni) Error: Przesyłka nie jest zarejestrowana

Spring Global (Spring Omni) Error: Resource Not Found

Błąd Spring Global (Spring Omni): uzyskiwanie pustej odpowiedzi podczas pobierania etykiety


Spring Global (Spring Omni) Error: Resource Not Found

Podczas tworzenia przesyłki za pomocą Spring Omni może pojawić się błąd w odpowiedzi, taki jak wymieniony poniżej:

[status] => 404 [code] => 10002 [title] => Nie znaleziono zasobu [detail] => Nie można znaleźć jednego lub więcej zasobów regionu. Ten błąd wystąpił podczas wysyłania następującego żądania utworzenia przesyłki:

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

Kiedy poprosiliśmy Spring Global o przyczynę tego błędu, odpowiedzieli, że problemem jest tutaj „region, który nie jest rozpoznawany, ponieważ nie ma jeszcze regionów dla USA”. Po prostu pominięcie regionu powinno rozwiązać ten problem. Poniższy JSON powinien działać:

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

Odwiedź tutaj, aby uzyskać powiązane informacje:

Błąd Spring Global (Spring Omni): Wymagana jest właściwość numer_telefonu

Wiosenny manifest omni

Spring Global (Spring Omni) Error: Przesyłka nie jest zarejestrowana

Spring Global (Spring Omni): Koncepcja fakturowania

Błąd Spring Global (Spring Omni): uzyskiwanie pustej odpowiedzi podczas pobierania etykiety


Błąd Spring Global (Spring Omni): uzyskiwanie pustej odpowiedzi podczas pobierania etykiety

Wystąpił problem podczas próby utworzenia przesyłki (Używanie / wysyłki API) i potem ściągaliśmy etykietę (Używanie / wysyłki / {shipment_id} / API plików). Problem polegał na tym, że otrzymaliśmy pustą odpowiedź. Kiedy sprawdzaliśmy przesyłki na zapleczu, wyglądało to jak na poniższym zrzucie ekranu:

Kiedy kliknęliśmy na przesyłkę (ze statusem = „koncepcja”), mamy wiadomość jako „Przesyłka została utworzona, ale nie została jeszcze zarejestrowana u przewoźnika (jeszcze).“

Kiedy zrozumieliśmy koncepcję tego nowego procesu tworzenia przesyłek na wiosnę Omni, dowiadujemy się, że w Spring Global musimy zarejestrować przesyłkę, a nie tylko utworzyć przesyłkę przed pobraniem etykiety odpowiadającej przesyłce. Istnieją dwa możliwe scenariusze rejestracji przesyłki:

  1. Utwórz przesyłkę i jednocześnie zarejestruj się
  2. Utwórz przesyłkę, ale zarejestruj ją w określonym czasie, tj. W przyszłości

1. Aby natychmiast zarejestrować przesyłkę

Wysyłając żądanie utworzenia przesyłki, musimy wysłać „register_at„wartość parametru jako 0 lub czas przeszły (znacznik czasu UNIX) w danych żądania.

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

Jeśli wyślemy wartość register_at jako bieżący znacznik czasu, możemy uzyskać pewne opóźnienie w rejestracji przesyłki, So Spring Global zasugerował nam wysłanie wartości register_at jako 0, aby czas był brany pod uwagę w przeszłości, a przesyłka zostanie zarejestrowana tak szybko, jak jak to możliwe. Ponieważ przesyłka zostanie zarejestrowana teraz, nie będziemy mogli jej usunąć / edytować.

2. Zarejestruj przesyłkę w przyszłości

Jeśli chcemy edytować / usunąć przesyłkę po jej utworzeniu, musimy tylko zarejestrować przesyłkę w przyszłości lub w określonym czasie. Aby zarejestrować przesyłkę w przyszłości, powiedzmy po godzinach tworzenia przesyłki przez 5, po prostu podaj wartość „register_at” jako przyszły znacznik czasu wynoszący pięć godzin na podstawie bieżącego czasu. Teraz będziemy mogli edytować / usuwać przesyłkę do godziny 5, ale nie będziemy mogli pobrać etykiety i faktury handlowej. Przy podanym znaczniku czasu przesyłka zostanie automatycznie zarejestrowana i będziemy mogli pobrać etykietę i fakturę handlową po upływie określonego czasu.

Są to więc dwa sposoby rejestracji przesyłki. Możemy korzystać zarówno z naszych wymagań.

Odwiedź tutaj, aby uzyskać powiązane informacje:

Błąd Spring Global (Spring Omni): Wymagana jest właściwość numer_telefonu

Wiosenny manifest omni

Spring Global (Spring Omni) Error: Przesyłka nie jest zarejestrowana

Spring Global (Spring Omni): Koncepcja fakturowania

Spring Global (Spring Omni) Error: Resource Not Found


DHL Problem: Lokalizacja docelowa jest nieprawidłowa. Proszę sprawdzić dane

Podczas rezerwacji przesyłki w DHL za pomocą API (w naszym przypadku krajem dostawy była „Irlandia”), otrzymaliśmy błąd w odpowiedzi na żądanie możliwości. Błąd to „Lokalizacja docelowa jest nieprawidłowa. Proszę sprawdzić dane“.

Rozwiązanie: �

W związku z tym problemem podnieśliśmy mandat na DHL, a oni odpowiedzieli, jak poniżej:

Gdy żądasz możliwości, ważne jest, aby podać kompletne i wysokiej jakości dane adresowe. Niezbędne jest określenie dokładnych informacji o routingu i możliwości dla punktu początkowego i docelowego. Przyczyną błędu mogą być:

  1. Możliwe, że na różnych przedmieściach znajduje się więcej niż jedno miasto o tej samej nazwie. Aby więc uzyskać skuteczną odpowiedź, musimy dodać przedmieścia w adresie docelowym specjalnie dla kraju dostawy „Irlandia”.
  2. W przypadku krajów docelowych, w których nie ma żadnych kodów pocztowych, nazwa miasta musi być napisana poprawnie. Na przykład� w IE nie ma miasta o nazwie NORTH ROAD, rzeczywiste miasto nazywa się M50 NORTH ROAD.

Z tej odpowiedzi nie było jasne, czy sprawdzanie poprawności adresu oznacza, skąd mamy wiedzieć, czy adres jest poprawny, czy nie, czy nazwa miasta jest poprawna, czy nie. Na przykład, jeśli wysyłamy nazwę miasta jako „Co. Dublin” w żądaniu utworzenia przesyłki pojawia się błąd dotyczący nieprawidłowej lokalizacji. Dlatego ponownie podnieśliśmy zgłoszenie, aby dowiedzieć się, w jaki sposób możemy zweryfikować adres, aw odpowiedzi DHL zasugerował narzędzie o nazwie DHL Capability Tool (https://dct.dhl.com/). Wystarczy wpisać adres nadawcy i adres docelowy w formularzu i kliknąć przycisk wyszukiwania, jak pokazano na zrzucie ekranu poniżej:

To narzędzie poda wynik, czy adres jest prawidłowy, czy nie. Więc jeśli otrzymujesz błąd dotyczący lokalizacji, możesz zweryfikować adres za pomocą tego narzędzia możliwości.

Password Protection with?htaccess

Wprowadzenie

Zawsze warto dodać ochronę hasłem do któregokolwiek z folderów / stron internetowych witryny, jeśli chcesz ograniczyć dostęp do nich. Ważniejsza jest metoda stosowania tego samego. Możemy użyć PHP do autoryzacji informacji na każdej stronie, ale to nie chroni twoich zdjęć ani żadnych innych mediów, prawda? Możemy więc użyć innej metody znanej jako Dostęp do ochrony hasłem?or htaccess authentication. Jest niezawodny i znacznie łatwiejszy.

Cel

Ten blog pomoże Ci dowiedzieć się, jak ograniczyć dostęp do witryny przed nieautoryzowanymi użytkownikami.

Wykonaj poniższe czynności:

Krok 1. Aby korzystać z Dostęp do ochrony hasłem musimy utworzyć dwa pliki w katalogu, w którym chcesz ograniczyć dostęp: –

1) .htaccess
2) plik .htpasswd

Krok 2. Dodaj następujący kod w pliku .htaccess, który utworzyłeś w kroku 1.

Kod .htaccess

AuthType Basic AuthName „No Access” AuthUserFile C: /wamp64/www/test_project/self_stitch/.htpasswd wymaga poprawnego użytkownika

Uwaga: Możesz zastąpić „C: / wamp64 / www / test_project /” własną strukturą katalogów. Powyższy kod (dyrektywy) opisano poniżej:

ja.) AuthType Z dyrektywy AuthType można wybrać metodę używaną do uwierzytelnienia użytkownika.

ii.) AuthName Replace ”Brak dostępu„do dowolnej nazwy zgodnie z Twoimi wymaganiami. Nazwa ta zostanie wyświetlona w oknie alertu, gdy użytkownik spróbuje otworzyć stronę chronioną przez htaccess.AuthName?directive sets the?domain?to be used in the authentication.

Once a client has passed the authentication in the?”Brak dostępu„strefa, nie ma potrzeby wprowadzania hasła, aby uzyskać dostęp do jakiegokolwiek innego pliku w tej samej strefie na tym samym serwerze. Dlatego, aby uniemożliwić użytkownikowi wielokrotne wprowadzanie hasła, pozwalając wielu ograniczonym obszarom na współużytkowanie tej samej domeny.

iii.) AuthUserFile

  • Musisz dodać ścieżkę .htpasswd zamiast „C: /wamp64/www/test_project/self_stitch/.htpasswd”.
  • "AuthUserFile„Wartość jest zawsze specyficzna dla konfiguracji hosta.
  • Jeśli nie wiesz, jaka powinna być wartość, zrób
  • W tym celu wystarczy dodać linię „<? Php phpinfo ();?>” W pliku phpinfo.php. Możesz znaleźć plik phpinfo.php w folderze głównym (www dla localhost), a następnie uruchomić plik phpinfo.php w przeglądarce. Na przykład na localhost uruchom localhost / phpinfo.php

UWAGA:

1.Aby zabezpieczyć hasłem więcej niż jeden plik w tym samym folderze, wystarczy utworzyć więcej bloków <Files> </Files> w tym samym pliku .htaccess – na przykład:

AuthUserFile /full/path/to/.htpasswd AuthType Basic AuthName "My Secret Page" <Pliki "mypage.html"> Wymagaj poprawnego użytkownika </Files> <Pliki "myotherpage.html"> Wymagaj poprawnego użytkownika </Files>

2. Aby zezwolić użytkownikom na dostęp tylko do określonych typów plików, musisz dodać następujący kod:

AuthUserFile /full/path/to/.htpasswd AuthType Basic AuthName "My Secret Page" # deny * everything * <FilesMatch ". *"> Order Allow, Deny Deny from all </FilesMatch> # Zezwalanie na * tylko * niezbędne * pliki <FilesMatch ". * (Php | html | css | js | JS | CSS) $"> Zamów zezwolenie, odmów zezwalania ze wszystkich </FilesMatch>

Tutaj najpierw ograniczamy dostęp do wszystkiego za pomocą <FilesMatch ". *">, A następnie pozwalamy na dostęp tylko niektórym plikom (php, html, css, js) za pomocą <FilesMatch ". * (Php | html | css | js | JS | CSS) $ "> Nasz przykład nie zezwala na dostęp do innych plików np. .jpg, .png, itp. Możesz także zezwolić na dostęp z określonego adresu IP za pomocą „pozwalają z 12.34.56.78" zamiast używać "pozwalają z każdego“.

3. Aby dodać hasło htaccess tylko do określonych typów plików, musisz dodać następujący kod:

AuthType Basic AuthName "obszar zastrzeżony" AuthUserFile C: /wamp64/www/test_project/self_stitch/.htpasswd #, ale teraz zezwalaj na * tylko * niezbędne pliki: <FilesMatch ". * (Txt) $"> wymagaj poprawnego użytkownika < / FilesMatch>

Korzystając z powyższego kodu, wszystkie pliki będą dostępne bez hasła, ale pliki z rozszerzeniem .txt będą wymagały nazwy użytkownika i hasła, aby uzyskać do nich dostęp.

4. Jeśli chcesz zastosować hasło htaccess dla wszystkich plików oprócz jednego, dodaj następujący kod:

AuthType Basic AuthName "obszar zastrzeżony" AuthUserFile C: /wamp64/www/test_project/self_stitch/.htpasswd <PlikiMatch ". *"> Wymagaj poprawnego użytkownika </FilesMatch> # ale teraz zezwalaj na * tylko * niezbędne * pliki: <FilesMatch " . * (txt) $ "> Wymagaj wszystkich przyznanych </FilesMatch>

W powyższym przykładzie, z wyjątkiem plików .txt, wszystkie inne pliki będą wymagały nazwy użytkownika i hasła.

iv.) wymagać

Linia "wymagać prawidłowego użytkownika„oznacza dowolnego użytkownika określonego w Twoim
Krok 3. Dodaj nazwę użytkownika i hasło w pliku .htpasswd zgodnie z poniższym opisem:

Kod .htpasswd

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

ja.) The

ii.) Hasła są szyfrowane za pomocą MD5 dla celów bezpieczeństwa.

iii.) Jak widać powyżej, tylko użytkownik 1 jest dozwolony, tj. Jan z hasłem: Rzeczywiste hasło: egypt4721 Zaszyfrowane hasło: $ apr1 $ DObQIej5 $ 0ZmEaLN42GEz / XJEiJXh9. (Zaszyfrowane przy użyciu MD5).

iv.) Aby wygenerować plik .htpasswd, użyj linku podanego poniżej:

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

Po utworzeniu pliku .htaccess i .htpasswd w katalogu, który chcesz chronić, po otwarciu witryny zostanie wyświetlony alert. Zobacz poniższy zrzut ekranu:

Kliknij tutaj pobrać przykładowy projekt z zabezpieczonym hasłem .htaccess.