Como integrar o Google reCAPTCHA ao PHP?

 

Hoje em dia, todo mundo quer se livrar do spam em seus sites, sejam comentários de spam, mensagens de spam ou tráfego de spam em seu site. Para proteger seu site contra spam, uma das maneiras melhores e mais fáceis é usar Google reCAPTCHA.

Antigamente, as pessoas costumavam colocar algum número ou string aleatório na tela e verificá-lo no lado do servidor. Mas esse método é o método antigo e também demorado para muitos usuários, enquanto o método reCAPTCHA do Google é fácil de usar e leva menos tempo, resultando em uma melhor experiência do usuário. Eles só precisam de um clique para provar que são humanos e não um robô. O Google reCAPTCHA é muito fácil de implementar em um script PHP.

Recomendado Read: Como integrar a proteção Google ReCaptcha na sua loja PrestaShop?

Neste blog, você aprenderá como integrar o Google reCaptcha ao PHP em nosso guia passo a passo.

Etapa 1: para buscar a chave da API reCAPTCHA do Google

Para obter uma chave de API para usar o reCAPTCHA com PHP, você precisa registrar seu site em – https://www.google.com/recaptcha/admin. As capturas de tela são fornecidas abaixo para sua ajuda:


Gravadora: Use um rótulo de sua escolha, para que seja fácil reconhecer o site no futuro. Você pode adicionar o nome da sua marca ou URL do site neste campo para melhorar a legibilidade do nome do projeto.

tipo reCAPTCHA: Escolha qualquer tipo de reCAPTCHA de sua preferência para o seu site. Existem dois tipos disponíveis atualmente, ou seja, reCAPTCHA v3 e reCAPTCHA v2. Usamos o reCAPTCHA v2 no projeto de exemplo.

Domínios: Aqui você precisa inserir o nome do site para o qual implementará a funcionalidade reCAPTCHA. Aplica-se aos domínios que você insere aqui e também aos seus subdomínios. Por exemplo, um registro em abc.com também registra xyz.abc.com.

Agora basta marcar a caixa de seleção de Aceite os Termos de Serviço do reCAPTCHA e clique em no botão Enviar.

Agora você tem a chave do site e a chave secreta do seu site.

Etapa 2: Para implementar o Google reCaptcha com PHP, a segunda etapa é implementar a funcionalidade reCAPTHA em seu site:

  • Para adicionar reCAPTCHA em PHP, primeiro você precisa incluir a biblioteca reCAPTCHA JavaScript em seu HTML.
    
    
  • Agora adicione este código HTML onde deseja mostrar o widget reCAPTCHA.
    
    
  • Substitua “site_key” pela chave do site fornecida pelo Google para o seu site.
  • Agora está feito, basta atualizar sua página e você verá o widget reCAPTCHA em seu site.

Etapa 3: Para validar a resposta do usuário

Agora, você precisa validar a resposta quando um usuário clica no widget reCAPTCHA. O código PHP para verificar a resposta do usuário é fornecido abaixo:

sucesso) { $succMsg = 'Sua solicitação de contato foi enviada com sucesso.'; } else { $errMsg = 'Falha na verificação do robô, tente novamente.'; } } ?>

Adicione sua chave secreta real no código acima e pronto.

Obtenha o código de amostra SUA PARTICIPAÇÃO FAZ A DIFERENÇA.

Recomendado Read: Dois módulos eficazes para afastar spammers e bots da loja PrestaShop

A Knowband oferece o complemento Google ReCaptcha para várias plataformas, incluindo PrestaShop, e OpenCart. O módulo Google ReCaptcha é uma ferramenta de segurança poderosa que protege seu site contra entradas de spam, ao mesmo tempo que facilita o acesso para usuários reais.

O plug-in Google ReCaptcha pode ser usado para login, registro, redefinição de senha, formulários de contato conhecidos e outras coisas. As imagens são mostradas no complemento Google ReCaptcha como parte de seus processos de validação padrão para ajudar a identificar humanos.

Este módulo Google reCaptcha oferece excelente desempenho e é extremamente personalizável. No back-end dos módulos Knowband, o e-comerciante pode ajustar rapidamente o complemento Google reCaptcha.

Complemento Prestashop Google ReCaptcha

PrestaShop Google reCaptcha da Knowband aumenta a segurança da sua loja integrando o Google reCaptcha, evitando spam e bots automatizados.

Compre agora

Palavras finais:

