¿Cómo integrar Google reCAPTCHA con PHP?

 

Hoy en día, todo el mundo quiere deshacerse del spam en su sitio web, ya sean comentarios o mensajes spam o tráfico spam en su sitio. Para proteger su sitio web del spam, una de las mejores y más sencillas formas es utilizar Google reCAPTCHA.

Antiguamente, la gente solía poner algún número o cadena aleatoria en la pantalla y verificarla en el lado del servidor. Pero este método es el método antiguo y también requiere tiempo para muchos usuarios, mientras que el método reCAPTCHA de Google es fácil de usar y requiere menos tiempo, lo que resulta en una mejor experiencia de usuario. Sólo necesitan un solo clic para demostrar que son humanos y no un robot. Google reCAPTCHA es muy fácil de implementar en un script PHP.

Lectura recomendada: ¿Cómo integrar la protección Google ReCaptcha en tu tienda PrestaShop?

En este blog, aprenderá cómo integrar Google reCaptcha con PHP en nuestra guía paso a paso.

Paso 1: para recuperar la clave API reCAPTCHA de Google

Para obtener una clave API para usar reCAPTCHA con PHP, debe registrar su sitio web en: https://www.google.com/recaptcha/admin. Las capturas de pantalla se dan a continuación para su ayuda:


Etiqueta: Utilice una etiqueta de su propia elección, para que sea fácil reconocer el sitio en el futuro. Puede agregar el nombre de su marca o la URL del sitio web en este campo para mejorar la legibilidad del nombre del proyecto.

tipo de reCAPTCHA: Elija cualquier tipo de reCAPTCHA que prefiera para su sitio. Hay dos tipos disponibles actualmente, es decir, reCAPTCHA v3 y reCAPTCHA v2. Hemos usado reCAPTCHA v2 en el proyecto de muestra.

Dominios: Aquí debe ingresar el nombre de su sitio web para el cual implementará la funcionalidad reCAPTCHA. Se aplica a los dominios que introduzcas aquí, y también a sus subdominios. Por ejemplo, un registro para abc.com también registra xyz.abc.com.

Ahora simplemente marque la casilla de verificación de Acepte los Términos de servicio de reCAPTCHA y haga clic en en el botón Enviar.

Ahora tiene la clave del sitio y la clave secreta para su sitio web.

Paso 2: Para implementar Google reCaptcha con PHP, el segundo paso es implementar la funcionalidad reCAPTHA en su sitio:

  • Para agregar reCAPTCHA en PHP, primero debe incluir la biblioteca JavaScript reCAPTCHA en su HTML.
    
    
  • Ahora agregue este código HTML donde desee mostrar el widget reCAPTCHA.
    
    
  • Reemplace site_key con la clave del sitio proporcionada por Google para su sitio web.
  • Ya está hecho, simplemente actualice su página y verá el widget reCAPTCHA en su sitio.

Paso 3: Validar la respuesta del usuario

Ahora, debe validar la respuesta cuando un usuario hace clic en el widget reCAPTCHA. El código PHP para verificar la respuesta del usuario se proporciona a continuación:

éxito) { $succMsg = 'Su solicitud de contacto se ha enviado con éxito.'; } else { $errMsg = 'Falló la verificación del robot, inténtelo de nuevo.'; } } ?>

Agregue su clave secreta real en el código anterior y listo.

Obtener el código de muestra esta página.

Lectura recomendada: Dos módulos efectivos para mantener alejados a los spammers y bots de la tienda PrestaShop

Knowband ofrece el complemento Google ReCaptcha para varias plataformas, incluidas PrestaShop, y OpenCart. El módulo Google ReCaptcha es una poderosa herramienta de seguridad que protege su sitio web contra entradas de spam y al mismo tiempo facilita el acceso a los usuarios reales.

El complemento Google ReCaptcha se puede utilizar para iniciar sesión, registrarse, restablecer contraseñas, formularios de contacto conocidos y otras cosas. Las imágenes se muestran en el complemento Google ReCaptcha como parte de sus procesos de validación estándar para ayudar a identificar humanos.

Este módulo Google reCaptcha ofrece un rendimiento excelente y es extremadamente personalizable. Desde la parte posterior de los módulos Knowband, el comerciante electrónico puede ajustar rápidamente el complemento Google reCaptcha.

Complemento Prestashop Google ReCaptcha

PrestaShop Google reCaptcha de Knowband mejora la seguridad de su tienda integrando Google reCaptcha, previniendo spam y bots automatizados.

Compra ahora

Ultimas palabras:

Implementar Google reCAPTCHA en sitios web es esencial para la seguridad. Ayuda a distinguir a los usuarios reales de los bots, previniendo el spam y los ataques automatizados. Esto mantiene los datos del usuario seguros y garantiza que el sitio web funcione sin problemas. Al bloquear el tráfico dañino, reCAPTCHA mejora la experiencia del usuario, haciendo que las interacciones en línea sean más seguras y confiables.

Lectura recomendada – Mejore la seguridad de su tienda PrestaShop con los mejores módulos PrestaShop de Knowband
Además de esto, Google reCaptcha también es compatible con One Page Checkout de Knowband, lo que lo protege contra el fraude en las transacciones. Es la mejor manera de proteger su tienda contra el fraude en transacciones. Para ver la demostración de administración y la demostración de interfaz del módulo Google reCaptcha, visite nuestro tienda.

¡Evita que los spammers dañen tu negocio!

 

Cómo cambiar el estado de pedido predeterminado en WooCommerce

A veces, al desarrollar un sitio web de comercio electrónico, deberá verificar automáticamente el estado del pago y marcar el estado del pedido como "Terminado""Pendiente"o según su requisito. El estado de un pedido predeterminado se establece en función del pago realizado. Los usuarios front-end pueden verificar el estado de su pedido en la página Historial de la cuenta. En este blog aprenderemos cómo cambiar el estado del pedido predeterminado en Woo Commerce como "Factura a imprimir" paso a paso.

Paso 1: crea un complemento personalizado

Para crear un complemento personalizado en su sitio web, siga los siguientes pasos:

1. Navegue a la carpeta de complementos de Word Press, en nuestro caso es app / plugins. Crear una carpeta como "estado personalizado“.

Nota IMPORTANTE: Déle a su carpeta un nombre único (el nombre de plugins predeterminado de Word Press no debe entrar en conflicto con el nombre de su plugin) usando letras minúsculas y guiones.

2. Ahora cree el archivo PHP principal de su complemento. Para hacerlo, cree un archivo PHP dentro de su carpeta de complementos y asígnele el mismo nombre que el nombre de la carpeta. En nuestro caso, el nombre de la carpeta es "customstatus", por lo que el nombre del archivo será customstatus.php.

3. Configura la información de tu complemento. Simplemente copie y pegue el siguiente código en el archivo customstatus.php.

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

Nota: Edite los detalles como Nombre del autor, Nombre del complemento, Descripción, etc. según sus requisitos.

4. ¡Eso es! Acaba de completar la cantidad mínima de pasos necesarios para crear un complemento de Word Press. Ahora puede activarlo desde la pestaña Complementos en el administrador de Word Press.

Paso 2: agregue código en su complemento personalizado

1. Ahora tenemos que crear una función y vincularla a una Acción específica. Simplemente copie la siguiente función en su customstatus.php.

2. Como deseamos actualizar el estado del pedido al completar el pago, agregue una acción al enlace 'woocommerce_payment_complete' como se indica a continuación en el código resaltado. // COPIA TODO EL CÓDIGO EN ARCHIVO customstatus.php.

# <editor-fold defaultstate = "collapsed" desc = "Estado predeterminado como factura a imprimir"> function action_woocommerce_payment_complete ($ order_id) {if (! $ order_id) return; $ order = wc_get_order ($ order_id); $ order-> update_status ('wc-print-invoice'); // El estado del pedido se actualizará a "Factura a imprimir". }; // agrega la acción add_action ('woocommerce_payment_complete', 'action_woocommerce_payment_complete', 10, 3); # </editor-fold>

3. Simplemente guarde su archivo customstatus.php y listo. A partir de ahora, el estado del pedido se actualizará a "Factura a imprimir" cuando se complete el pago.

NOTA ÚTIL: Si desea actualizar el estado del pedido cuando se carga la página "Gracias" o "Pago correcto", puede agregar la acción en el gancho "woocommerce_thankyou". En customstatus.php reemplaza add_action ('woocommerce_payment_complete', 'action_woocommerce_payment_complete', 10, 3); con add_action ('woocommerce_thankyou', 'ggb_custom_change_order_status', 10,3);


Spring Omni Manifest

¿Cómo obtener el informe manifiesto de los envíos Spring Omni?

SOLUCIÓN: Planteamos una consulta a Spring Omni, si tienen alguna API para generar el manifiesto de los envíos creados en un día en particular.

Ellos respondieron:

“Actualmente no proporcionamos un manifiesto". Entonces, tratamos de generar el manifiesto en nuestro extremo y confirmamos con el pick up boy de Spring Omni si necesitan el informe del manifiesto para recoger los paquetes. Respondieron que no hay necesidad de generar un informe manifiesto de los envíos, ya que simplemente cobran por el envío. solo el número de etiquetas (parcelas) que se les entregan. Para obtener más blogs relacionados, visite aquí:

Error de Spring Global (Spring Omni): la propiedad phone_number es obligatoria

Error de Spring Global (Spring Omni): el envío no se está registrando

Spring Global (Spring Omni): concepto de facturación

Error global de primavera (Omni de primavera): recurso no encontrado

Error global de Spring (Omni de primavera): obtener una respuesta en blanco al recuperar la etiqueta


Spring Global (Spring Omni): concepto de facturación

Queremos saber que Spring Global nos cobra por los envíos que hemos creado y registrado O paquetes que les entregaremos para la entrega.

Levantamos un boleto en Spring Global:

¿Qué envíos (paquetes) nos cobrarán? ¿Estará en los envíos que hemos creado y registrado O paquetes que les entregaremos?

Supongamos que hemos creado y registrado envíos de 10, pero que solo entregamos paquetes de 8 para que los entreguen (ya que no queremos que se envíen los envíos de 2). Entonces, para este caso en particular, ¿nos cobrarán por los envíos de 10 o 8?

Ellos respondieron:

“Spring solo facturará las etiquetas que hayan sido escaneadas. Así que en tu ejemplo solo serías“.

Como podemos ver, solo se nos cobrarán las parcelas que les entreguemos para que las entreguen, independientemente de la cantidad de envíos que hayamos creado al final.

Por favor visite aquí para información relacionada:

Error de Spring Global (Spring Omni): la propiedad phone_number es obligatoria

Manifiesto de primavera omni

Error de Spring Global (Spring Omni): el envío no se está registrando

Error global de primavera (Omni de primavera): recurso no encontrado

Error global de Spring (Omni de primavera): obtener una respuesta en blanco al recuperar la etiqueta


Error global de primavera (Omni de primavera): recurso no encontrado

Al crear un envío con Spring Omni, puede obtener un error en la respuesta, como se menciona a continuación:

[estado] => 404 [código] => 10002 [recurso] => recurso no encontrado [detalle] => no se pudo encontrar uno o más recursos de la región. Recibimos este error al enviar la siguiente solicitud para crear el envío:

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

Cuando preguntamos a Spring Global por la causa de este error, respondieron que el problema aquí es "La región que no está reconocida porque aún no tienen una región para los EE. UU. Creada". Simplemente omitir la región debería solucionar este problema. El siguiente JSON debería 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 aquí para información relacionada:

Error de Spring Global (Spring Omni): la propiedad phone_number es obligatoria

Manifiesto de primavera omni

Error de Spring Global (Spring Omni): el envío no se está registrando

Spring Global (Spring Omni): concepto de facturación

Error global de Spring (Omni de primavera): obtener una respuesta en blanco al recuperar la etiqueta


Error global de Spring (Omni de primavera): obtener una respuesta en blanco al recuperar la etiqueta

Nos enfrentamos a un problema mientras intentábamos crear un envío (Usando / envíos API) y después de eso íbamos a buscar la etiqueta (Usando / tomatoes / {shipping_id} / files API). El problema fue que obtuvimos una respuesta en blanco. Cuando verificamos los envíos en la oficina administrativa, se veía como en la siguiente captura de pantalla:

Cuando hicimos clic en el envío (con status = "concepto"), recibimos un mensaje como "El envío se creó, pero no se ha registrado con el transportista (todavía).“

Cuando comprendimos el concepto de este nuevo proceso de creación de envíos en Spring Omni, nos damos cuenta de que en Spring Global, debemos registrar un envío en lugar de solo crear el envío antes de buscar la etiqueta correspondiente al envío. Hay dos escenarios posibles para registrar un envío:

  1. Crea el envío y regístrate también al mismo tiempo.
  2. Cree el envío pero regístrelo en un momento específico dado, es decir, en el futuro

1. Para registrar un envío al instante

Al enviar la solicitud de creación de envío, debemos enviar el "registrarse_at"el valor del parámetro como 0 o tiempo pasado (marca de tiempo UNIX) en los datos de solicitud. Consulte el siguiente código para conocer el mismo:

