Cover Image

Cómo proteger una página web con contraseña usando PHP (proyecto simple)

Abril 7, 2025 Tiempo de lectura: 9 minutos

¿Quieres que solo personas autorizadas puedan acceder a tu página?
Con PHP puedes crear un sistema sencillo de protección por contraseña que bloquee el contenido a quien no tenga la clave correcta. No necesitas bases de datos ni nada avanzado: solo HTML, PHP y lógica básica.

Hoy te muestro cómo crear un mini proyecto de sitio protegido por contraseña en menos de 10 minutos.


🧱 ¿Qué vas a construir?

  • Una página de login donde se ingresa la contraseña.

  • Una verificación sencilla con PHP.

  • Una página protegida que solo se muestra si ingresaste bien la clave.


🗂️ Estructura del proyecto

Crea una carpeta con estos archivos:

/protegido/ ├── login.php ├── clave.php ├── logout.php

✍️ Paso 1: login.php (el formulario)

<?php session_start(); if (isset($_SESSION['autenticado']) && $_SESSION['autenticado'] === true) { header("Location: clave.php"); exit; } ?> <!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <title>Acceso protegido</title> </head> <body> <h2>🔐 Ingreso protegido</h2> <form method="post" action="login.php"> <input type="password" name="clave" placeholder="Ingresa la contraseña" required> <button type="submit">Entrar</button> </form> <?php if ($_SERVER["REQUEST_METHOD"] === "POST") { $claveIngresada = $_POST["clave"]; $claveCorrecta = "mipassword123"; if ($claveIngresada === $claveCorrecta) { $_SESSION['autenticado'] = true; header("Location: clave.php"); exit; } else { echo "<p style='color:red;'>❌ Contraseña incorrecta</p>"; } } ?> </body> </html>

🛡️ Paso 2: clave.php (la página protegida)

<?php session_start(); if (!isset($_SESSION['autenticado']) || $_SESSION['autenticado'] !== true) { header("Location: login.php"); exit; } ?> <!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <title>Zona segura</title> </head> <body> <h1>🎉 Bienvenido a la página protegida</h1> <p>Solo quienes tienen la clave pueden ver esto.</p> <a href="logout.php">Cerrar sesión</a> </body> </html>

🔓 Paso 3: logout.php (para cerrar sesión)

<?php session_start(); session_destroy(); header("Location: login.php"); exit; ?>

Con esto, ya tienes un proyecto funcional de página protegida por contraseña. Puedes usarlo para secciones privadas, acceso exclusivo, proyectos en desarrollo o simplemente por diversión.


Cover Image

Cómo crear un generador de contraseñas seguras usando hash en PHP

Abril 2, 2025 Tiempo de lectura: 13 minutos

¿Quieres ofrecer a tus usuarios contraseñas únicas y seguras? 💡
En este artículo te muestro cómo crear un pequeño generador de contraseñas en PHP utilizando funciones de hash como md5, sha1, y otras herramientas nativas que puedes combinar para producir contraseñas fuertes y difíciles de adivinar.


🧠 ¿Qué es una función hash?

Una función hash convierte cualquier dato (como texto o número) en una cadena alfanumérica fija. Por ejemplo:

echo md5("hola"); // salida: 4d186321c1a7f0f354b297e8914ab240

Los hashes son útiles para ofuscar contraseñas o generar valores únicos como identificadores.


⚙️ Ejemplo 1: Generar una contraseña simple con md5

<?php $base = uniqid(mt_rand(), true); // Genera una base única y aleatoria $hash = md5($base); // Limita la longitud si quieres (ej: 12 caracteres) $password = substr($hash, 0, 12); echo "Tu contraseña segura es: $password"; ?>

🧪 Ejemplo 2: Usar sha1 o hash('sha256') para más seguridad

<?php $base = uniqid(mt_rand(), true); $hash = hash('sha256', $base); // Más largo y fuerte que md5 $password = substr($hash, 0, 16); echo "Contraseña segura: $password"; ?>

🎛️ Ejemplo 3: Personalizar con letras, números y símbolos