Implementar o Google reCAPTCHA em sites é essencial para a segurança. Ajuda a diferenciar usuários reais de bots, evitando spam e ataques automatizados. Isso mantém os dados do usuário seguros e garante que o site funcione sem problemas. Ao bloquear o tráfego prejudicial, o reCAPTCHA melhora a experiência do usuário, tornando as interações online mais seguras e confiáveis.

Leitura recomendada – Capacite a segurança da sua loja PrestaShop com os principais módulos PrestaShop da Knowband
Junto com isso, o Google reCaptcha também é compatível com o One Page Checkout da Knowband, protegendo você contra fraudes em transações. É a melhor maneira de proteger sua loja contra fraudes em transações. Para ver a demonstração administrativa e a demonstração front-end do Módulo Google reCaptcha, visite nosso loja.

Evite permitir que spammers prejudiquem o seu negócio!

 

Como alterar o status padrão do pedido no WooCommerce

Às vezes, durante o desenvolvimento de um site de comércio eletrônico, você precisa verificar automaticamente o status do pagamento e marcar o status do pedido como "Concluir o“”Pendente"ou conforme sua exigência. Um status de pedido padrão é definido com base no pagamento efetuado. Os usuários do Front-end podem verificar o status do pedido na página Histórico da conta. Neste blog, aprenderemos como alterar o status do pedido padrão em Cortejar o comércio como "Fatura a ser impressa" passo a passo.

Etapa 1: crie um plug-in personalizado

Para criar um plug-in personalizado no seu site, siga as seguintes etapas:

1. Navegue até a pasta de plugins do Word Press, no nosso caso, é app / plugins. Crie uma pasta como "status personalizado“.

Nota importante: Atribua um nome exclusivo à sua pasta (o nome padrão dos plugins do Word press não deve entrar em conflito com o nome do seu plug-in) usando letras minúsculas e traços.

2. Agora crie o principal arquivo PHP do seu plugin. Para fazer isso, crie um arquivo PHP dentro da pasta do plugin e atribua a ele o mesmo nome que o nome da pasta. No nosso caso, o nome da pasta é "customstatus", portanto o nome do arquivo será customstatus.php.

3. Configure as informações do seu plugin. Basta copiar e colar o código abaixo no arquivo 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
?*/

Observação: Edite os detalhes, como Nome do autor, Nome do plug-in, Descrição, etc., conforme sua exigência.

4. É isso aí! Você acabou de concluir o número mínimo de etapas necessárias para criar um plug-in do Word Press. Agora você pode ativá-lo na guia Plug-ins no Word Press admin.

Etapa 2: adicione código ao seu plug-in personalizado

1. Agora temos que criar uma função e conectá-la a uma ação específica. Simplesmente copie a função abaixo em seu customstatus.php.

2. Como queremos atualizar o status do pedido com o pagamento completo, adicione uma ação ao gancho 'woocommerce_payment_complete', conforme indicado abaixo no código destacado. // COPIE O CÓDIGO INTEIRO EM customstatus.php FILE.

# <editor-fold defaultstate = "recolhido" desc = "Status padrão como fatura a ser impressa"> function action_woocommerce_payment_complete ($ order_id) {if (! $ order_id) return; $ order = wc_get_order ($ order_id); $ order-> update_status ('wc-print-invoice'); // O status do pedido será atualizado para "Fatura a ser impressa". }; // adiciona a ação add_action ('woocommerce_payment_complete', 'action_woocommerce_payment_complete', 10, 3); # </editor-fold>

3. Apenas salve seu arquivo customstatus.php e pronto. A partir de agora, o status do pedido será atualizado para "Fatura a ser impressa" quando o pagamento for concluído.

NOTA ÚTIL: Se você deseja atualizar o status do pedido quando a página "Obrigado" ou "Sucesso do checkout" é carregada, você pode adicionar a ação no gancho "woocommerce_thankyou". Em customstatus.php, substitua add_action ('woocommerce_payment_complete', 'action_woocommerce_payment_complete', 10, 3); com add_action ('woocommerce_thankyou', 'ggb_custom_change_order_status', 10,3);


Spring Omni Manifest

Como obter o relatório de manifesto das remessas do Spring Omni?

SOLUÇÃO: Levantamos uma consulta para iniciar o Omni, se eles tiverem alguma API para gerar o manifesto das remessas criadas em um determinado dia.

Eles responderam:

“No momento, não fornecemos um manifesto". Então, tentamos gerar manifesto e confirmamos com o garoto da Primavera Omni se eles precisam de um relatório de manifesto para coletar as parcelas? Eles responderam que não há necessidade de gerar um relatório manifesto dos embarques, pois eles simplesmente cobram por apenas o número de rótulos (parcelas) de entrega para eles.Para mais Blogs relacionados, por favor, visite aqui:

