Foros del Web » Programando para Internet » PHP »

Limitar numero de imagenes

Estas en el tema de Limitar numero de imagenes en el foro de PHP en Foros del Web. Hola tengo un problema para limitar el numero de imagenes que pueda subir un usuario, el codigo que uso es este codigo: Cita: <?php require("../upload.php"); ...
  #1 (permalink)  
Antiguo 30/03/2011, 16:47
 
Fecha de Ingreso: febrero-2011
Mensajes: 62
Antigüedad: 13 años, 1 mes
Puntos: 0
Limitar numero de imagenes

Hola tengo un problema para limitar el numero de imagenes que pueda subir un usuario, el codigo que uso es este

codigo:
Cita:
<?php

require("../upload.php");

$status = "";
$username = $_COOKIE['loggedin'];
if ($_POST["action"] == "upload") {
$fupload = new Upload();
$fupload->setPath("../$username/files");
$fupload->setFile("archivo");
$fupload->isImage(true);
$fupload->save();

$status = $fupload->message;
}
?>
y el upload es:
Cita:
<?php

class Upload {
var $maxsize = 0;
var $message = "";
var $newfile = "";
var $newpath = "";

var $filesize = 0;
var $filetype = "";
var $filename = "";
var $filetemp;
var $fileexte;

var $allowed;
var $blocked;
var $isimage;

var $isupload;

function Upload() {
$this->allowed = array("image/bmp","image/gif","image/jpeg","image/pjpeg","image/png","image/x-png");
$this->blocked = array("php","phtml","php3","php4","php5","js","sht ml","pl","py");
$this->message = "";
$this->isupload = false;
}
function setFile($field) {
$this->filesize = $_FILES[$field]['size'];
$this->filename = $_FILES[$field]['name'];
$this->filetemp = $_FILES[$field]['tmp_name'];
$this->filetype = $_FILES[$field]['type'];
$this->fileexte = substr($this->filename, strrpos($this->filename, '.')+1);

$this->newfile = substr(md5(uniqid(rand())),0,8).".".$this->fileexte;
}
function setPath($value) {
$this->newpath = $value;
}
function setMaxSize($value) {
$this->maxsize = $value;
}
function isImage($value) {
$this->isimage = $value;
}
function save() {
if (is_uploaded_file($this->filetemp)) {
// comprobar si el archivo es válido
if ($this->filename == "") {
$this->message = "Archivo no valido";
$this->isupload = false;
return false;
}
// comprobar el tamaño máximo
if ($this->maxsize != 0) {
if ($this->filesize > $this->maxsize*1024) {
$this->message = "Tamaño excesivo del archivo";
$this->isupload = false;
return false;
}
}
// comprobar si es imagen
if ($this->isimage) {
// comprobar dimensiones
if (!getimagesize($this->filetemp)) {
$this->message = "Imagen de archivo no valida";
$this->isupload = false;
return false;
}
// comprobar el tipo de contenido
if (!in_array($this->filetype, $this->allowed)) {
$this->message = "Tipo de contenido no valido";
$this->isupload = false;
return false;
}
}
// comprobar si el archivo se permite
if (in_array($this->fileexte, $this->blocked)) {
$this->message = "Archivo no permitido - ".$this->fileexte;
$this->isupload = false;
return false;
}

if (move_uploaded_file($this->filetemp, $this->newpath."/".$this->newfile)) {
$this->message = "Archivo subido correctamente!";
$this->isupload = true;
return true;
} else {
$this->message = "El archivo no se ha subido por favor, inténtelo de nuevo";
$this->isupload = false;
return false;
}
} else {
$this->message = "El archivo no se ha subido por favor, inténtelo de nuevo";
$this->isupload = false;
return false;
}
}
}
?>
Alguien me podria decir si puedo poner un limite a subir, y como.

Gracias
  #2 (permalink)  
Antiguo 30/03/2011, 18:12
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Limitar numero de imagenes

Si la cantidad de imagenes que puede es en total , es decir algo como el usuario solo puede subir 5 imagenes para su perfil, cuando se loguea cargas la cantidad de imagenes en una variable de session y cada vez que agregas o quitas una imagen la actualizas.
En cambio si la cantidad de images a la que te referis, es por una accion, como por ejemplo subir imagenes para una publicacion, podes llevar un contador con un canpo oculto o tambien lo podes hacer con una variable de sessionm en cualquiera de los casos tenes que validar la cantidad de images que ya tenes subidas, antes de que subas la proxima.
  #3 (permalink)  
Antiguo 31/03/2011, 04:45
 
Fecha de Ingreso: febrero-2011
Mensajes: 62
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Limitar numero de imagenes

Hola

Si me refiero a lo primero, cada usuario sube las imagenes a su propia carpeta, pero lo de limitar al logearse, no lo entiendo bien, bueno mas que no entenderlo es que no se como hacerlo.

Yo habia pensado en leer las imagenes que hay en la carpeta y cuando llegue a 15 por ejemplo no dejar que suba mas.

Pero no se si es posible.

Muchas gracias.

un saludo
  #4 (permalink)  
Antiguo 31/03/2011, 06:30
 
Fecha de Ingreso: septiembre-2008
Mensajes: 350
Antigüedad: 15 años, 7 meses
Puntos: 31
Respuesta: Limitar numero de imagenes

Hola, con las 4 primeras lineas de este código puedes saber cuantas imágenes hay en un folde
Código PHP:
<?php
$dir 
'tmp/images/';
$imagenes count(glob("$dir{*.jpg,*.JPG,*.gif,*.GIF,*.png,*.PNG,*.bmp,*.BMP}",GLOB_BRACE));
echo 
$imagenes,'<br />';
if(
$imagenes 15){
//imágenes completas Borrar para agregar mas
echo '0';
}else{
//require("../upload.php");
//agregar mas imágenes
echo '1';
}
?>
pero igual ahí te pongo una demostración mas omenos como hacerlo.
el code que sigue después de las 4 lineas tiene un margen de Error de una imagen.
ese solo lee los archivo que esta especificados ahí si hay otro archivo ahí no
es contado
y como te especificaron arriba quizás tendrás que usar session para ser efectivo
-
__________________
╬-----╬
║☺₧☻║
╬-----╬

Última edición por thezzin; 31/03/2011 a las 06:36
  #5 (permalink)  
Antiguo 31/03/2011, 15:12
 
Fecha de Ingreso: febrero-2011
Mensajes: 62
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Limitar numero de imagenes

muchas gracias voy a intentarlo a ver
un saludo
  #6 (permalink)  
Antiguo 01/04/2011, 05:03
 
Fecha de Ingreso: febrero-2011
Mensajes: 62
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Limitar numero de imagenes

lo estoy probando, no soy capaz de que me bloquee las subidas al llegar al limite.

He pensado que al llegar al limite bloquee el boton submit del form, pero tampoco me sale, lo tengo asi:

Código HTML:
<form action="index.php" method="post" enctype="multipart/form-data">
    <td class="text">
      <input name="archivo" type="file" class="casilla" id="archivo" size="35" <? if($maximo <7){echo '<input type="file">';} else{ echo '<input type="file" disabled>'; }?>/>
      <input name="enviar" type="submit" class="boton" id="enviar" value="Subir archivo"  />
	  <input name="action" type="hidden" value="upload" /> </td>
	</form> 
y el codigo php:

Código PHP:
<?php 
    
if ($gestor opendir('files')) {
        echo 
"<ul>";
        while (
false !== ($arch readdir($gestor))) {
           if (
$arch != "." && $arch != "..") {
               echo 
"<li><a href=\"files/".$arch."\" class=\"linkli\" target=\"_blank\">".$arch."</a></li>\n";
           }
        }
        
closedir($gestor);
        echo 
"</ul>";
    }
    
    
$dir 'files/';
    
$maximo count(glob("$dir{*.jpg,*.JPG,*.gif,*.GIF,*.png,*.PNG,*.bmp,*.BMP}",GLOB_BRACE));
        echo 
"Tienes $maximo imagenes subidas de un total de 7",'<br />'
        if (
$maximo 7){            
            echo 
'';    
            }
                else {                                        
                    echo 
'';

            }
    
?>
Un saludo

Etiquetas: imagenes, limitar, numero
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:00.