DUDA plataforma con muchos usuarios, gestion de imagenes

Iniciado por Pirat3net, 4 Diciembre 2012, 00:25 AM

0 Miembros y 1 Visitante están viendo este tema.

Pirat3net

buenas, supongamos que estoy haciendo una plataforma en la que van a existir un numero muy grande de usuarios, y a estos, les voy a dar la posibilidad de que pongan una imagen en su pagina de usuario, a demas, les voy a dar la opcion de que puedanescribir , como en un foro vamos, y de que puedan subir imagenes para que se muestre en es articulo.

la pregunta es, cual es la mejor manera de tratar estas imagenes.
es decir, les doy la opcion a que las suban por ftp, y las dejo en una carpeta en objetos/imagenes por ejemplo, o por ejemplo adapto la base de datos para que coja imagenes.....

como lo suelen hacer los foros?

-Joserra-

Citares decir, les doy la opcion a que las suban por ftp, y las dejo en una carpeta en objetos/imagenes por ejemplo, o por ejemplo adapto la base de datos para que coja imagenes.....

:huh: Tienes que hacer ambas, subir tu foto a algún directorio (ftp) y después guardar en la base de datos en un campo del usuario el path a la imagen.

Citarcomo lo suelen hacer los foros?

Suelen usar este sistema, claramente añadiendo restricciones de resolución, de formatos etc. Aún así, cualquiera que conozca el directorio puede ver las imágenes, y aunque la restringas siempre lo podrán ver por url, pero mientras no sea una red social lo que pretendes hacer no te tienes que comer mucho la cabeza con eso.



Te adjunto un código que tuve que desarrollar, es una modificación de un código en php que encontré por internet para subir imágenes:

<?php ini_set("memory_limit""200000000"); // for large images so that we do not get "Allowed memory exhausted"?>


<?php
    
//$imageDirectory = "images_recent";
    // slide directorio e intervalo
    
// conexion
    
$dbhost="localhost";
$dbusuario="";               
$dbpassword="";                       
$db=""
$conexion mysql_connect($dbhost$dbusuario$dbpassword);
mysql_select_db($db$conexion);
?>


<script type="text/javascript">