Erro Spring Global (Spring Omni): A propriedade phone_number é necessária

Erro Spring Global (Spring Omni): O envio não está sendo registrado

Spring Global (Spring Omni): Conceito de Faturamento

Erro de Spring Global (Spring Omni): recurso não encontrado

Erro Spring Global (Spring Omni): Obtenção de resposta em branco ao buscar o rótulo


Spring Global (Spring Omni): Conceito de Faturamento

Queremos saber que a Spring Global nos cobra as remessas que criamos e registramos OU pacotes que serão entregues a eles para entrega.

Nós levantamos um bilhete na Spring Global:

Quais embarques (parcelas) eles nos cobrarão? Será nos envios que nós criamos e registramos OU pacotes que nós entregamos a eles.

Suponhamos que criamos e registramos remessas 10, mas entregamos apenas pacotes 8 a eles (como não queremos que as remessas 2 sejam entregues). Então, agora, para este caso em particular, eles nos cobrarão pelas remessas 10 ou 8?

Eles responderam:

“A primavera só irá cobrar etiquetas que foram digitalizadas. Então, no seu exemplo, você seria apenas“.

Como podemos ver, nós só seremos cobrados pelas encomendas que entregamos a eles para entrega, independentemente do número de remessas que criamos em seu final.

Por favor, visite aqui para informações relacionadas:

Erro Spring Global (Spring Omni): A propriedade phone_number é necessária

Manifestação Omni da Primavera

Erro Spring Global (Spring Omni): O envio não está sendo registrado

Erro de Spring Global (Spring Omni): recurso não encontrado

Erro Spring Global (Spring Omni): Obtenção de resposta em branco ao buscar o rótulo


Erro de Spring Global (Spring Omni): recurso não encontrado

Ao criar uma remessa usando o Spring Omni, você pode receber um erro na resposta, como mencionado abaixo:

[status] => 404 [código] => 10002 [title] => Recurso não encontrado [detalhe] => Um ou mais recursos da região não foram encontrados. Recebemos este erro ao enviar a seguinte solicitação para criar a remessa:

'{
  "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 perguntamos à Spring Global o motivo desse erro, eles responderam que o problema aqui é "A região que não é reconhecida, pois ainda não tem regiões para os EUA configuradas". Simplesmente omitir a região deve corrigir esse problema. O JSON abaixo deve funcionar:

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

Por favor, visite aqui para informações relacionadas:

Erro Spring Global (Spring Omni): A propriedade phone_number é necessária

Manifestação Omni da Primavera

Erro Spring Global (Spring Omni): O envio não está sendo registrado

Spring Global (Spring Omni): Conceito de Faturamento

Erro Spring Global (Spring Omni): Obtenção de resposta em branco ao buscar o rótulo


Erro Spring Global (Spring Omni): Obtenção de resposta em branco ao buscar o rótulo

Estávamos enfrentando um problema enquanto tentávamos criar uma remessa (Usando / shipments API) e depois disso fomos buscar o rótulo (Usando / shipments / {shipment_id} / files API). O problema foi que obtivemos resposta em branco. Quando verificamos as remessas no back office, parecia a imagem abaixo:

Quando clicamos na remessa (com status = "conceito"), recebemos uma mensagem como "A remessa foi criada, mas ainda não foi registrada na transportadora.“

Quando entendemos o conceito desse novo processo de criação de remessas no Spring Omni, ficamos sabendo que, na Spring Global, precisamos registrar uma remessa em vez de apenas criar a remessa antes de buscar a etiqueta correspondente à remessa. Existem dois cenários possíveis para registrar uma remessa:

  1. Crie o envio e registre-se ao mesmo tempo
  2. Crie a remessa, mas registre-a em um horário específico, ou seja, no futuro

1. Para registrar uma remessa instantaneamente

Ao enviar a solicitação de envio de criação, precisamos enviar o "register_at"valor do parâmetro como 0 ou tempo passado (timestamp do UNIX) nos dados da solicitação. Por favor, consulte o código abaixo para o mesmo:

