Tema para preguntas random a Chatgpt 🤖

  • Autor Autor Carlos Arreola
  • Fecha de inicio Fecha de inicio
tengo una duda, esto calculara el peso que se a subido hasta el momento o subira el peso completo del video, no importa que el video no se suba aun??
La función filesize() en PHP devuelve el tamaño del archivo en el momento en que se realiza la medición. En tu código, estás calculando el tamaño del primer fragmento del video cuando se ha subido y guardado por primera vez. Entonces, el valor que se guarda en la base de datos será el tamaño de ese primer fragmento, no el tamaño total del video completo.

Para obtener el tamaño total del video completo, tendrías que realizar alguna lógica adicional para sumar los tamaños de todos los fragmentos a medida que se suben, o bien tendrías que calcular el tamaño una vez que todos los fragmentos hayan sido subidos y el video completo se haya reconstruido. Sin embargo, para esta última opción, el probema sería que no conocerías el tamaño total hasta que la subida esté completa.
 
podrias hacerlo por logica porfa?
 
podrias hacerlo por logica porfa?
Sí, puedes intentar tener un campo adicional en la base de datos como "size_uploaded" para actualizar el tamaño total de los fragmentos subidos. Entonces, con cada subida de fragmento, actualizas este campo, sumando el tamaño del nuevo fragmento.

Aquí te dejo un código adaptado para agregar esta lógica:

PHP:
<?php
session_start();
error_reporting(0);

if(!($conexion = mysqli_connect("localhost", "admin_rooter", "4368119vV")));
mysqli_select_db($conexion,"admin_default");

if(!empty($_FILES)){
    if(is_uploaded_file($_FILES['file']['tmp_name'])){

        $temp_archivo = $_FILES['file']['tmp_name'];

        // Aquí verificamos si ya se guardó un nombre de archivo en la sesión para subidas de archivos fragmentados
        if (!isset($_SESSION['ruta_destino'])) {
            $_SESSION['ruta_destino'] = 'upload/'.mt_rand(1,100).bin2hex(random_bytes(mt_rand(5,15))).'.mp4';
        }

        $ruta_destino = $_SESSION['ruta_destino'];

        // calcular el tamaño del chunk en MB
        $peso = filesize($temp_archivo) / 1024 / 1024;
        $peso = round($peso, 2); // redondea a 2 decimales

        // Si existe el archivo, se añade al final (append)
        if (file_exists($ruta_destino)) {
            file_put_contents($ruta_destino, file_get_contents($temp_archivo), FILE_APPEND);
            // incrementar el tamaño subido
            mysqli_query($conexion,"UPDATE watch SET size_uploaded = size_uploaded + ".$peso);
        } else { // Si no existe, se crea con el primer chunk
            mysqli_query($conexion,"INSERT INTO watch(size_uploaded) VALUES ('".$peso."')"); // usar $peso aquí
            move_uploaded_file($temp_archivo, $ruta_destino);
        }

        // Verificamos si resumableChunkNumber y resumableTotalChunks existen para evitar errores.
        if (isset($_POST['resumableChunkNumber']) && isset($_POST['resumableTotalChunks'])) {
            $esUltimoFragmento = ($_POST['resumableChunkNumber'] == $_POST['resumableTotalChunks']);

            // Borra la variable de sesión si es el último fragmento
            if ($esUltimoFragmento) {
                unset($_SESSION['ruta_destino']);
                $resultada = mysqli_query($conexion, "SELECT MAX(id) AS max_id FROM watch");
                $fiyi = mysqli_fetch_assoc($resultada);
                $ultimo_id = $fiyi['max_id'];
                mysqli_query($conexion,"UPDATE watch SET terminates='yess' WHERE terminates='noo' and id='".$ultimo_id."'");
            }
        }
    }
}
?>
Recuerda que necesitas agregar el campo "size_uploaded" a tu base de datos de antemano. Y como siempre, asegúrate de seguir las mejores prácticas de seguridad al manipular los datos del usuario.
 
