Jump to content

Subir archivos a X carpeta php


Recommended Posts

Buenas tardes/noches/dias, les explico que sucede.

 

Funcion :

 

Estoy desarrollando un pequeño sistema donde los usuarios crean su cuenta, se logean y pueden subir fotos.

 

Problema:

 

El sistema de login y registro funciona perfecto, el problema es que no logro que el "subidor de imágenes cree una carpeta con el nombre del "usuario" logeado. y que visualice la carpeta solo el usuario logeado" ( mi problema es que las otras cuentas ven la carpeta y las fotos ya que no logro crear una carpeta para cada usuario).

 

 

Código del uploader y el visualizado de imágenes.



<form action="" method="post" enctype="multipart/form-data">
<label for="file">Sube un archivo en formato PNG/JPEG no superior a 550 kb:</label>
<input type="file" name="archivo" id="archivo" />
<input type="submit" name="boton" value="Subir" />
</form>
<div class="resultado">
<?php
if(isset($_POST['boton'])){
// Hacemos una condicion en la que solo permitiremos que se suban imagenes y que sean menores a550 KB
if ((($_FILES["archivo"]["type"] == "image/gif") ||
($_FILES["archivo"]["type"] == "image/jpeg") ||
($_FILES["archivo"]["type"] == "image/png") ||
($_FILES["archivo"]["type"] == "image/pjpeg")) &&
($_FILES["archivo"]["size"] < 550000)) {

//Si es que hubo un error en la subida, mostrarlo, de la variable $_FILES podemos extraer el valor de [error], que almacena un valor booleano (1 o 0).
 if ($_FILES["archivo"]["error"] > 0) {
 echo $_FILES["archivo"]["error"] . "<br />";
 } else {
 // Si no hubo ningun error, hacemos otra condicion para asegurarnos que el archivo no sea repetido
 if (file_exists("archivos/" . $_FILES["archivo"]["name"])) {
	 echo $_FILES["archivo"]["name"] . " ya existe. ";
 } else {
	 // Si no es un archivo repetido y no hubo ningun error, procedemos a subir a la carpeta /archivos, seguido de eso mostramos la imagen subida
	 move_uploaded_file($_FILES["archivo"]["tmp_name"],
	 "archivos/" . $_FILES["archivo"]["name"]);
	 echo "Archivo Subido <br />";
	 echo "<img src='archivos/".$_FILES["archivo"]["name"]."' />";
 }
 }
} else {
 // Si el usuario intenta subir algo que no es una imagen o una imagen que pesa mas de 550 KB mostramos este mensaje
 echo "Archivo no permitido, posiblemente pesa mas de 550kb o tiene un formato no aceptado";
}
}
?>
</div>


<div style="width:50%;">
<?php
$dir='Mangas/';
$images = glob("$dir{*.gif,*.jpg,*.png}", GLOB_BRACE);
foreach($images as $v){
echo '<img src="'.$v.'" border="1" style="width:110px;float:left;margin:10px;" />';
}
?>
</div>

 

No se si les sirva este dato pero la estructura de la base de datos que uso para logear los usuarios es así.

-- Estructura de tabla para la tabla `usuarios`
--
CREATE TABLE `usuarios` (
`ID` int(9) unsigned NOT NULL auto_increment,
`username` varchar(180) default NULL,
`password` varchar(180) default NULL,
`email` varchar(180) default NULL,
`id_extreme` varchar(180) default NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;

 

Bueno en resumen el problema es que no logro que la carpeta donde se guarde la foto tenga el mismo nombre que el usuario logeado y que el visualziador haga lo mismo muestre la carpeta del usuario logeado..

 

les dejo una demo de como es mas omenos.

http://portal.tuzonaotaku.com

usuario demo

clave demo

 

 

De ante mano muchas gracias, busque información pero falle repetidas veces, si pueden dar documentacion o ayudarme seria perfecto. (si faltan mas datos me avisan)

Edited by jes_master
Link to comment
Share on other sites

No te recomiendo crear una carpeta por cada usuario, si no, asignar a cada foto subida, el ID del usuario, algo como

 

IMG_(ID_USUARIO)_FOTO01

IMG_(ID_USUARIO)_FOTO02

IMG_(ID_USUARIO)_FOTO03

 

etc... si no, te quedará gigantesco el sitio. Luego para cada usuario, las llamas mediante su ID onda colocas

IMG src = "IMG_<? echo id_usuario; (EXtraido de la BD, donde el usuario sea igual al que tiene iniciada la session?>_FOTO03.ext" etc... te dejaré una web de un amigo, donde explica como subir fotografias, y también te deja una class en php, la cual es ponerla en tu servidor, y aplicarla donde la necesites (es super facil de usar y contiene un tutorial).

 

 

Ahora, si insistes en crear la carpeta, lo que hace php, si no existe la carpeta, la crea solo. Por lo que antes de la foto subida, deberías mandarle por ejemplo /imagenes_usuarios/nombre_usuario/la foto donde nombre_usuario lo extraes de la BD. y PHP debería crearla solo.

Edited by RALCN
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...