elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  DUDA plataforma con muchos usuarios, gestion de imagenes
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: DUDA plataforma con muchos usuarios, gestion de imagenes  (Leído 2,419 veces)
Pirat3net

Desconectado Desconectado

Mensajes: 270


Ver Perfil
DUDA plataforma con muchos usuarios, gestion de imagenes
« en: 4 Diciembre 2012, 00:25 am »

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?


En línea

-Joserra-

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: DUDA plataforma con muchos usuarios, gestion de imagenes
« Respuesta #1 en: 4 Diciembre 2012, 01:07 am »

Citar
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.....

 :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.

Citar
como 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:

Código:
<?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(100, 100);
//imagecreatetruecolor() returns an image identifier representing a black image of the specified size.
list($image_width, $image_height) = getimagesize("images/".$numerodefoto.".jpg");
imagecopyresampled($new_image, imagecreatefromjpeg("images/".$numerodefoto.".jpg"), 0, 0, 0, 0, 100, 100, $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_source, 0, 0, 0, 0, $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>


En línea

Pirat3net

Desconectado Desconectado

Mensajes: 270


Ver Perfil
Re: DUDA plataforma con muchos usuarios, gestion de imagenes
« Respuesta #2 en: 5 Diciembre 2012, 03:36 am »

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
En línea

Pirat3net

Desconectado Desconectado

Mensajes: 270


Ver Perfil
Re: DUDA plataforma con muchos usuarios, gestion de imagenes
« Respuesta #3 en: 5 Diciembre 2012, 03:44 am »

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
En línea

Pirat3net

Desconectado Desconectado

Mensajes: 270


Ver Perfil
Re: DUDA plataforma con muchos usuarios, gestion de imagenes
« Respuesta #4 en: 5 Diciembre 2012, 03:50 am »

    while (false !== ($file = readdir($handle)))
           

¿¿  !==   ??   primera vez que lo veo 0.o
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines