BotBeta
Admin
Sigma
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Usuario popular!
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Suscripción a IA
La funcióntengo 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??
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.podrias hacerlo por logica porfa?La funciónfilesize()
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.
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.podrias hacerlo por logica porfa?
<?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."'");
}
}
}
}
?>
--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:
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.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."'"); } } } } ?>
barras
clientes
clientes
;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.
USE barras;
DROP TABLE IF EXISTS clientes;
CREATE TABLE IF NOT EXISTSEl 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.
usuarios
(id
int NOT NULL AUTO_INCREMENT,usuario
varchar(50) NOT NULL,contrasena
varchar(255) NOT NULL,id
)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.CREATE TABLE IF NOT EXISTSusuarios
(
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??
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;
me sigue saliendo este errorEl 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'.
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,id
)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.me sigue saliendo este error
CREATE TABLE IF NOT EXISTSclientes
(
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'
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;
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.
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.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.
session_start();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.
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: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
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
esta contraseña esta codificada??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);'.
Sí, parece que la cadena "$2y$10$VD4WdPl/DG2YjW1ZfM92aOtdcqFQefEb6h8TVVhnD9sBjv7.2IAcu" es una contraseña codificada.esta contraseña esta codificada??
$2y$10$VD4WdPl/DG2YjW1ZfM92aOtdcqFQefEb6h8TVVhnD9sBjv7.2IAcu
sera que el error lo tengo aca??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);'.
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.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>
este es autenticarEl 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.
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.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>
ini_set('display_errors', 1);
error_reporting(E_ALL);
como puedo saber que contraseña es esta??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.
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?