<?php
$uploaddir 
'images_recent/';
$uploaddirok 'images/';
if (
$handle = @opendir($imageDirectory)) {
    
$i 0;
    while (
false !== ($file readdir($handle)))
    {
        if (
$file != "." && $file != "..")
        {
            
$path $imageDirectory;            
            if(
is_file($path.DIRECTORY_SEPARATOR.$file)) {
                
$info $path_parts pathinfo($file);
                if (   (
strtolower($info['extension']) == 'jpg'
                    || (
strtolower($info['extension']) == 'jpeg')
                    || (
strtolower($info['extension']) == 'pjpeg')
                    || (
strtolower($info['extension']) == 'gif')
                    || (
strtolower($info['extension']) == 'bmp')
                    || (
strtolower($info['extension']) == 'x-png'))  {
                        
$file addslashes($file);
                        echo 
"picList[$i] = '$path/$file';\r\n";
                        
$i++;
                    }
            } 
         }
    }
}
?>


</script>

<?php
//SQL INYECTION!!!!!!!!!!

if(!is_nan($_GET['nolike'])) {

    
$query mysql_query("SELECT * FROM imagennoveri");
    
$datos mysql_fetch_array($query);
    while(
$datos){
    if($datos[id]==$_GET['nolike'] && strcmp($datos[ip],$_SERVER['REMOTE_ADDR'])==0){
    unlink($uploaddir.$_GET['nolike'].".jpg");
    $numero=$_GET['nolike'];
    $query mysql_query("DELETE FROM imagennoveri WHERE id = '$numero'");
    echo "HA SIDO ELIMINADA";
    }
    $datos mysql_fetch_array($query);
 }   
}
if ((
$_GET['silike'])>0) {
$query mysql_query("SELECT * FROM contadorsubidas WHERE yo='hola'");
$datos mysql_fetch_array($query);
$numerodefoto=$datos[contador];
copy("images_recent/".$_GET['silike'].".jpg","images/".$numerodefoto.".jpg");
//creamos la foto 100x100
//copy("images/".$numerodefoto.".jpg","imagesmini/".$numerodefoto.".jpg");
$new_image imagecreatetruecolor(100100);
//imagecreatetruecolor() returns an image identifier representing a black image of the specified size.
list($image_width$image_height) = getimagesize("images/".$numerodefoto.".jpg");
imagecopyresampled($new_imageimagecreatefromjpeg("images/".$numerodefoto.".jpg"), 0000100100$image_width$image_height);
imagejpeg($new_image,"imagesmini/".$numerodefoto.".jpg",100);


$numerodefoto=$numerodefoto+1;
$fecha time();


$sql "UPDATE contadorsubidas SET contador = '$numerodefoto' WHERE yo = 'hola'"
mysql_query ($sql);
    
$sql sprintf("INSERT INTO imagen (fecha,extension,denunciado) VALUES ('%d','.jpg',0)",$fecha);
mysql_query($sql);
    echo 
"HA SIDO SUBIDA";
}

// upload the file
if ((isset($_POST["submitted_form"])) && ($_POST["submitted_form"] == "image_upload_form")) {

// file needs to be jpg,gif,bmp,x-png and 7 MB max
if (($_FILES["image_upload_box"]["type"] == "image/jpeg" || $_FILES["image_upload_box"]["type"] == "image/pjpeg" || $_FILES["image_upload_box"]["type"] == "image/gif" || $_FILES["image_upload_box"]["type"] == "image/x-png") && ($_FILES["image_upload_box"]["size"] < 7000000))
{

  
// tamano maximo de la foto
$max_upload_width 700;
$max_upload_height 400;

$query mysql_query("SELECT * FROM contador1 WHERE soy='hola'");
$datos mysql_fetch_array($query);
        
$numerodefoto=$datos[contador];//obtener numero de la base de datos
  



// JPG/JPEG
if($_FILES["image_upload_box"]["type"] == "image/jpeg" || $_FILES["image_upload_box"]["type"] == "image/pjpeg"){
$image_source imagecreatefromjpeg($_FILES["image_upload_box"]["tmp_name"]);
//imagecreatefromjpeg() returns an image identifier representing the image obtained from the given filename.
$uploadfile $uploaddir $numerodefoto.".jpg";
}
//GIF
if($_FILES["image_upload_box"]["type"] == "image/gif"){
$image_source imagecreatefromgif($_FILES["image_upload_box"]["tmp_name"]);
$uploadfile $uploaddir $numerodefoto.".gif";
}
// BMP doesn't seem to be supported so remove it form above image type test (reject bmps)
// if uploaded image was BMP
if($_FILES["image_upload_box"]["type"] == "image/bmp"){
$image_source imagecreatefromwbmp($_FILES["image_upload_box"]["tmp_name"]);
$uploadfile $uploaddir $numerodefoto.".bmp";
}
// if uploaded image was PNG
if($_FILES["image_upload_box"]["type"] == "image/x-png"){
$uploadfile $uploaddir $numerodefoto.".png";
$image_source imagecreatefrompng($_FILES["image_upload_box"]["tmp_name"]);
}

        
//AKI HAY QUE CAMBIAR EL ORIGEN DE DESTINO CON EL ID INDICADO
        //CAMBIAdO!!!!

        
move_uploaded_file($_FILES['image_upload_box']['name'], $uploadfile);
$remote_file =$uploadfile//"image_files/".$_FILES["image_upload_box"]["name"];
imagejpeg($image_source,$remote_file,100);
//imagejpeg() creates a JPEG file from the given imag
chmod($remote_file,0644);



// obtenemos la longitud de la imagen
list($image_width$image_height) = getimagesize($remote_file);


// si las proporciones no coinciden redimensionar
if($image_width != $max_upload_width || $image_height != $max_upload_height){
$proportions $image_width/$image_height;

if($image_width>$image_height){
$new_width $max_upload_width;
$new_height round($max_upload_width/$proportions);
}
else{
$new_height $max_upload_height;
$new_width round($max_upload_height*$proportions);
}


$new_image imagecreatetruecolor($new_width $new_height);
//imagecreatetruecolor() returns an image identifier representing a black image of the specified size.
$image_source imagecreatefromjpeg($remote_file);

imagecopyresampled($new_image$image_source0000$new_width$new_height$image_width$image_height);
imagejpeg($new_image,$remote_file,100);

imagedestroy($new_image);
}
imagedestroy($image_source);
$ip $_SERVER['REMOTE_ADDR'];
$fecha time();
$sql sprintf("INSERT INTO imagennoveri (fecha,extension,ip) VALUES ('%d','.jpg','%s')",$fecha,$ip);
mysql_query($sql);


$numerodefoto=$numerodefoto+1;
$sql "UPDATE contador1 SET contador = '$numerodefoto' WHERE soy = 'hola'"
mysql_query ($sql); 

// hasta aqui hace bien
$ok=1;
}
else{
// NO SE HA PODIDO SUBIR!
$ok=0;
}
}
mysql_close($conexion);
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>BOOZINGA!!!!</title>
<style type="text/css">
<!--
body,td,th {
font-family: Arial, Helvetica, sans-serif;
color: #333333;
font-size: 12px;
}

.upload_message_success {
padding:4px;
background-color:#009900;
border:1px solid #006600;
color:#FFFFFF;
margin-top:10px;
margin-bottom:10px;
}

.upload_message_error {
padding:4px;
background-color:#CE0000;
border:1px solid #990000;
color:#FFFFFF;
margin-top:10px;
margin-bottom:10px;
}

-->
</style></head>

<body onload="setCountDown();">
<!-- hasta div poner la galeria -->
<div id="container">
<div id="header"><div id="header_left"></div>
<div id="header_main">FOTOS RECIENTES!!!</div><div id="header_right"></div></div>
    <!--<div id="content">
        <img src="<?php echo $path.'/'.$file?>" alt="pic" id="pic" border="1" />
    </div>-->
</div>

<h1 style="margin-bottom: 0px">OO</h1>


<form action="submit.php" method="post" enctype="multipart/form-data" name="image_upload_form" id="image_upload_form" style="margin-bottom:0px;">
<label>Image file, maximum 7MB. it can be jpg, gif,  png:</label><br />
          <input name="image_upload_box" type="file" id="image_upload_box" size="40" />
          <input type="submit" name="submit" value="Upload image" />     
     
     <br />
<br />

     

<input name="submitted_form" type="hidden" id="submitted_form" value="image_upload_form" />
          </form>




<?php if($ok==1){?>
<p>
<img src="/subir/<?php echo $remote_file;?>" />
<p><a href="/subir/submit.php?silike=<?php echo $numerodefoto-1;?>">PAGAR!</a></p>
<p><a href="/subir/submit.php?nolike=<?php echo $numerodefoto-1;?>">NO ME GUSTA!</a></p>
</p>
<?php }?>


</body>
</html>

Pirat3net

waw, muy extenso tu codigo, nada mas lo empiezo a leer leo sql inyection conectado y me acojono xD, supongo sea para evitarla, voy a echarle un ojo, gracias por el codigo

Pirat3net

por cierto, no se trata de una red social,  seria un poco de loco competir con las actuales xD, los usuarios unicos seriamos yo y mi madre si acaso xD

Pirat3net

Cita de: -Joserra- en  4 Diciembre 2012, 01:07 AM
    while (false !== ($file = readdir($handle)))
           

¿¿  !==   ??   primera vez que lo veo 0.o