• Welcome to the Chevereto user community!

    Here users from all over the world gather around to learn the latest about Chevereto and contribute with ideas to improve the software.

    Please keep in mind:

    • 😌 This community is user driven. Be polite with other users.
    • 👉 Is required to purchase a Chevereto license to participate in this community (doesn't apply to Pre-sales).
    • 💸 Purchase a Pro Subscription to get access to active software support and faster ticket response times.

Limitar los uploads paralelos

Rodolfo

⭐ Chevereto Godlike
Chevereto Staff
Administrator
Se ha observado que cualquier persona puede subir paralelamente (abriendo otra ventana/pestaña) archivos al mismo tiempo. Lo cual es util si no se cae en el abuso.

Es necesario establecer alguna cookie, sesion o algo que permita que puedan subir solo un numero determinado de archivos de manera paralela.
 
con algún session sería bien facil.

a ver que sale:

<?

session_start();

$_SESSION['subidas']++; //esto iría al comenzar una subida de fotos

if($_SESSION['subidas']>3) die();

?>

está bien?

ahora, lo ideal no sería aplicarlo tan asi pero es una idea nomash.

ahh, al uploadear algo (al terminar) habría que poner algún $_SESSION['subidas']
atte.

@elJOjo!
 
=/ Le metí mano y no me fue bien. Alguien que se aplique con sessions que lo haga porfa.
 
hola, mira buscando llegue a algo similar a lo que dice eljojo, tampoco me aplico mucho pero creo que deberia ser algo asi

Primero obvio, antes de cualquier cosa colocar en el home de chevereto, y solo en el home colocar algo como esto:

Code:
session_start();  //inicia la session

if (!isset($_SESSION["ups"])){ 

       $_SESSION["ups"] = 1;  //si no existe la session la inicializa en 1

}else{ 

       $_SESSION["ups"]++;  //si existe la aumenta en uno

}

Luego colocar al inicio de la parte del engine que comienza la subida colocar algo asi:

Code:
session_start();

if($_SESSION["ups"] > 3){

    //aqui si la la variable ups es mayor a 3, que detenga el proceso de upload y se muestre algun error, luego que destruya la session.

} else {

    session_destroy(); //aqui si la variable ups es menor a 3 se destruye la session, o tal vez podria ser mejor colocar la funcion al final del codigo que procesa la imagen.

}

Mira pensando tambien se me ocurrio esto:

Colocar al inicio del codigo de proceso del upload:

Code:
if(!isset($_COOKIE["chevereto"])){

    setcookie("chevereto", "subida", time()+30);

} else {

    //Mostrar mensaje de error, ya que aun existe la cookie

}

MI idea es que verifique si existe una cookie, si esta no existe la crea, con una duracion que en este caso puse 30 segundos sera mas o menos no se, pero la idea es que la cookie este activa durante un rato mientras se sube la imagen, por lo tanto si alguien intenta subir varias paralelamente aparecera un error pues la cookie aun no se destruye, lo que se podria agregar alguna forma o advertencia en caso de que el error se por parte del navegador y la cookie no se haya borrado.

Eso se me ocurre no se si sea tan eficaz pero puede ser un comienzo, lo otro felicitaciones para rodolfo porque hasta hace unos dias pense que el desarrollo del script estaba botado pero me alegra saber que no y que va en buen camino.
 
Probaste el código? Yo igual habia hecho algo similar pero sin éxito.
 
Rodolfo said:
Probaste el código? Yo igual habia hecho algo similar pero sin éxito.

Mira Rodolfo el primero que nada los codigos no los habia probado. Pero ahora si los probe, el primero de las sesiones no me funciono bien pues podia subir una foto y el resto siempre me mandaba el error que puse para detener la carga.
El que se podria decir que me funciono fue el de las cookies y lo puse de siguiente forma en engine.php
Code:
if ($modo==3) {
//prueba de cookie
if(!isset($_COOKIE["chevereto"])){
    setcookie("chevereto", "subida", time()+30);
} else {
    die("espere 30 segundos entre subida");
}

.
.
.

Y lo que proboca es lo que ya ahbia explicado, osea suboo una imagen pero no puedo subir una inmediatamente, hay que esperar un lapso de 30 segundos para volver a subir otra. Lo que habria que hacer es hacer que el mensaje de error sea acorde al theme del script.
Pruebalo ojala sea algo asi lo que deaseas.
Saludos

Edito: lo modifique y ahora muestra un mensaje mas bonito
Code:
//prueba de cookie
if(!isset($_COOKIE["chevereto"])){
    setcookie("chevereto", "subida", time()+30);
} else {
    $time_rest= $_COOKIE["chevereto"] - time();
    if($time_rest < 0){ $time_rest = 0; }
    unset($modo);
    $modo = 1;
    $spit = true;
    $errormsg = "Tienes que esperar ".$time_rest." segundos para el siguiente upload";
    $error = true;
    return false;
}
Lo anterior en la misma parte que la que puse denante, y en la linea 506 aprox lo siguiente
Code:
sale esto:
$titulo = 'Imagen subida con exito'.ESP_TITULO;

Y lo cambio por esto:
if($error){ $titulo = 'Error Fatal: Imagen no subida'.ESP_TITULO;    }
else { $titulo = 'Imagen subida con exito'.ESP_TITULO; }
 
El problema de las cookies es que se pueden mulear fácilmente. No cumpliría el objetivo deseado de evitar que mal intencionadamente suban y suban imágenes al mismo tiempo. Por sesiones hice algo similar a lo de la cookie pero no me funciono, podía subir al mismo tiempo sin dramas. Al parecer la session no se va guardando/accesando mientras el script esta en ejecución.

Podríamos usar cookies mientras pillamos como hacerlo con sessions.

:)
 
engine.php
Linea 212 hacia abajo

Code:
if ($modo==3) {
    session_start();

    $_SESSION['subidas'] = (isset($_SESSION['subidas']) ? $_SESSION['subidas'] + 1 : 1);
    if ($_SESSION['subidas'] > 3) {
        $_SESSION['subidas']--;
        die('cueck');
    }
    flush();
...

Asi con los cueck, instale cheverto en mi localhost y lo probe y en teoria y una prueba de 10 segundos y funcionó :p

Otra cosa, el .htaccess me mando el pedaso de error... comente el cache de imagenes que tienes y me funkó al tokeneizer. o sea mi .htaccess para que funcione el script quedó asi.
Code:
...
# HAGAMOS CACHE (1 SEMANA = 604800) Actual 3 Meses
# <FilesMatch "\.(jpg|gif|png|bmp)$">
# Header set Cache-Control "max-age=7257600, public"
# </FilesMatch>
...

Saludones y hagan las pruebas si funka...
 
ah!! otra cosa... ojo con el .htaccess que subiste en el ultimo release, porque apunta a una url de sym.cl :p
 
Quest said:
ah!! otra cosa... ojo con el .htaccess que subiste en el ultimo release, porque apunta a una url de sym.cl :p

Si, se me fue. Probe ahi el upload por ftp :p
de todos modos sale en el leame.txt que debes editar eso segun tu dominio.

Por lo demas, gracias por lo de las sessions!
Voy a ver que tal funciona aunque segun lo que me cuentas andad todo ok :D
 
Grrr... lo probe y anda cojeando. No limpia la session =(
puedes revisarlo?
 
eso de la sesión y de la cookie son buena idea... pero... que pasa si el usuario abre tres browsers distintos... mozilla, internet explorer... chrome... opera... safari.. etc... ???? ya no sería tanto el limitar la sesión... sino limitar también la IP (no importa que sea dinamica)
 
turbex said:
eso de la sesión y de la cookie son buena idea... pero... que pasa si el usuario abre tres browsers distintos... mozilla, internet explorer... chrome... opera... safari.. etc... ???? ya no sería tanto el limitar la sesión... sino limitar también la IP (no importa que sea dinamica)

Mmm
 
Es muy jodido el asunto, si te pones en el caso de que en una lan lo usan o algo asi. El tema no va por evitar ataques de denegacion de servicio ya que eso va mas por la empresa de hosting (segun yo :D) sino que evitar que personas que usan el servicio sin tomar en cuenta esto lo hacen en pequeña escala.
 
Back
Top