{
  "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 enviamos el valor de register_at como marca de tiempo actual, es posible que obtengamos cierta demora en el registro del envío, por lo que Spring Global nos ha sugerido que enviemos el valor de register_at como 0 para que el tiempo sea considerado en el pasado y el envío se registrará tan pronto como sea posible. como sea posible. Dado que el envío se registrará ahora, no podremos eliminar / editar el mismo.

2. Registrar un envío en tiempo futuro.

Si queremos editar / eliminar el envío después de crear uno, solo tenemos que registrar el envío en el futuro o en un momento determinado. Para registrar un envío en el futuro, digamos que después de 5 horas de creación del envío, simplemente pase el valor "register_at" como marca de tiempo futura de cinco horas sobre la base del tiempo actual. Ahora podremos editar / eliminar el envío hasta las horas 5, pero no podremos recuperar la etiqueta y la factura comercial. A la hora indicada, el envío se registrará automáticamente y podremos recuperar la etiqueta y la factura comercial después de la hora indicada.

Así que estas son las dos formas de registrar el envío. Podemos utilizar ambos sobre la base de nuestro requisito.

Por favor visite aquí para información relacionada:

Error de Spring Global (Spring Omni): la propiedad phone_number es obligatoria

Manifiesto de primavera omni

Error de Spring Global (Spring Omni): el envío no se está registrando

Spring Global (Spring Omni): concepto de facturación

Error global de primavera (Omni de primavera): recurso no encontrado


Problema de DHL: la ubicación de destino no es válida. Por favor verifique los datos

Al reservar el envío en DHL mediante API (en nuestro caso, el país de entrega era “Irlanda”), recibimos un error en respuesta a la solicitud de capacidad. el error fue “La ubicación de destino no es válida. Por favor verifique los datos“.

Solución: �

Para este problema, planteamos un ticket en DHL y, en respuesta, respondieron lo siguiente:

Al solicitar capacidades, es importante proporcionar datos de dirección completos y de calidad. Es necesario determinar la información y las capacidades de enrutamiento precisas para el origen y el destino. La siguiente podría ser la razón del error:

  1. Es posible que haya más de una ciudad con el mismo nombre en diferentes suburbios. Entonces, para obtener una respuesta exitosa, debemos agregar suburbios en la dirección de destino especialmente, para el país de entrega “Irlanda”.
  2. Para los países de destino, que no tienen códigos postales, el nombre de la ciudad debe escribirse correctamente. Por ejemplo, no hay una ciudad llamada NORTH ROAD en IE, la ciudad real se llama M50 NORTH ROAD.

A partir de esta respuesta, no nos quedó claro si la validación de la dirección significa cómo sabemos si la dirección es correcta o no, o si el nombre de la ciudad es correcto o no. Por ejemplo, si enviamos el nombre de la ciudad como “Co. Dublín” en la solicitud de creación de envío, recibimos un error de Ubicación no válida. Por lo tanto, hemos generado un ticket nuevamente para saber cómo podemos validar la dirección y, en respuesta, DHL sugirió una herramienta llamada DHL Capability Tool (https://dct.dhl.com/). Simplemente ingrese el remitente y la dirección de destino en el formulario y haga clic en el botón de búsqueda como se muestra en la captura de pantalla a continuación:

Esta herramienta dará el resultado si la dirección es válida o no. Entonces, si recibe algún error con respecto a la ubicación, puede validar la dirección utilizando esta herramienta de capacidad.

Password Protection with?htaccess

Introducción

Siempre es una buena idea agregar protección con contraseña a cualquiera de las carpetas / páginas web de su sitio web si desea restringir el acceso a ellas. El método para aplicar el mismo es más importante. Podemos usar PHP para autorizar la información en cada página, pero eso no protege sus imágenes o cualquier otro medio, ¿verdad? Así que podemos usar otro método conocido como htaccess contraseña de protección?or autenticación de htaccess. Es fiable y mucho más fácil.

Objetivo

Este blog le ayuda a saber cómo restringir el acceso al sitio web de usuarios no autorizados.

Por favor, siga los pasos mencionados a continuación:

Paso 1. Usar htaccess contraseña de protección Necesitamos crear dos archivos en el directorio en el que desea restringir el acceso:

1) .htaccess
2) archivo .htpasswd

Paso 2. Agregue el siguiente código en el archivo .htaccess que creó en el paso 1.

El código .htaccess

AuthType Basic AuthName "Sin acceso" AuthUserFile C: /wamp64/www/test_project/self_stitch/.htpasswd requiere un usuario válido

Aviso: Puede reemplazar "C: / wamp64 / www / test_project /" con su propia estructura de directorios. El código anterior (directivas) se describe a continuación:

yo.) AuthType Desde la directiva AuthType puede seleccionar el método que se utiliza para autenticar al usuario.

