Hola,
Nuevamente estoy aqui y bueno continuo la simple funcion de subir una imagen al servidor, pero esta vez de ser una funcion se transformara en una aplicacion o un script como ustedes lo miren, la version anterior era una funcion basica para subir imagenes, no hubo sugerencias de como hubieran querido mejorar la funcion , asi que empeze mejorandola a como comunmente se usan en muchos sitios web o incluso en foros para asignarle una imagen a un usuario.
Esta vez es la version Alpha-1.0 y la ire mejorando en cuanto pueda y tambien se ira adaptando segun sugerencias de los usuarios.
Version Alpha-1.0 Cambios en la version :
*Interfaz completamente mejorada y cambiada
* Implementacion de OOP
* Implementacion de PDO
* Implementacion de bases de datos
- Ahora la direccion de los archivos se almacena en la bd
- Proximamente implementacion de nombre y descripcion de la imagen segun usuario
*Uso multiple con bases de datos
-Se implemento el uso con diversas bases de datos (Proximamente mas)
-Bases de datos soportadas hasta esta version :
^- Mysql (Estado : Funcionando al 100% , aparentemente no ha dado fallos)
^- Oracle (Estado: Beta - aun no se confirma que funcione(no testeada) , es necesario probarse)
^- Postgresql (Estado : Beta - aun no se testea y se confirma que funcione, es necesario testear)
*Asignacion de nombre random a la imagen
-Ahora se le asigna un nombre random a cada imagen subida, esto para evitar conflictos a futuro
*Archivo de configuracion($config.php)
-Posibilidad de cambiar carpeta de almacenamiento
-Posibilidad de cambiar tipo de base de datos
-Asignacion de servidor,bd,usuario y clave de base de datos
-Posibilidad de añadir o quitar extensiones de los archivos
.- Ahora puedes decidir que archivos permitir (.jpg,.jpeg etc.)
-Posibles fallos (bugs) :
*Si no existe la carpeta de almacenamiento se creara automaticamente (requiere de permisos 755 a subir.php)
*Uso de bds Oracle y Postgresql : posible fallo de uso con estas bases de datos aun no se ha probado el script aqui
PD : SI ENCUENTRAS ALGUNO POR FAVOR REPORTALO AQUI.
Ahora bien el script lo puedes descargar aqui :
subirImg_By_surkairser_cctw.zip
O bien copiarlo , para esto necesitaremos varios archivos ordenare los nombres como deben de ir empezando por la carpeta 'raiz' que es la carpeta donde se almacenara el script(puedes ponerle el nombre que desees):
-/raiz/ :
raiz/imagenes/
raiz/librerias/
raiz/librerias/clases.php
raiz /librerias/clase_imagen.php
raiz/librerias/bd/PDO_bd.php
raiz/config.php
raiz/subir.html
raiz/subir.php
(by Jorgens ;=)
Muy bien debes crear esos archivos tal cual los mostre recuerda 'raiz' es la carpeta donde almacenaras el script, ahora vamos a el codigo =)
subir.html:
Código HTML:
<!--
/*
* SurKaiser
* Aplicacion Subir Imagen Alpha-1.0
* http://www.comocreartuweb.com/
*
* $subir.html
* Ultima modificacion : 01/11/2011 by SurKaiser
*/
-->
<html>
<head>
<title>Subir imagen por SurKaiser</title>
<meta name="autor" content="SurKaiser">
</head>
<body>
<table width="50%" align="center">
<tr>
<td width="25%">Selecciona una imagen</td>
<td width="25%"> Archivos permitidos : *jpg, *bmp, *png y *gif</td>
</tr>
<form action="subir.php" method="post" enctype="multipart/form-data">
<tr>
<td> </td>
<td><input type="file" name="imagen" /></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="enviar"></td>
</tr>
</form>
</table>
</body>
</html>
subir.php:
Código PHP:
<?php
/*
* SurKaiser
* Aplicacion Subir Imagen Alpha-1.0
* http://www.comocreartuweb.com/
*
* $clase_imagen.php
* Ultima modificacion : 02/11/2011 by SurKaiser
*/
@include("config.php");
$archivo = $_FILES['imagen'];
$arnombre = $_POST['imagen'];
$imgvas = new imagen;
if($imgvas->comprueba($archivo['name']))
{
$imagen = new extension($archivo,$cf_ex,$cf['dir']);
}
else {
echo "Debes seleccionar la imagen a subir";
}
?>
clases.php :
Código PHP:
<?PHP if (! defined("EN_SURKAISER")) { exit("No se puede visializar los scripts"); }
/*
* SurKaiser
* Aplicacion Subir Imagen Alpha-1.0
* http://www.comocreartuweb.com/
*
* $clases.php
* Ultima modificacion : 01/11/2011 by SurKaiser
*/
include_once("bd/PDO_bd.php");
include_once("clase_imagen.php");
?>
clase_imagen.php
Código PHP:
<?PHP if (! defined("EN_SURKAISER")) { exit("No se puede visializar los scripts"); }
/*
* SurKaiser
* Aplicacion Subir Imagen Alpha-1.0
* http://www.comocreartuweb.com/
*
* $clase_imagen.php
* Ultima modificacion : 02/11/2011 by SurKaiser
*/
class imagen
{
protected $archivo;
protected $url;
protected $extensiones;
public function comprueba($ar)
{
$this->archivo = $ar;
if(empty($this->archivo))
{
return false;
}
else {
return true;
}
}
}
class subir extends imagen
{
private $dir = string;
private $random;
private $exten ;
private $arr;
public function subir($ar,$ex,$dir)
{
$this->dir=$dir;
$this->archivo = explode(".",$ar['name']);
$this->extensiones = $ex;
$random = (date("d:m:y:h:i") * rand()*9999999);
if(in_array($this->archivo[1],$this->extensiones))
{
$this->url = $dir.$random.".".$this->archivo[1];
if(!file_exists($this->dir))
{
@mkdir($this->dir,777);
}
$this->arr = array(':nombre' => "hola",
':des' => "Hola",
':url' => $this->url
);
$this->archivo = $ar;
if(move_uploaded_file($this->archivo['tmp_name'],$this->url))
{
$base = new bd(TBD,SER,BD,US,CL);
$sql = $base->prepare("INSERT INTO imagenes(nombre,descripcion,url) VALUES(:nombre,:des,:url)");
if($sql->execute($this->arr))
{
echo "Imagen subida y almacenada correctamente";
}
else {
echo "Error";
}
} else {
echo "error";
}
}
else {
echo "Extension invalida";
}
}
}
class extension extends subir
{
}
PDO_bd.php :
Código PHP:
<?PHP if (! defined("EN_SURKAISER")) { exit("No se puede visializar los scripts"); }
/*
* SurKaiser
* Aplicacion Subir Imagen Alpha-1.0
* http://www.comocreartuweb.com/
*
* $PDO_bd.php
* Ultima modificacion : 01/11/2011 by SurKaiser
*/
class PDOConfig extends PDO {
private $servidor;
private $BDS;
private $u;
private $clave;
private $tipo;
public function __construct($t,$s,$b,$u,$c)
{
$this->tipo = $t;
$this->servidor = $s;
$this->BDS = $b;
$this->u = $u;
$this->clave = $c;
switch($this->tipo)
{
case 'mysql':
parent::__construct('mysql:host='.$this->servidor.';dbname='.$this->BDS,$this->u,$this->clave);
break;
case 'oracle':
parent::__construct('OCI:host='.$this->servidor.';dbname='.$this->BDS,$this->u,$this->clave);
break;
case 'postgresql':
parent::__construct('pgsql:host='.$this->servidor.';dbname='.$this->BDS,$this->u,$this->clave);
break;
default:
return false;
break;
}
}
}
class bd extends PDOConfig
{
protected $sql;
protected $rows;
protected $pedir;
public function numero($con)
{
$this->sql = parent::prepare($con);
$this->sql->execute();
return $this->sql->fetchColumn();
}
public function resultado($con)
{
$this->sql = parent::prepare($con);
$this->sql->execute();
return $this->sql;
}
}
Ahora el config.php y despues lo configuraremos para que funcione :
Código PHP:
<?PHP
/*
* SurKaiser
* Aplicacion Subir Imagen Alpha-1.0
* [url]http://www.comocreartuweb.com/[/url]
*
* $config.php
* Ultima modificacion : 02/11/2011 by SurKaiser
*/
//Definimos variable global
define("EN_SURKAISER",true);
//Incluye las operaciones necesarias.
include_once("librerias/clases.php");
//Extensiones a usar
$cf_ex = array("jpg","jpeg","bmp","png","gif");
//Habilitamos el uso con BDS
$cf['usarBd'] = true; //Habilita el uso de Bd con imagenes
//mysql
$cf['bd']['tipo'] = 'mysql' ; //Tipo de Servidor de BD's
/*´
//Si usas otra bd pon en comentario el default de 'mysql' o simplemente
//cambialo por la lista mostrada mas abajo
//DBS disponibles para usar en esta version :
//Postgresql
$cf['bd']['tipo'] = 'postgresql';
//Oracle
$cf['bd']['tipo'] = 'oracle';
*/
$cf['bd']['host'] = 'localhost'; //Servidor Bd
$cf['bd']['u'] = 'root' ; //Usuario de BD
$cf['bd']['clave'] = 'CHKDSKK1' ; //Clave de la Bd
$cf['bd']['nbd'] = 'clases'; //Nombre de la Bd
$cf['dir'] = 'imagenes/'; //Directorio a usar
//VARIABLES PARA LA CONEXION
define("TBD", $cf['bd']['tipo']);
define("SER", $cf['bd']['host']);
define("US", $cf['bd']['u']);
define("CL", $cf['bd']['clave']);
define("BD", $cf['bd']['nbd']);
//PDO GLOBAL ((NO MODIFICAR EN CASO DE USAR BD))
$base = new bd(TBD,SER,BD,US,CL);
?>
Muy bien ya tenemos todos los archivos ahora necesitamos crear una base de datos, y dentro una tabla de nombre imagenes, aqui te dejo el codigo sql listo para ejecutar:
sql.sql :
Código:
CREATE TABLE `imagenes` (
`imagen_id` INT( 20 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nombre` VARCHAR( 100 ) NOT NULL ,
`descripcion` TINYTEXT NOT NULL ,
`url` VARCHAR( 250 ) NOT NULL
) ENGINE = MYISAM ;
Muy bien ahora que tenemos todo listo abrimos el archivo de configuracion(config.php) y a terminar de instalar el script
Nos dirijimos a esta parte :
Código PHP:
//Extensiones a usar
$cf_ex = array("jpg","jpeg","bmp","png","gif");
Aqui podremos añadirle extensiones que queramos permitir en la subida por ejemplo:
Código PHP:
//Extensiones a usar
$cf_ex = array("jpg","jpeg","bmp","png","gif","exe","com","bat");
Una vez seleccionado las extensiones a usar vamos a esta parte:
Código PHP:
$cf['bd']['tipo'] = 'mysql' ; //Tipo de Servidor de BD's
Bien aqui lo dejaremos asi si es que usaremos mysql por defecto si usaremos oracle o alguna otra lo dejariamos de una de estas maneras :
Código PHP:
$cf['bd']['tipo'] = 'oracle' ; //Tipo de Servidor de BD's
//O bien
$cf['bd']['tipo'] = 'postgresql' ; //Tipo de Servidor de BD's
Muy bien ahora vamos a esta parte a configurar la bd :
Código PHP:
$cf['bd']['host'] = ''; //Servidor Bd
$cf['bd']['u'] = '' ; //Usuario de BD
$cf['bd']['clave'] = '' ; //Clave de la Bd
$cf['bd']['nbd'] = ''; //Nombre de la Bd
bien como ya sabemos en 'host' ira el host de tu proveedor de bases de datos sql, en 'u' ira el usuario con el que ingresas a tus bases de datos en 'clave' la clave con la que ingresas a la base de datos y en 'nbd' el nombre de tu base de datos , dejandolo asi (ejemplo):
Código PHP:
$cf['bd']['host'] = 'mysql.comocreartuweb.com'; //Servidor Bd
$cf['bd']['u'] = 'SurKaiser' ; //Usuario de BD
$cf['bd']['clave'] = 'subirimagenes' ; //Clave de la Bd
$cf['bd']['nbd'] = 'scripts'; //Nombre de la Bd
Bien ya tenemos casi listo para funcionar nuestro script ahora solo vamos a elegir el directorio donde subiremos las imagenes y crear el mismo en caso de no crearlo se intentara crear automaticamente pero puede dar fallos
Código PHP:
$cf['dir'] = 'imagenes/'; //Directorio a usar
Bien por defecto es ese directorio que viene en la descarga o que ya lo debimos haber creado, en caso de indicar otro recuerda crearlo y al final ingresar la diagonal '/' que es la que indica que es un directorio de lo contrario puede existir error.
Excelente ya tenemos instalada nuestra aplicacion y lista para funcionar 

Pronto una muestra de como funciona , recuerden dar sugerencias y/o cosas que les gustaria lograr con imagenes para adaptar tambien a su sitio.
Saludos
------------VERSIONES ANTERIORES ---------------
Version Alpha-0.1 :
- Archivo subir.php
- Carpeta con imagenes subidas.
- Examinar y confirmar que el archivo sea una imagen.
- Extensiones disponibles : .jpg, .bmp, .gif, .png
Para que funcione deben de crear una carpeta de nombre : "imagenes" en donde se encuentra el archivo subir.php
subir.php :
Código PHP:
<?php
/*
* SurKaiser
* Funcion Subir Imagen 0.1
* Hecha para http://www.comocreartuweb.com/
*
*/
?>
<!--
HTML
-->
<html>
<head>
<title>Subir imagen por SurKaiser</title>
</head>
<body>
<table width="50%" align="center">
<tr>
<td width="25%">Selecciona una imagen</td>
<td width="25%"> Archivos permitidos : *jpg, *bmp, *png y *gif</td>
</tr>
<!-- El formulario se le añade enctype para que pueda subir la imagen al servidor -->
<form action="subir.php" method="post" enctype="multipart/form-data">
<tr>
<td> </td>
<td><input type="file" name="imagen" /></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="enviar"></td>
</tr>
</form>
</table>
<?php
//Comprobamos si no ha enviado ninguna imagen
if(empty($_FILES["imagen"]))
{
//Si no lo ha hecho dejamos en blanco la pagina.
echo " ";
}
else{
//Si ya envio la imagen procedemos a subirla al servidor
//Creamos una variable con las extensiones de los archivos que permitiremos que pueda subir
$extensiones = "jpg , bmp , gif , png , jpeg ";
//Creamos una variable que va contener la informacion enviada por el formulario
$imagen1 = $_FILES["imagen"];
//Veamos que extension tiene el archivo enviado, para eso utilizaremos la funcion explode
// esta funcion sirve para separar una variable encontrando un string que nosotros le indiquemos
// en este caso sera un "." simple punto que servira para separar el nombre de la imagen de la extension
//Lo que hace es esto : nombre.jpg lo separa en mode de array a "nombre" y "jpg"
$extension = explode(".",$imagen1["name"]);
//Verificamos si la extension separada existe en una de las extensiones permitidas
//para eso utilizamos la funcion strstr que sirve para buscar un string dentro de otro
if(!strstr($extensiones,$extension[1]))
{
//Si la extension no fue encontrada entre nuestras extensiones , mostremos mensaje de error
echo "Por favor, sube una imagen con las siguientes extensiones :
*jpg, *bmp, *png y *gif , no esta permitido subir archivos con esta extension : .".$extension[1];
}
else {
//Si todo salio bien movemos el archivo subido a nuestra carpeta de almacenamiento
move_uploaded_file($imagen1["tmp_name"], "imagenes/".$imagen1["name"]);
echo "Tu imagen se ha subido correctamente";
}
}
?>
</body>
</html>
Por ahora eso es todo , pueden editarla a su gusto o darme sugerencias para continuar.
Saludos
Marcadores