Como hago para recibir (correo_o_telefono y contraseña en mi base de datos. Aqui mi codigo

Páginas: (1/1)

GuerrerOdeDios:

Código
--
<?php
--
session_start();
--
 
--
$user = "root";
--
$pass = "";
--
$host = "localhost";
--
$database = "dbformulario";
--
 
--
$connection = mysqli_connect($host, $user, $pass, $database);
--
 
--
if (!$connection) {
--
   die("Error de conexión: " . mysqli_connect_error());
--
}
--
 
--
// Verificar si se enviaron datos mediante el método POST
--
if ($_SERVER["REQUEST_METHOD"] == "POST") {
--
   // Verificar si se recibieron los datos del formulario
--
   if (isset($_POST["correo_o_telefono"], $_POST["contraseña"])) {
--
       $correo_o_telefono = $_POST["correo_o_telefono"];
--
       $contraseña = $_POST["contraseña"];
--
 
--
       // Verificar si el correo_o_telefono es un correo electrónico o un número de teléfono
--
       if (filter_var($correo_o_telefono, FILTER_VALIDATE_EMAIL)) {
--
           $where_clause = "correo=?";
--
       } else {
--
           $where_clause = "telefono=?";
--
       }
--
 
--
       // Consulta preparada
--
       $consulta = "SELECT * FROM tabla_form WHERE $where_clause";
--
       $stmt = mysqli_prepare($connection, $consulta);
--
       mysqli_stmt_bind_param($stmt, 's', $correo_o_telefono);
--
       mysqli_stmt_execute($stmt);
--
       $resultado = mysqli_stmt_get_result($stmt);
--
 
--
       if (mysqli_num_rows($resultado) == 1) {
--
           $fila = mysqli_fetch_assoc($resultado);
--
           // Verificar la contraseña utilizando password_verify
--
           if (password_verify($contraseña, $fila['contraseña'])) {
--
               $_SESSION['loggedin'] = true;
--
               $_SESSION['nombre_completo'] = $fila['nombre_completo'];
--
               // Otros datos que quieras guardar en la sesión
--
 
--
               // Redirigir a la página principal
--
               header('Location: welcome.html');
--
               exit;
--
           } else {
--
               echo "Contraseña incorrecta";
--
           }
--
       } else {
--
           echo "Usuario no encontrado";
--
       }
--
 
--
       mysqli_stmt_close($stmt);
--
   } else {
--
       echo "Por favor, complete todos los campos del formulario";
--
   }
--
}
--
 
--
mysqli_close($connection);
--
?>
--
 
--


vicram10:

Como sería la pregunta?, podes explicar un poco mas?

Parado_larga_duracion_ESP:

Vaya. ChatGPT me ha dado un código muy parecido.

Código
--
<?php
--
session_start();
--
 
--
// Establecer conexión PDO con MySQL
--
$dsn = 'mysql:host=localhost;dbname=nombre_de_tu_base_de_datos';
--
$usuario_bd = 'tu_usuario';
--
$contrasena_bd = 'tu_contrasena';
--
 
--
try {
--
   $conexion = new PDO($dsn, $usuario_bd, $contrasena_bd);
--
   $conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
--
} catch (PDOException $e) {
--
   die("Error al conectar con la base de datos: " . $e->getMessage());
--
}
--
 
--
// Verificar si se han enviado datos de inicio de sesión
--
if ($_SERVER["REQUEST_METHOD"] == "POST") {
--
   // Obtener los datos enviados
--
   $usuario = $_POST["usuario"];
--
   $contrasena = $_POST["contrasena"];
--
 
--
   // Consulta preparada para buscar el usuario en la base de datos
--
   $consulta = $conexion->prepare("SELECT * FROM usuarios WHERE nombre_usuario = ?");
--
   $consulta->execute([$usuario]);
--
   $usuario_encontrado = $consulta->fetch(PDO::FETCH_ASSOC);
--
 
--
   if ($usuario_encontrado && password_verify($contrasena, $usuario_encontrado['contrasena'])) {
--
       // Inicio de sesión exitoso, redirigir al usuario a la página de inicio
--
       $_SESSION["usuario"] = $usuario;
--
       header("Location: inicio.php");
--
       exit;
--
   } else {
--
       // Credenciales incorrectas, mostrar mensaje de error
--
       echo "Usuario o contraseña incorrectos.";
--
   }
--
}
--
?>
--
 
--
 
--
 
--


Solo cambia que usa la API de PDO. Porque se lo he pedido expresamente.

Pues ya está, ya lo tienes, ¿no?

Danielㅤ:

Hola, los códigos de ChatGPT son códigos preestablecidos, es decir que algún programador los creó y lo introdujo en su gran base de datos.
Por otro lado las contraseñas las tenes que guardar cifradas, nunca en texto plano.


Saludos

Parado_larga_duracion_ESP:

Sí, es cierto, es ilegal no cifrarlos.

Páginas: (1/1)