--
-- Base de datos: barras
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla clientes
--

DROP TABLE IF EXISTS clientes;



MySQL ha dicho:


#1046 - Base de datos no seleccionada

que significa esto??
 
El error #1046 - Base de datos no seleccionada significa que estás intentando ejecutar una consulta SQL pero no se ha especificado ninguna base de datos sobre la cual realizar dicha consulta.

Al comienzo de tu script SQL, está mencionando la base de datos "barras", pero parece que esta sentencia está comentada. Sin la sentencia USE o alguna otra forma de seleccionar una base de datos, MySQL no sabe a qué base de datos aplicar la consulta.

Podrías resolverlo añadiendo una sentencia USE a tu script SQL para seleccionar la base de datos, de la siguiente manera:

USE barras; DROP TABLE IF EXISTS clientes;

En este caso, asegúrate de que la base de datos "barras" ya exista en tu servidor MySQL.
 
CREATE TABLE IF NOT EXISTS usuarios (
id int NOT NULL AUTO_INCREMENT,
usuario varchar(50) NOT NULL,
contrasena varchar(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;



MySQL ha dicho:


#1273 - Collation desconocida: 'utf8mb4_0900_ai_ci'

y aqui??
 
El error "#1273 - Collation desconocida: 'utf8mb4_0900_ai_ci' " sugiere que tu versión de MySQL puede no soportar la secuencia de caracteres 'utf8mb4_0900_ai_ci'. Esta es la secuencia de caracteres recomendada para el idioma UTF8MB4 en MySQL versión 8.0 o posterior.

Si estás usando una versión de MySQL anterior a la 8.0, puedes cambiar la secuencia de caracteres a 'utf8mb4_general_ci' o 'utf8mb4_unicode_ci', que son soportadas por versiones más antiguas. El código quedaría así:

Insertar CODE, HTML o PHP:
CREATE TABLE IF NOT EXISTS usuarios (
  id int NOT NULL AUTO_INCREMENT,
  usuario varchar(50) NOT NULL,
  contrasena varchar(255) NOT NULL,
  PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

O, si prefieres, puedes actualizar tu versión de MySQL a la 8.0 o superior para poder usar 'utf8mb4_0900_ai_ci'.
 
me sigue saliendo este error

CREATE TABLE IF NOT EXISTS clientes (
id int NOT NULL AUTO_INCREMENT,
nombre varchar(255) NOT NULL,
edad int NOT NULL,
correo varchar(255) NOT NULL,
telefono varchar(15) NOT NULL,
fecha_registro date NOT NULL,
fecha_vencimiento date NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;



MySQL ha dicho:


#1273 - Collation desconocida: 'utf8mb4_0900_ai_ci'
 
Este error está causado porque la versión de MySQL que estás usando no reconoce o no es compatible con el juego de caracteres 'utf8mb4_0900_ai_ci'. Este conjunto en particular se introdujo en MySQL 8.0.

Si estás usando una versión de MySQL anterior a la 8.0, podrías cambiar el conjunto de caracteres a 'utf8mb4_general_ci' o 'utf8mb4_unicode_ci', que son compatibles con versiones anteriores.

Aquí te dejo cómo quedaría tu consulta:

Insertar CODE, HTML o PHP:
CREATE TABLE IF NOT EXISTS clientes (
  id int NOT NULL AUTO_INCREMENT,
  nombre varchar(255) NOT NULL,
  edad int NOT NULL,
  correo varchar(255) NOT NULL,
  telefono varchar(15) NOT NULL,
  fecha_registro date NOT NULL,
  fecha_vencimiento date NOT NULL,
  PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

Si continúas experimentando problemas, te recomendaría revisar la versión exacta de MySQL que estás utilizando para asegurarte de que es compatible con los conjuntos de caracteres que eliges usar.
 


que significa este error??

Warning: Undefined array key "admin" in C:\xampp\htdocs\autenticar.php on line 5

Warning
: Undefined array key "$2y$10$VD4WdPl/DG2YjW1ZfM92aOtdcqFQefEb6h8TVVhnD9sBjv7.2IAcu" in C:\xampp\htdocs\autenticar.php on line 6
Usuario o contraseña incorrectos.
 
Estas advertencias generalmente indican que estás tratando de acceder a una clave en un array que no existe. En este caso, las claves 'admin' y '$2y$10$VD4WdPl/DG2YjW1ZfM92aOtdcqFQefEb6h8TVVhnD9sBjv7.2IAcu' no existen en el array desde el que estás intentando acceder.

Este tipo de problema puede suceder si estás utilizando el método POST o GET para recibir datos y los nombres de las variables no coinciden con las claves que estás tratando de acceder, o si estás tratando de acceder a las claves antes de que el array esté disponible.

Te recomiendo que revises tu código y te asegures que las claves que estás utilizando coinciden con las que son enviadas o que el array esté definitivamente definido en el momento en que intentas acceder a las claves.
 
session_start();
$servidor = "localhost";
$usuarioBD = "root";
$contrasenaBD = "";
$baseDeDatos = "barras";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
$usuario = $_POST['usuario'];
$contrasena = $_POST['contrasena'];

// Conectar a la base de datos (cambia estos valores según tu configuración)


$conn = new mysqli($servidor, $usuarioBD, $contrasenaBD, $baseDeDatos);

if ($conn->connect_error) {
die("Conexión fallida: " . $conn->connect_error);
}

// Consulta para verificar las credenciales
$consulta = "SELECT * FROM usuarios WHERE usuario = '".$usuario."'";
$resultado = $conn->query($consulta);

if ($resultado->num_rows == 1) {
$fila = $resultado->fetch_assoc();
if (password_verify($contrasena, $fila['contrasena'])) {
$_SESSION['usuario'] = $usuario;
header("Location: panel.php");
} else {
echo "Usuario o contraseña incorrectos.";
}
} else {
echo "Usuario o contraseña incorrectos.";
}

$conn->close();
}

tengo algun error aqui? lo logro iniciar sesion
 
El código que has compartido parece estar bastante bien estructurado y no debería haber ningún error obvio. Sin embargo, si no puedes iniciar sesión, hay varias cosas que podrías comprobar:

1. Asegúrate de que el formulario desde el cual envías los datos de inicio de sesión está configurado correctamente y que los nombres de los campos coinciden con 'usuario' y 'contrasena'.

2. Revisa si en la base de datos el campo 'contrasena' realmente guarda las contraseñas encriptadas con la función password_hash de PHP. Solo en ese caso la función password_verify puede verificar la contraseña correctamente.

3. Comprueba los datos en la base de datos y asegúrate de que los credenciales que introduces estén correctos y coincidan con los datos guardados en la base de datos.

4. Podría ser útil habilitar los reportes de errores en PHP para ver posibles errores adicionales que podrían estar ocurriendo. Puedes hacerlo añadiendo las siguientes líneas al comienzo de tu script de PHP:

PHP:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

5. Asegúrate de que tu archivo 'panel.php' existe en la misma ubicación que tu script de inicio de sesión.

Si después de comprobar todo esto sigues teniendo problemas, podría ser útil ver el contenido del array $_POST para asegurarte de que los datos de usuario y contraseña se están enviando correctamente. Puedes hacerlo con una función como 'var_dump($_POST);'.
 
esta contraseña esta codificada??
$2y$10$VD4WdPl/DG2YjW1ZfM92aOtdcqFQefEb6h8TVVhnD9sBjv7.2IAcu
 
esta contraseña esta codificada??
$2y$10$VD4WdPl/DG2YjW1ZfM92aOtdcqFQefEb6h8TVVhnD9sBjv7.2IAcu
Sí, parece que la cadena "$2y$10$VD4WdPl/DG2YjW1ZfM92aOtdcqFQefEb6h8TVVhnD9sBjv7.2IAcu" es una contraseña codificada.

La cadena específica que has proporcionado parece haber sido generada utilizando la función "password_hash" de PHP con el algoritmo PASSWORD_BCRYPT. El prefijo "$2y$" denota que se utilizó el algoritmo BCRYPT y el "10" después del prefijo indica el costo de la función hash, que afecta el tiempo necesario para calcular el hash.
 
sera que el error lo tengo aca??
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>Iniciar Sesión</title>
</head>
<body>
<div class="container">
<h1>Iniciar Sesión</h1>
<form action="autenticar.php" method="POST">
<input type="text" name="usuario" placeholder="Usuario" required />
<input type="password" name="contrasena" placeholder="Contraseña" required />
<input type="submit" value="iniciar sesion" />
</form>
</div>
</body>
</html>
 
El código HTML que has compartido parece estar correcto y bien formateado. Las entradas 'usuario' y 'contrasena' en el formulario hacen match con los índices que estás usando para acceder a los datos en tu script de PHP.

Si estás experimentando problemas de inicio de sesión, es más probable que estén relacionados con cómo se manejan los datos una vez que se envían al servidor, no con este formulario HTML.

Te recomendaría comprobar el script "autenticar.php" y asegurarte de que las contraseñas se están manejando correctamente, como se mencionó en respuestas anteriores.
 
este es autenticar

<?php
session_start();
$servidor = "localhost";
$usuarioBD = "root";
$contrasenaBD = "";
$baseDeDatos = "barras";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
$usuario = $_POST['usuario'];
$contrasena = $_POST['contrasena'];

// Conectar a la base de datos (cambia estos valores según tu configuración)


$conn = new mysqli($servidor, $usuarioBD, $contrasenaBD, $baseDeDatos);

if ($conn->connect_error) {
die("Conexión fallida: " . $conn->connect_error);
}

// Consulta para verificar las credenciales
$consulta = "SELECT * FROM usuarios WHERE usuario = '".$usuario."'";
$resultado = $conn->query($consulta);

if ($resultado->num_rows == 1) {
$fila = $resultado->fetch_assoc();
if (password_verify($contrasena, $fila['contrasena'])) {
$_SESSION['usuario'] = $usuario;
header("Location: panel.php");
} else {
echo "Usuario o contraseña incorrectos.";
}
} else {
echo "Usuario o contraseña incorrectos.";
}

$conn->close();
}
?>

este es index

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>Iniciar Sesión</title>
</head>
<body>
<div class="container">
<h1>Iniciar Sesión</h1>
<form action="autenticar.php" method="POST">
<input type="text" name="usuario" placeholder="Usuario" required />
<input type="password" name="contrasena" placeholder="Contraseña" required />
<input type="submit" value="iniciar sesion" />
</form>
</div>
</body>
</html>
 
Los códigos que has compartido para 'autenticar.php' e 'index.html' parecen correctos. El formulario HTML envía correctamente los datos al servidor mediante el método POST y el código PHP recibe estos datos, realiza la conexión a la base de datos y verifica las credenciales del usuario.

Si aún experimentas problemas para iniciar sesión, podrías revisar los siguientes puntos:

1. Asegúrate de que la base de datos 'barras' y la tabla 'usuarios' existen y tienen los datos correctos en tu servidor de MySQL.

2. Verifica que las contraseñas en la base de datos estén codificadas usando la función password_hash() de PHP. La función password_verify() únicamente puede verificar contraseñas codificadas de esta forma.

3. Asegúrate de que el archivo 'panel.php' exista y esté en la misma ubicación que 'autenticar.php'.

4. Comprueba que el servidor de MySQL esté corriendo.

5. Recuerda borrar el caché de tu navegador o usar una ventana de navegación privada para evitar problemas de caché.

Si aun así no puedes iniciar sesión, podría ser útil habilitar los errores y advertencias en PHP añadiendo estas líneas al inicio del archivo 'autenticar.php':

PHP:
ini_set('display_errors', 1);
error_reporting(E_ALL);
Esto te mostrará un mensaje más detallado sobre cualquier error que pueda estar ocurriendo.
 
como puedo saber que contraseña es esta??