{
  "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 enviarmos o valor register_at como timestamp atual, poderemos ter algum atraso no registro da remessa, a So Spring Global sugeriu que enviássemos o valor register_at como 0 para que a hora fosse considerada no passado e a remessa fosse registrada assim que que possível. Como o envio será registrado agora, não poderemos excluir / editar o mesmo.

2. Registre uma remessa no futuro

Se quisermos editar / excluir a remessa depois de criar a remessa, só precisaremos registrar a remessa no futuro ou em um horário específico. Para registrar uma remessa no futuro, digamos que após 5 horas de criação da remessa, simplesmente passe o valor "register_at" como data e hora futura de cinco horas com base na hora atual. Agora poderemos editar / excluir a remessa até 5 horas, mas não poderemos buscar o rótulo e a fatura comercial. No momento, a remessa será registrada automaticamente e poderemos buscar o rótulo e a fatura comercial após o tempo determinado.

Então, essas são as duas maneiras de registrar a remessa. Nós podemos usar ambos com base em nossa exigência

Por favor, visite aqui para informações relacionadas:

Erro Spring Global (Spring Omni): A propriedade phone_number é necessária

Manifestação Omni da Primavera

Erro Spring Global (Spring Omni): O envio não está sendo registrado

Spring Global (Spring Omni): Conceito de Faturamento

Erro de Spring Global (Spring Omni): recurso não encontrado


Problema DHL: O local de destino é inválido. Por favor, verifique os dados

Ao reservar o envio na DHL usando a API (no nosso caso, o país de entrega era “Irlanda”), recebemos um erro na resposta da solicitação de capacidade. O erro foi “O local de destino é inválido. Por favor, verifique os dados“.

Solução: �

Para este problema, levantamos um ticket na DHL e, em resposta, eles responderam conforme abaixo:

Ao solicitar recursos, é importante fornecer dados de endereço completos e de qualidade. É necessário determinar informações e recursos de roteamento precisos para a origem e o destino. O seguinte pode ser o motivo do erro:

  1. Pode ser possível que haja mais de uma cidade com o mesmo nome em diferentes subúrbios. Portanto, para obter uma resposta bem-sucedida, precisamos adicionar especialmente os subúrbios no endereço de destino, para o país de entrega “Irlanda”.
  2. Para os países de destino, que não possuem códigos postais, o nome da cidade deve ser escrito com precisão. Por exemplo, não existe nenhuma cidade chamada NORTH ROAD no IE, a cidade real é chamada M50 NORTH ROAD.

A partir desta resposta, não ficamos claros sobre a validação do endereço significa como sabemos se o endereço está correto ou não ou o nome da cidade está correto ou não. Por exemplo, se estamos enviando o nome da cidade como “Co. Dublin” na solicitação de criação de envio, recebemos um erro de localização inválida. Por isso, geramos um ticket novamente para saber como podemos validar o endereço e, em resposta, a DHL sugeriu uma ferramenta chamada DHL Capability Tool (https://dct.dhl.com/). Basta digitar o endereço do remetente e do destino no formulário e clicar no botão de pesquisa, conforme mostrado na captura de tela abaixo:

Esta ferramenta dará o resultado se o endereço é válido ou não. Portanto, se você estiver recebendo algum erro em relação à localização, poderá validar o endereço usando esta ferramenta de capacidade.

Password Protection with?htaccess

Introdução

É sempre uma boa ideia adicionar proteção por senha a qualquer uma das pastas / páginas da Web do seu site se você quiser restringir o acesso a elas. O método para aplicar o mesmo é mais importante. Podemos usar o PHP para autorizar as informações em cada página, mas isso não protege suas imagens ou qualquer outra mídia, não é? Então, podemos usar outro método conhecido como proteção de senha do htaccess?or autenticação htaccess. É confiável e muito mais fácil.

Objetivo

Este blog ajuda você a saber como restringir o acesso ao site de usuários não autorizados.

Por favor, siga os passos abaixo:

Passo 1. Usar proteção de senha do htaccess precisamos criar dois arquivos no diretório em que você deseja restringir o acesso: –

1) .htaccess
2) arquivo .htpasswd

Passo 2. Adicione o seguinte código no arquivo .htaccess que você criou na etapa 1.

O código .htaccess

AuthType Basic AuthName "Sem acesso" AuthUserFile C: /wamp64/www/test_project/self_stitch/.htpasswd requer usuário válido

Observação: Você pode substituir "C: / wamp64 / www / test_project /" com sua própria estrutura de diretórios. O código acima (diretivas) é descrito abaixo:

Eu.) AuthType Da diretiva AuthType, você pode selecionar o método usado para autenticar o usuário.

ii.) AuthName Substituir "Sem acesso"para qualquer nome de acordo com sua exigência. Esse nome será exibido na caixa de alerta, quando o usuário tentar abrir uma página protegida por htaccess.AuthName?directive sets the?domain?to be used in the authentication.