ii.) Nombre de autor reemplazar "Sin acceso"a cualquier nombre según su requerimiento. Este nombre se mostrará en el cuadro de alerta, cuando el usuario intente abrir una 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?”Sin acceso", entonces no es necesario ingresar la contraseña para acceder a ningún otro archivo en la misma zona en el mismo servidor. Por lo tanto, para evitar que un usuario ingrese la contraseña una y otra vez al permitir que varias áreas restringidas compartan el mismo dominio.

iii.) AuthUserFile

  • Debe agregar su ruta de acceso .htpasswd en lugar de "C: /wamp64/www/test_project/self_stitch/.htpasswd".
  • La "Autentro de usuario"el valor es siempre específico para la configuración de su host.
  • Si no sabes cuál debería ser el valor, haz una
  • Para esto solo necesita agregar la línea "<? Php phpinfo ();?>" En el archivo phpinfo.php. Puede encontrar el archivo phpinfo.php en su carpeta raíz (www para localhost) y luego ejecutar el archivo phpinfo.php en el navegador. Por ejemplo, en localhost, ejecute localhost / phpinfo.php

NOTA:

1.Para proteger con contraseña más de un archivo en la misma carpeta, simplemente cree más bloques <Files> </Files> dentro del mismo archivo .htaccess, por ejemplo:

AuthUserFile /full/path/to/.htpasswd AuthType Basic AuthName "My Secret Page" <Files "mypage.html"> Require valid-user </Files> <Files "myotherpage.html"> Require valid-user </Files>

2. Para permitir que los usuarios accedan a los tipos específicos de archivos, debe agregar el siguiente código:

AuthUserFile /full/path/to/.htpasswd AuthType Basic AuthName "My Secret Page" # deny * everything * <FilesMatch ". *"> Orden Permitir, Deny Deny from all </FilesMatch> # Permitiendo solo * ciertos * archivos necesarios: <FilesMatch ". * \. (Php | html | css | js | JS | CSS) $"> Orden Permitir, Denegar Permitir desde todos </FilesMatch>

Aquí, primero estamos restringiendo el acceso a todo usando <FilesMatch ". *"> Y luego permitimos que solo se acceda a ciertos archivos (php, html, css, js) usando <FilesMatch ". * \. (Php | html | css | js | JS | CSS) $ "> Nuestro ejemplo no permite el acceso a otros archivos para, por ejemplo, .jpg, .png, etc. También puede permitir el acceso desde una dirección IP específica usando "permitir a partir de 12.34.56.78" En lugar de usar "Dejar de todas las“.

3. Para agregar la contraseña de htaccess solo para los tipos específicos de archivos, debe agregar el siguiente código:

AuthType Basic AuthName "area restringida" AuthUserFile C: /wamp64/www/test_project/self_stitch/.htpasswd # pero ahora solo permite * ciertos * archivos necesarios: <FilesMatch ". * \. (Txt) $"> requiere usuario válido < / FilesMatch>

Usando el código anterior, se accederá a todos los archivos sin una contraseña, pero los archivos con la extensión .txt necesitarán un nombre de usuario y una contraseña para poder acceder.

4. Si necesita aplicar la contraseña de htaccess para todos los archivos excepto uno, agregue el siguiente código:

AuthType Basic AuthName "area restringida" AuthUserFile C: /wamp64/www/test_project/self_stitch/.htpasswd <FilesMatch ". *"> Require valid-user </FilesMatch> # pero ahora permite solo * ciertos * archivos necesarios: <FilesMatch " . * \. (txt) $ "> Requerir todo lo otorgado </FilesMatch>

En el ejemplo anterior, a excepción de los archivos .txt, todos los demás archivos necesitarán el nombre de usuario y la contraseña para acceder.

iv.) exigir

La línea "Requieren usuario válido"significa que cualquier usuario especificado en su
Paso 3. Agregue el nombre de usuario y la contraseña en el archivo .htpasswd como se describe a continuación:

El código .htpasswd

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

yo.) los

ii.) Las contraseñas se cifran utilizando MD5 por motivos de seguridad.

iii.) Como puede ver arriba, solo se permite el usuario de 1, es decir, john con la contraseña: Contraseña actual: egypt4721 Contraseña cifrada: $ apr1 $ DObQIej5 $ 0ZmEaLN42GEz / XJEiJXhXXXXUMX. (Cifrado usando MD9).

iv.) Para generar el archivo .htpasswd use el enlace que se proporciona a continuación:

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

Después de crear los archivos .htaccess y .htpasswd en el directorio que desea proteger, se mostrará una alerta cuando abra su sitio web. Por favor, consulte la captura de pantalla a continuación:

Presione aquí para descargar un proyecto de muestra con .htaccess protegido por contraseña.