Para mayor control, puedes generar contraseñas con una lista de caracteres personalizados:

<?php function generarPassword($longitud = 12) { $caracteres = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%&*?'; $password = ''; $max = strlen($caracteres) - 1; for ($i = 0; $i < $longitud; $i++) { $password .= $caracteres[random_int(0, $max)]; } return $password; } echo "Contraseña: " . generarPassword(); ?>

Este método no usa hash directamente, pero genera contraseñas muy fuertes y personalizables.


📌 ¿Qué opción es mejor?

  • Usa hash() si quieres un valor basado en una semilla (ideal para tokens, por ejemplo).

  • Usa random_int() y una lista de caracteres si buscas una contraseña más “humana” y personalizable.


Cover Image

Cómo enviar correos electrónicos con PHP (fácil y paso a paso)

Marzo 27, 2025 Tiempo de lectura: 13 minutos

¿Quieres que tu sitio web pueda enviar correos automáticos? ✉️
Con PHP es totalmente posible y relativamente fácil. Ya sea para enviar un mensaje desde un formulario de contacto o una notificación a un usuario, este lenguaje te permite hacerlo sin usar servicios externos (aunque también se puede).

Hoy te muestro cómo enviar correos en PHP con funciones nativas y también cómo hacerlo de forma más profesional con PHPMailer.


🛠️ Opción 1: Enviar correo con la función mail()

Esta función viene incluida en PHP y es muy simple de usar. Aquí va un ejemplo básico:

<?php $para = "ejemplo@correo.com"; $asunto = "Saludos desde mi sitio web"; $mensaje = "¡Hola! Este correo fue enviado desde un script PHP."; $encabezados = "From: tu_nombre@tudominio.com"; if (mail($para, $asunto, $mensaje, $encabezados)) { echo "✅ Correo enviado correctamente."; } else { echo "❌ Error al enviar el correo."; } ?>

📌 Importante: esta función solo funciona si tu servidor tiene configurado un servicio de correo (como sendmail o postfix). En muchos hostings compartidos sí funciona, pero en localhost no.


💼 Opción 2: Usar PHPMailer (más recomendado)

PHPMailer es una biblioteca profesional para enviar correos en PHP. Te permite usar SMTP (como Gmail) y manejar HTML, archivos adjuntos y más.

🔽 Paso 1: Instalar PHPMailer con Composer

composer require phpmailer/phpmailer

📤 Paso 2: Script básico con Gmail

<?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require 'vendor/autoload.php'; $mail = new PHPMailer(true); try { // Configuración del servidor $mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->SMTPAuth = true; $mail->Username = 'tucorreo@gmail.com'; $mail->Password = 'tu_contraseña_o_token_app'; $mail->SMTPSecure = 'tls'; $mail->Port = 587; // Remitente y destinatario $mail->setFrom('tucorreo@gmail.com', 'Tu Nombre'); $mail->addAddress('destino@correo.com'); // Contenido $mail->isHTML(true); $mail->Subject = 'Correo de prueba con PHPMailer'; $mail->Body = 'Este es un <b>correo de prueba</b> enviado con PHPMailer en PHP.'; $mail->send(); echo '✅ El mensaje fue enviado exitosamente.'; } catch (Exception $e) { echo "❌ El mensaje no pudo enviarse. Error: {$mail->ErrorInfo}"; } ?>

📌 Consejo de seguridad: Usa un token de aplicación en lugar de tu contraseña real al usar Gmail. También asegúrate de que tu cuenta permita apps externas.


Cover Image

Cómo integrar el botón de donaciones de PayPal en tu sitio web usando PHP

Marzo 12, 2025 Tiempo de lectura: 9 minutos

¿Quieres permitir que los visitantes de tu sitio web realicen donaciones de forma sencilla? PayPal ofrece una solución práctica y segura para aceptar donativos en línea. En este artículo, te mostraré cómo integrar el botón de donaciones de PayPal en tu sitio web utilizando PHP.


🧰 Requisitos previos

Antes de comenzar, asegúrate de tener lo siguiente:

  • Una cuenta de PayPal Business. Si aún no la tienes, puedes crear una en paypal.com.

  • Acceso al código fuente de tu sitio web.

  • Conocimientos básicos de PHP y HTML.


🔧 Paso 1: Crear el botón de donación en PayPal

  1. Inicia sesión en tu cuenta de PayPal.

  2. Accede a la sección de herramientas para comerciantes.

  3. Selecciona "Crear un botón" y elige la opción "Donar".

  4. Personaliza el botón:

    • Nombre de la organización o causa.

    • ID de la organización (opcional).

    • Moneda y monto predeterminado (puedes permitir que el donante ingrese el monto).

    • Opciones adicionales como permitir donaciones recurrentes.

  5. Una vez configurado, haz clic en "Crear botón".

  6. Copia el código HTML proporcionado.


🖥️ Paso 2: Integrar el botón en tu sitio web

Pega el código HTML del botón en el archivo PHP de tu sitio web donde desees que aparezca el botón de donación. Por ejemplo:

<!DOCTYPE html> <html> <head> <title>Donaciones</title> </head> <body> <h1>Apoya nuestra causa</h1> <!-- Botón de donación de PayPal --> <form action="https://www.paypal.com/donate" method="post" target="_top"> <input type="hidden" name="hosted_button_id" value="TU_ID_DE_BOTON"> <input type="image" src="https://www.paypalobjects.com/es_ES/i/btn/btn_donateCC_LG.gif" name="submit" alt="Donar con PayPal"> <img alt="" src="https://www.paypal.com/es_ES/i/scr/pixel.gif" width="1" height="1"> </form> </body> </html>

Reemplaza "TU_ID_DE_BOTON" con el ID real de tu botón proporcionado por PayPal.


🔄 Paso 3: Probar el botón de donación

Para asegurarte de que todo funciona correctamente, realiza una prueba:

  1. Accede a tu sitio web y haz clic en el botón de donación.

  2. Serás redirigido a la página de PayPal para completar la donación.

  3. Si todo está configurado correctamente, podrás realizar una donación de prueba.


🧪 Consejos adicionales

  • Donaciones recurrentes: Si deseas permitir donaciones mensuales automáticas, asegúrate de habilitar esta opción al crear el botón en PayPal.

  • Personalización: Puedes personalizar el aspecto del botón utilizando tus propias imágenes o estilos CSS.

  • Seguridad: Asegúrate de que tu sitio web utilice HTTPS para garantizar la seguridad de las transacciones.


Cover Image

Cómo consumir la PokéAPI con PHP y mostrar Pokémon en tu sitio web

Marzo 3, 2025 Tiempo de lectura: 16 minutos

¿Eres fan de Pokémon y estás aprendiendo PHP? ¡Entonces este tutorial es para ti! Vamos a aprender cómo consumir la PokéAPI, una API gratuita y abierta que proporciona información detallada sobre todos los Pokémon, y mostrar algunos datos en tu sitio web utilizando PHP.


🎯 ¿Qué es la PokéAPI?

La PokéAPI es una API RESTful gratuita que ofrece acceso a una amplia base de datos con información sobre los juegos principales de Pokémon. Puedes obtener datos sobre especies, habilidades, tipos, movimientos y mucho más.


🧰 Requisitos previos

Antes de comenzar, asegúrate de tener lo siguiente:

  • Un servidor con PHP instalado (puede ser local con XAMPP, MAMP, WAMP, etc.).

  • Conexión a Internet para realizar las solicitudes a la API.

  • Un editor de texto o IDE para escribir tu código PHP.


🔌 Paso 1: Realizar una solicitud a la PokéAPI

Vamos a utilizar la función file_get_contents de PHP para realizar una solicitud HTTP GET a la PokéAPI y obtener información sobre un Pokémon específico.

<?php // Nombre del Pokémon que queremos consultar $pokemon = 'pikachu'; // URL de la API para obtener información del Pokémon $url = "https://pokeapi.co/api/v2/pokemon/$pokemon"; // Realizar la solicitud GET y decodificar la respuesta JSON $response = file_get_contents($url); $data = json_decode($response, true); // Mostrar algunos datos del Pokémon echo "<h1>" . ucfirst($data['name']) . "</h1>"; echo "<img src='" . $data['sprites']['front_default'] . "' alt='" . $data['name'] . "' />"; echo "<p>Altura: " . $data['height'] . "</p>"; echo "<p>Peso: " . $data['weight'] . "</p>"; // Mostrar los tipos del Pokémon echo "<p>Tipo(s): "; foreach ($data['types'] as $type) { echo $type['type']['name'] . " "; } echo "</p>"; ?>

Este código obtiene información sobre Pikachu y muestra su nombre, imagen, altura, peso y tipos.


🔄 Paso 2: Hacerlo dinámico con un formulario

Para permitir que los usuarios busquen cualquier Pokémon, podemos agregar un formulario HTML que envíe el nombre del Pokémon al script PHP.

<form method="GET" action=""> <label for="pokemon">Nombre del Pokémon:</label> <input type="text" id="pokemon" name="pokemon" required> <button type="submit">Buscar</button> </form>

Y modificar el código PHP para utilizar el valor ingresado por el usuario:

<?php if (isset($_GET['pokemon'])) { $pokemon = strtolower($_GET['pokemon']); $url = "https://pokeapi.co/api/v2/pokemon/$pokemon"; $response = @file_get_contents($url); if ($response === FALSE) { echo "<p>Pokémon no encontrado. Por favor, verifica el nombre e intenta nuevamente.</p>"; } else { $data = json_decode($response, true); echo "<h1>" . ucfirst($data['name']) . "</h1>"; echo "<img src='" . $data['sprites']['front_default'] . "' alt='" . $data['name'] . "' />"; echo "<p>Altura: " . $data['height'] . "</p>"; echo "<p>Peso: " . $data['weight'] . "</p>"; echo "<p>Tipo(s): "; foreach ($data['types'] as $type) { echo $type['type']['name'] . " "; } echo "</p>"; } } ?>

Este código permite que los usuarios ingresen el nombre de un Pokémon y vean su información correspondiente.


🧪 Paso 3: Probar la aplicación

Guarda el código anterior en un archivo .php (por ejemplo, pokedex.php) y colócalo en el directorio raíz de tu servidor web. Luego, accede a http://localhost/pokedex.php en tu navegador, ingresa el nombre de un Pokémon y haz clic en "Buscar" para ver su información.


🧠 Consejos adicionales

  • La PokéAPI es gratuita y no requiere autenticación, pero es importante respetar su política de uso justo para evitar sobrecargar el servicio.

  • Puedes explorar más endpoints de la API para obtener información adicional, como habilidades, movimientos, evoluciones y más.

  • Considera implementar almacenamiento en caché para reducir la cantidad de solicitudes a la API y mejorar el rendimiento de tu aplicación.


¡Y eso es todo! Has creado una sencilla Pokédex utilizando PHP y la PokéAPI. Puedes expandir esta aplicación para mostrar más información, agregar estilos con CSS o incluso utilizar frameworks como Laravel para crear una aplicación más robusta.


Cover Image

Integración de Stripe en tu sitio web con PHP y pruebas con Namso Gen

Marzo 1, 2025 Tiempo de lectura: 14 minutos

¿Estás desarrollando un sitio web y deseas aceptar pagos en línea? Integrar una pasarela de pagos como Stripe es una excelente opción. En este artículo, te guiaré paso a paso para integrar Stripe utilizando PHP y cómo utilizar la aplicación Namso Gen para generar tarjetas de prueba y verificar que todo funcione correctamente.


🧰 Requisitos previos

Antes de comenzar, asegúrate de tener lo siguiente:

  • Una cuenta de Stripe.

  • Un entorno de desarrollo con PHP y Composer instalado.

  • Acceso al código fuente de tu sitio web.

  • La aplicación Namso Gen instalada en tu dispositivo móvil para generar tarjetas de prueba.


🔐 Paso 1: Configura tu cuenta de Stripe

  1. Regístrate o inicia sesión en tu cuenta de Stripe.

  2. Accede al Dashboard de desarrolladores y obtén tus claves de API:

    • Clave pública: pk_test_...

    • Clave secreta: sk_test_...

Estas claves se utilizarán para autenticar las solicitudes desde tu sitio web a los servidores de Stripe.


📦 Paso 2: Instala la biblioteca de Stripe para PHP

Utiliza Composer para instalar la biblioteca oficial de Stripe:

composer require stripe/stripe-php

Esto descargará e instalará la biblioteca necesaria para interactuar con la API de Stripe desde tu aplicación PHP.


📝 Paso 3: Crea el formulario de pago en tu sitio web

Agrega un formulario HTML en tu página web donde los usuarios puedan ingresar los detalles de su tarjeta:

<form action="procesar_pago.php" method="POST"> <script src="https://checkout.stripe.com/checkout.js" class="stripe-button" data-key="pk_test_TU_CLAVE_PUBLICA" data-amount="5000" data-name="Mi Tienda" data-description="Compra de ejemplo" data-currency="usd"> </script> </form>

Reemplaza "pk_test_TU_CLAVE_PUBLICA" con tu clave pública de Stripe. Este formulario utilizará Stripe Checkout para manejar de forma segura la información de la tarjeta.


🖥️ Paso 4: Procesa el pago en el servidor con PHP

Crea un archivo procesar_pago.php que maneje la lógica del servidor:

<?php require 'vendor/autoload.php'; \Stripe\Stripe::setApiKey('sk_test_TU_CLAVE_SECRETA'); $token = $_POST['stripeToken']; try { $charge = \Stripe\Charge::create([ 'amount' => 5000, // Monto en centavos 'currency' => 'usd', 'description' => 'Compra de ejemplo', 'source' => $token, ]); echo '✅ Pago exitoso'; } catch (\Stripe\Exception\CardException $e) { echo '❌ Error en el pago: ' . $e->getMessage(); } ?>

Asegúrate de reemplazar 'sk_test_TU_CLAVE_SECRETA' con tu clave secreta de Stripe.


🧪 Paso 5: Prueba la integración con tarjetas de prueba

Usando tarjetas de prueba de Stripe

Stripe proporciona números de tarjetas de prueba que puedes utilizar para simular transacciones exitosas y fallidas. Por ejemplo:

  • Visa: 4242 4242 4242 4242

  • MasterCard: 5555 5555 5555 4444

Utiliza cualquier fecha de vencimiento futura y cualquier código CVC de tres dígitos. Puedes encontrar más tarjetas de prueba en la documentación oficial de Stripe.

Generando tarjetas de prueba con Namso Gen

La aplicación Namso Gen te permite generar tarjetas de crédito ficticias para pruebas. Sigue estos pasos:

  1. Abre la aplicación Namso Gen en tu dispositivo móvil.

  2. Ingresa un BIN (Bank Identification Number) válido. Por ejemplo, para Visa puedes usar 424242.

  3. Configura los parámetros adicionales como la fecha de vencimiento y el CVV.

  4. Genera las tarjetas y utiliza los datos en tu formulario de prueba.

Nota: Las tarjetas generadas por Namso Gen son solo para fines de prueba y no funcionan para transacciones reales.


🌟 Beneficios de la versión premium de Namso Gen

La versión premium de Namso Gen ofrece características adicionales, como la generación de tarjetas más personalizadas y la posibilidad de realizar pruebas más avanzadas. Esto puede ser útil para simular escenarios específicos y asegurarte de que tu integración con Stripe maneje correctamente diversas situaciones.

Integrar Stripe en tu sitio web utilizando PHP es un proceso sencillo que te permite aceptar pagos de forma segura. Utilizando herramientas como Namso Gen, puedes realizar pruebas exhaustivas sin preocuparte por procesar pagos reales. Asegúrate de seguir las mejores prácticas de seguridad y de cumplir con las regulaciones aplicables al manejar información de pago.