Once a client has passed the authentication in the?”Sem acesso"zona, então não há necessidade de digitar a senha para acessar qualquer outro arquivo na mesma zona no mesmo servidor. Portanto, para impedir que um usuário digite a senha novamente e novamente, permitindo que várias áreas restritas compartilhem o mesmo domínio.

iii.) AuthUserFile

  • Você precisa adicionar seu caminho .htpasswd no lugar de "C: /wamp64/www/test_project/self_stitch/.htpasswd".
  • O "AuthUserFile"valor é sempre específico para sua configuração de host.
  • Se você não sabe qual deve ser o valor, faça um
  • Para isso você só precisa adicionar a linha "<? Php phpinfo ();?>" No arquivo phpinfo.php. Você pode encontrar o arquivo phpinfo.php na sua pasta raiz (www para localhost) e, em seguida, executar o arquivo phpinfo.php no navegador. Por exemplo, no localhost, execute localhost / phpinfo.php

NOTA:

1.Para proteger com senha mais de um arquivo na mesma pasta, apenas crie mais blocos <Files> </ Files> dentro do mesmo arquivo .htaccess – por exemplo:

AuthUserFile /full/path/to/.htpasswd AuthType Basic AuthName "Minha página secreta" <Arquivos "mypage.html"> Exigir usuário válido </ Files> <Files "myotherpage.html"> Requerer usuário válido </ Files>

2. Para permitir que apenas os tipos específicos de arquivos sejam acessados ​​pelos usuários, você precisa adicionar o seguinte código:

AuthUserFile /full/path/to/.htpasswd AuthType Basic AuthName "Minha página secreta" # negar * tudo * <FilesMatch>. * "> Pedido Permitir, Negar Negar de todos os </ FilesMatch> # Permitir apenas * determinados * arquivos necessários: <FilesMatch ". * \. (Php | html | css | js | JS | CSS) $"> Pedido Permitir, Negar Permitir de todos os </ FilesMatch>

Aqui, primeiro estamos restringindo o acesso a tudo usando <FilesMatch ". *"> E depois disso estamos permitindo que apenas certos arquivos (php, html, css, js) sejam acessados ​​usando <FilesMatch ". * \. (Php | html | css | js | JS | CSS) $ "> Nosso exemplo não permite acesso a outros arquivos, por exemplo. .jpg, .png, etc. Você também pode permitir o acesso de um endereço IP específico usando "permitir a partir de 12.34.56.78" ao invés de usar "permitir que a partir de todos“.

3. Para adicionar a senha do htaccess apenas para os tipos específicos de arquivos, você precisa adicionar o seguinte código:

AuthType Basic AuthName "área restrita" AuthUserFile C: /wamp64/www/test_project/self_stitch/.htpasswd # mas agora permite apenas * determinados * arquivos necessários: <FilesMatch ". * \. (Txt) $"> require valid-user < / FilesMatch>

Usando o código acima, todos os arquivos serão acessados ​​sem uma senha, mas os arquivos com extensão .txt precisarão de nome de usuário e senha para serem acessados.

4. Se você precisar aplicar a senha de htaccess para todos os arquivos, exceto um que adicione o seguinte código:

AuthType Basic AuthName "área restrita" AuthUserFile C: /wamp64/www/test_project/self_stitch/.htpasswd <FilesMatch ". *"> Exigir usuário válido </ FilesMatch> # mas agora permitir apenas * determinados * arquivos necessários: <FilesMatch " . * \. (txt) $ "> Exigir tudo concedido </ FilesMatch>

No exemplo acima, exceto arquivos .txt, todos os outros arquivos precisarão do nome de usuário e senha a serem acessados.

iv.) requerer

A linha "exigem-usuário válido"significa que qualquer usuário especificado em seu
Passo 3. Adicione o nome de usuário e a senha no arquivo .htpasswd conforme descrito abaixo:

O código .htpasswd

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

Eu.) o

ii.) As senhas são criptografadas usando o MD5 para fins de segurança.

iii) Como você pode ver acima, somente o usuário 1 é permitido, ou seja, john com a senha: Senha real: egypt4721 Senha criptografada: $ apr1 $ DObQIej5 $ 0ZmEaLN42GEz / XJEiJXh9. (Criptografado usando MD5).

iv.) Para gerar o arquivo .htpasswd use o link abaixo:

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

Depois de criar o arquivo .htaccess e .htpasswd no diretório que você deseja proteger, um alerta será exibido quando você abrir o seu site. Por favor, consulte a imagem abaixo:

Clique aqui para baixar um projeto de amostra com .htaccess protegido por senha.