Foros del Web » Programando para Internet » PHP »

galeria de imagenes segura

Estas en el tema de galeria de imagenes segura en el foro de PHP en Foros del Web. Quiero hacer una galeria de imagenes que se autoactualice (segun el dia apareza una foto). Al asi como "foto del dia". Pensaba almacenar todas las ...
  #1 (permalink)  
Antiguo 12/01/2004, 07:02
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
galeria de imagenes segura

Quiero hacer una galeria de imagenes que se autoactualice (segun el dia apareza una foto). Al asi como "foto del dia". Pensaba almacenar todas las fotos (jpg) en una carpeta, pero al ponerles nombre me di cuenta de la trampa. No puedo ponerles enero1.jpg, enero2.jpg... porque el usuario se da cuenta, y me saca todas las fotos anticipadamente. No se me ha ocurrido ningun sistema por el que proteger mis fotos.

¿Alguna idea? Gracias de antemano.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #2 (permalink)  
Antiguo 12/01/2004, 07:11
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Puedes "encriptar" el nombre del fichero con base64_encode() (www.php.net/base64_encode). Asi enero1.jpg sera ZW5lcm8x.jpg con:
Código PHP:
echo base64_encode('enero1').'.jpg'
Necesitarian saber como llamas a las imagenes originalmente y que usas base64.

O mejor aun, guarda tus imagenes en un directorio no accesible via web (por encima del raiz del sitio), y en el src de tu img de la imagen del dia pon el script imagen_del_dia.php. Y ese script siempre devolvera la imagen del dia actual. Asi que solo sabran esa URL.

De todas formas, siempre podrian hacer un script que automaticamente cada dia leyese la imagen. Pero al menos no te las cogeran todas seguidas.

Y finalmente puedes almacenar en una tabla la relacion fecha=>nombre_imagen, para que el nombre de la imagen no incluya ningun dato de la fecha. Necesitarian tener acceso a la tabla para saber el nombre de todos los ficheros. Esa tabla la puedes implementar con base de datos o con ficheros.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 12/01/2004, 07:26
Avatar de oktubre  
Fecha de Ingreso: agosto-2003
Ubicación: en mi casa
Mensajes: 371
Antigüedad: 20 años, 7 meses
Puntos: 4
en las faq's hay un espectacular tutorial de cluster de como cargar archivos en una db, soporta imagenes y el modelo del ejemplo esta facil de entender e implementar para imagenes.

osea, la imagen que muestra la sacarías de una DB y te permitiría automatizar procesos.

saludos
__________________
w32.oktubre@mm <----------------<<<<
prefiero cerrar la boca y parecer un tonto que abrirla y confirmarlo.
  #4 (permalink)  
Antiguo 12/01/2004, 07:50
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Si, guardar en la base de datos la imagen es otra solucion. Pero yo creo que la base de datos es un recurso mas "caro" que el disco duro.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 12/01/2004, 07:53
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Si, totalmente de acuerdo. Ademas bases de datos prefiero no ocupar, porque muchos hostings gratuitos no me dejan tener, pero un espacio gratuito si que puedo conseguir con muchos megas para poner imagenes. Creo que utilizare el encode_base64, de momento lo estoy probando..
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #6 (permalink)  
Antiguo 12/01/2004, 08:48
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
resultado

Bueno, ya lo tengo hecho. He metido los nombres de las imagenes en una base de datos mysql asignandoles un dia (bueno lo del dia todavia no lo he hecho), pero para quien quiera ver el resultado, es bueno compartir informacion. Creo que es totalmente seguro, aunque como dice josemi siempre se puede hacer un script para sacar la imagen de hoy, pero solo la de hoy:

IMAGEN.PHP
Código PHP:
header(" Content-Type: image/jpeg");
header(" Content-Disposition: inline");

$image=$_GET["img"];
$directorio="imagenes/";

include(
"../conexion.php");
$link=conectarse($host,$user,$pass,$base);
$res=mysql_query("select nombre,dia from imgdeldia where id=1",$link);
$row=mysql_fetch_array($res);
$image=$directorio.$row["nombre"];

$handle fopen($image,'rb');
$file_content fread($handle,filesize($image));
fclose($handle);
$encoded chunk_split(base64_encode($file_content)); 
echo 
base64_decode($encoded); 
Asi queda bien, y la imagen en vez de imegenes/miimagen.jpg se llama como sigue: imagen.php?img=7. Lo que pasa es que habria que devolver otra cosa que no sea la imagen si viene un listillo y pone img=14, porque sino ya nos fastidian el script y . Pero eso se hace calculando el dia, y el que quiera que juegue con eso, yo solo doy el codigo.


Gracias a los que me han prestado ayuda.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #7 (permalink)  
Antiguo 12/01/2004, 10:50
 
Fecha de Ingreso: enero-2004
Mensajes: 235
Antigüedad: 20 años, 3 meses
Puntos: 0
Es mejor no usar base de datos.

Fichero plano fechaimg.txt:
Código PHP:
$fecha[20040101]  = imagen45.jpp
$fecha
[20040102]  = imagen20.jpg
$fecha
[20040103]  = imagen80.jpg
$fecha
[20040104]  = imagen10.jpg
$fecha
['default']      = errimagen.jpg 

Fichero immagen.php:
Código PHP:
header(" Content-Type: image/jpeg");
header(" Content-Disposition: inline");

include_once (
'fechaimag.txt');
$directorio 'imagenes/' ;
$hoy date('Ymd',time());
$img $directorio.$fecha[$hoy];

if (
file_exists($img)) {
    
readfile ($direcrorio.$fecha[$hoy]);
else {
    
readfile ($direcrorio.$fecha['default']);

  #8 (permalink)  
Antiguo 12/01/2004, 11:17
 
Fecha de Ingreso: enero-2004
Mensajes: 235
Antigüedad: 20 años, 3 meses
Puntos: 0
Cita:
Mensaje Original por josemi
[B]

Puedes "encriptar" el nombre del fichero con base64_encode() (www.php.net/base64_encode). Asi enero1.jpg sera ZW5lcm8x.jpg con:
Código PHP:
echo base64_encode('enero1').'.jpg'
Necesitarian saber como llamas a las imagenes originalmente y que usas base64.
Así tendrias que renombrar los ficheros de imagnes o no? Es que no entiendo muy bien el pq de codificar los nombres.

Cita:
O mejor aun, guarda tus imagenes en un directorio no accesible via web (por encima del raiz del sitio), y en el src de tu img de la imagen del dia pon el script imagen_del_dia.php. Y ese script siempre devolvera la imagen del dia actual. Asi que solo sabran esa URL.
Buena solucion. Así estan accesible desde el script php pero no desde URL.

Cita:
De todas formas, siempre podrian hacer un script que automaticamente cada dia leyese la imagen. Pero al menos no te las cogeran todas seguidas.
Podrian coger sólo una imagen por dia.

Cita:
Y finalmente puedes almacenar en una tabla la relacion fecha=>nombre_imagen, para que el nombre de la imagen no incluya ningun dato de la fecha. Necesitarian tener acceso a la tabla para saber el nombre de todos los ficheros. Esa tabla la puedes implementar con base de datos o con ficheros.
Mejor implementarla en ficheros cómo lo que he hecho en el post anterior.
  #9 (permalink)  
Antiguo 12/01/2004, 11:42
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
re

En principio habia pensado en haceer una cosa como la propuesta de jmaribau 2 post mas arriba. Pero hablamos de hacerlo a largo plazo, es decir, de 500 a 700 fotos o asi. Necesito un metodo que sea rapido, ya que si el servidor tiene que armar un array de cadenas de tal magnitud, me sale mejor y mas optimo en base de datos. Una estimacion del fichero de texto con 500 registros y los nombres de longitud 10 caracteres tendriamos: 28 caracteres (bytes) por linea, 500 lineas, luego 12500 bytes. 12 Kb para cargar en un txt quizas valga mas la pena consultar una base de datos ¿o me equivoco?. Es que en el tema de optimizacion estoy un poco frio.

Lo de encriptar el nombre del fichero tampoco lo entiendo yo, porque efectivamente habria que cambiar el nombre a todos los ficheros (buf, que seran 600!).

Si alguien me puede explicar eso de archivar las imagenes un nivel arriba de la raiz de mi sitio... es que tengo un servidor gratuito y mas arriba de mi / no tengo acceso.

Con mi script, por lo menos yo, no he conseguido sacar la ruta de la imagen.

A ver si conseguimos un metodo optimo y facil.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #10 (permalink)  
Antiguo 12/01/2004, 11:58
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Ahora que lo dices, yo tampoco tengo muy claro porque dije lo del base64. Quizas fue como forma de dificultar la adivinacion de los nombres de los ficheros.

derkenuke, en los hosting de pago suelen dejar crear directorios por encima del raiz, para estas cosas. Como segunda opcion, podrias usar un directorio protegido por password (los htpass de Apache, por ejemplo), aunque quizas tampoco sea comun en hosting gratuitos.

Y sobre BD vs fichero, todo es probar. Es mas, se puede abstraer el sistema de almacenamiento para que todo sea independiente, menos las funciones que graban y leen los datos. Es decir, haces una funcion que devuelva el nombre y directorio de la imagen, pasandole la fecha. Luego que sea esa funcion la que se pege con base de datos o fichero. Lo mismo para grabar.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #11 (permalink)  
Antiguo 12/01/2004, 12:16
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Ok, entendido. Probare con ficheros de texto para poder utilizar otro servidor gratuito y no depender de mis bases de datos (inaccesibles de uno a otro).

Los htpass como los htaccess los estuve mirando lo primero de todo, pero no encontre ningun servidor gratuito que me dejara su uso.

Pues eso, voy a probar con ficheros a ver como va el tema.

Gracias.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #12 (permalink)  
Antiguo 12/01/2004, 12:27
 
Fecha de Ingreso: enero-2004
Mensajes: 235
Antigüedad: 20 años, 3 meses
Puntos: 0
Yo creo que es mas portable hacerlo desde un fichero.
Cargar 12Kb es un momento, y no neccesitas basde datos, con lo que puedes tener un hosting mas barato al no usar las imagenes.

Las 500 imagenes las tienes en un sólo directorio o en varios directorios?

Si lo tienes en uno puedes obrir el directorio via ftp, leer el directorio y coger los archivos de imagenes y assignarles una fecha aleatoria.( entre varios dias). El resultado lo pones en un archivo plano, con la siguiente estructura :

$fecha[$fechaleatoria] = $nombrearchivoviaftp.

Y ya ta. Es una buena solucion automatica. Además tambien lo puedes usar para hacer lo mismo en varios servidores sólo poniendo la url del servidor.

$url = 'www'.$servidor.'/'.$pathdirectorios
$fecha[$fechaleatoria] = $url.$nombrearchivoviaftp.
  #13 (permalink)  
Antiguo 12/01/2004, 12:54
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Las tengo en un mismo directorio. Obviamente iba a generar el codigo php con otro archivo php, sino imposible escribir 500 entradas, podria morirmee. jeje.

No creo que tenga problema.

Gracias por el consejo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #14 (permalink)  
Antiguo 12/01/2004, 13:00
 
Fecha de Ingreso: enero-2004
Mensajes: 235
Antigüedad: 20 años, 3 meses
Puntos: 0
Pero la recomendación es que despues de hacer la conexión con ftp guardes los resultados en un fichero plano, pq és mas rapido hacer una lectura de un archivo que hacer la conexión ftp. autenrificar, etc....

Quando lo tengas hecho, me lo puedes passar, gracias
  #15 (permalink)  
Antiguo 12/01/2004, 13:12
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Buf, es que meterme con ftp y demas... Pensaba hacer lo siguiente:

En un php por cada archivo que exista en un directorio (en la carpeta donde estarian los .jpg) generaria la fecha adecuada ($fecha) y escribiria asi simplemente:

echo "$imagenes[".$fecha."]=\"".$nombreFich."\";<br>";

Y al ejecutarlo saldria una cosa como (resultado html):

$imagenes[12012004]="imagen1.jpg";
$imagenes[13012004]="imagen2.jpg";
$imagenes[14012004]="imagen3.jpg";
$imagenes[15012004]="imagen4.jpg";

Pero unas 500 lineas. Despues copiar esto en el bloc de notas (se neutralizan todas las etiquetas como <br>) y guardarlo como .php y ya tendria el fichero php que hace de BDD.


Parece sencillo ¿no?
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #16 (permalink)  
Antiguo 12/01/2004, 15:28
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Resulta que los hostings gratis de todos los que he probado ninguno me deja el codigo intacto, todos añaden su codigo al archivo, entonces no puedo poner
header(" Content-Type: image/jpeg");
header(" Content-Disposition: inline");
Y no es nunca una imagen. ¿A alguien se le ocurre como solucionarlo? estoy probando mil cosas pero al final acabare poniendolo en un iframe con el boton dcho anulado, seleccionar texto anulado y el que quiera romperse la cabeza sacando el codigo haya él.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #17 (permalink)  
Antiguo 12/01/2004, 16:44
 
Fecha de Ingreso: enero-2004
Mensajes: 235
Antigüedad: 20 años, 3 meses
Puntos: 0
Recomendacion, usa fecha americana: 20040131 . Pq? Porque puedes hacer operaciondes de comparación, suma o resta.
20040131-20040115=16 ( han pasado 16 dias).
Puedes ordenarlos segun te convenga ( de mayor a menor, etc).

Si lo haces via ftp, una cosa mas que vas a aprender y además te va servir para tener un sistema distribuido de imagenes en varios sites.

Creo que es mejor usar ftp. Será mas complicado al principio pero valdrá la pena pq despues podras usar otros sites para almacenar imagenes.
  #18 (permalink)  
Antiguo 12/01/2004, 16:47
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
A, ok. Fecha americana. Me pensare lo del ftp ;) aunque no necesito utilizar el sistema en varios sites, pero nunca esta mal aprender. Ademas quizas se me ocurra algo que investigar alli (como casi siempre xD).

Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #19 (permalink)  
Antiguo 12/01/2004, 17:22
 
Fecha de Ingreso: enero-2004
Mensajes: 235
Antigüedad: 20 años, 3 meses
Puntos: 0
I cómo puede ser que incluyan código los de los hostings?
Puedes enviarme por mail el fichero html resultante y el php que usas.
  #20 (permalink)  
Antiguo 12/01/2004, 18:12
Avatar de Sette  
Fecha de Ingreso: febrero-2002
Mensajes: 1.747
Antigüedad: 22 años, 2 meses
Puntos: 3
Me podeis mandar la aplicación terminada para verla y ver si soy capaz a hacer que funcione?, mi correo es [email protected]
__________________
diseño y programación
http://www.manucastro.es
[email protected]
  #21 (permalink)  
Antiguo 13/01/2004, 03:02
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Los hostings gratuitos suelen añadir codigo para meter sus anuncios. Lo que suelen hacer es añadir un javascript antes del contenido de tu respuesta. Y lo suelen hacer en funcion de la extension del fichero.

Entonces pensemos otra solucion: usar siempre un nombre de fichero para la imagen de hoy. Siempre sera hoy.jpg. Y tu HTML sera:

<img src="imagen_hoy.php">

E imagen_hoy.php puede ser:
Código PHP:
$imagen_hoy=getImagenHoy();
copy($imagen_hoy,'hoy.jpg');
header("Location: hoy.jpg");
exit; 
getImagenHoy() es la funcion que obtiene el nombre real de la imagen que toca hoy, ya sea obtenida de base de datos, de fichero o de inspiracion divina. Luego copias esa imagen a hoy.jpg y redireccionas a esa imagen.

- La gente siempre ve el mismo nombre de imagen (hoy.jpg).
- imagen_hoy.php solo devuelve la imagen del dia actual.
- Puede haber problemas con las caches, pero puede solucionarse añadiendo a la redireccion un valor aleatorio(hoy.jpg?123145) que no influye en la generacion de la imagen.
- Necesita que te dejen copiar ficheros (no creo que haya ningun hosting tan cutre que no te deje eso).

Veamos si con esto se soluciona.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #22 (permalink)  
Antiguo 13/01/2004, 11:51
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
re

Lo de los hostings que insertan codigo normalmente unos te meten un .js en la pagina, otros una funcion js popup() para sus publicidades, otros te insertan una imagen al final del documento...

Si me funciona lo de copiar. Jeje parece que me leeis el pensamiento o algo porque he pensado eso y hasta lo he probado.

En fin, si me funciona pero hay un problemilla. Coge algun lammer de esos que abudan y dice: bua, una imagen nueva cada dia, y ni siquiera es mia y hacen:

<img src="http://webdederkenuke.com/lacarpeta/hoy.jpg">

Y ya man joribiao la marrana. Que es verdad que la van a poder sacar tambien si la imagen se llama de manera diferente cada dia, pero que es mucho mas dificil.

Tengo una idea que creo que sera la definitiva. Hacer un script que me cambie los nombres de imagen y a la vez me genere el codigo para meter en un archivo php (que porqué no el mismo que el que incluye la imagen). Me estoy refirendo a algo asi:

Código PHP:
$path "imagenes";
$dir = @opendir($path);
$diaInic=28;
$mesInic=01;
$anoInic=2004;

class 
Fecha {
    var 
$fecha;
    function 
Fecha($a=0,$m=0,$d=0) {  
        if (
$a==0$a=Date("Y");
        if (
$m==0$m=Date("m"); 
        if (
$d==0$d=Date("d");
           
$this -> fecha Date("Ymd",mktime(0,0,0,$m,$d,$a));
    } 
    function 
SumaTiempo($a=0,$m=0,$d=0) {
        
$array_date explode("-",$this->fecha);
        
$this->fecha=Date("Y-m-d",mktime(0,0,0,$array_date[1]+$m,$array_date[2]+$d,$array_date[0]+$a));
    } 
    function 
getFecha() {
        return 
$this->fecha
    } 


function 
nombreAleat() {
    return 
"abou3h8ash803";
}


$dia=new Fecha($anoInic,$mesInic,$diaInic);

$codigo="\$archivoImg=Array();";
$cont=0;
while (
$elemento = @readdir($dir)) { 
   
$fich=$path."/".$elemento;
   if(
strpos($fich,".jpg")) {    //es jpg
       
echo $fich;
    
$nuevoNombre=@nombreAleat();
       
$ren=@rename($fich,$path."/".$nuevoNombre.".jpg");
       echo 
" es renombrado a ".$path."/".$nuevoNombre.".jpg ($ren)<br>";
        
$cont++;
    
$codigo.="\$archivoImg[".$dia->@getFecha()."]='".$nuevoNombre."';<br>";
     
$dia->@SumaTiempo(0,0,1);
   }
   else {
    echo 
$fich." no es renombrado, no es jpg<br>";
   }
}

@
closedir($dir);

echo 
"<hr><hr>";
echo 
"<h3>codigo generado:</h3>".$codigo

Por cada archivo que haya en $path comprueba si es .jpg y si es lo renombra a un nombre generado. He puesto una class Fecha para que trabaje con fechas facilmente, nada mas. Ademas añade a $codigo una linea tipo
$archivoImg[20040125]="abou3h8ash803";
Luego el resultado de
echo $codigo
lo copio en un bloc de notas desde el explorador y etiquetas html (<br>) eliminadas. No lo he probado pero digo yo que funcionaria, no?.

PD: nombreAleat() todavia no esta construida, pero espero hacerla de manera que devuelva nombres de ese tipo (abou3h8ash803), raros.

Por cierto estoy probando en un servidor rancio que no se porque da un error 404 si llamo a una function sin @, por eso estan todas asi.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #23 (permalink)  
Antiguo 13/01/2004, 12:45
 
Fecha de Ingreso: enero-2004
Mensajes: 235
Antigüedad: 20 años, 3 meses
Puntos: 0
Una cosa que no entiendo,

Por cada pagina nueva que haces, te insertan js o una imagen.
Por eso no poderis hacer <img scr='imagenalret.php(loquesea)' />
Porque os van a meter dentro del imagen: js o otra imagen.

I por eso se jode la imagen que quieres que se vea.
Es esto lo que me quieres decir?
  #24 (permalink)  
Antiguo 13/01/2004, 13:26
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Si, meten un codigo al principio entonces yo meto los header() despues de ese codigo y da error.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #25 (permalink)  
Antiguo 13/01/2004, 15:51
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
definitiva

Tengo un script definitivo, es el de antes, pero probado y sin fallos (lo tengo en un servidor no-rancio que no da problemas con las funciones, no hay que poner @ ):

Código PHP:
$path "imagenes";
$dir = @opendir($path);
$diaInic=29;
$mesInic=01;
$anoInic=2004;

class 
Fecha {
    var 
$fecha;
    function 
Fecha($a=0,$m=0,$d=0) {  
        if (
$a==0$a=Date("Y");
        if (
$m==0$m=Date("m"); 
        if (
$d==0$d=Date("d");
           
$this -> fecha Date("Ymd",mktime(0,0,0,$m,$d,$a));
    } 
    function 
SumaTiempo($a=0,$m=0,$d=0) {
        
$ano=substr($this->fecha,0,4);
        
$mes=substr($this->fecha,4,2);
        
$dia=substr($this->fecha,6,2);
        
$this->fecha=Date("Ymd",mktime(0,0,0,$mes+$m,$dia+$d,$ano+$a));
    } 
    function 
getFecha() {
        return 
$this->fecha
    } 


srand((double)microtime()*1000000);
$abc="abcdefghijklmnopqrstuvwxyz01234567890";
function 
nombreAleat() {
    global 
$abc$devolver=""$long=rand(5,20);
    for(
$a=0;$a<=$long;$a++) {
        
$devolver.=$abc[rand(0,strlen($abc))];
    }
    return 
$devolver;
}


$dia=new Fecha($anoInic,$mesInic,$diaInic);

$codigo="\$archivoImg=Array();<br>";
$cont=0;
while (
$elemento = @readdir($dir)) { 
   
$fich=$path."/".$elemento;
   if(
strpos($fich,".jpg")) {    //es jpg
       
echo "<b>".$fich."</b>";
    
$nuevoNombre=@nombreAleat();
       
$ren=@rename($fich,$path."/".$nuevoNombre.".jpg");
       echo 
" es renombrado a <b>".$path."/".$nuevoNombre.".jpg</b> (ren=".$ren.")<br>";
        
$cont++;
    
$codigo.="\$archivoImg[".$dia->getFecha()."]='".$nuevoNombre."';<br>";
     
$dia->SumaTiempo(0,0,1);
   }
   else {
    echo 
$fich." no es renombrado, no es jpg<br>";
   }
}

echo 
"<p><h3>RESULTADO DEL DIRECTORIO:</h3>";
@
closedir($dir);
$dir = @opendir($path);

while (
$elemento = @readdir($dir)) { 
   
$fich=$path."/".$elemento;
   echo 
$fich."<br>";
}

@
closedir($dir); 

echo 
"<hr><hr>";
echo 
"<h3>codigo generado:</h3>".$codigo
Ya esta, los nombres de las imagenes aleatorias y renombradas, y el codigo listo para hacer un array-archivo de imagenes.

Parece bueno, si no puedo hacer otro mejor, la solucion perfecta no?

A ver si me lo superais :P

un saludo a todos los que prestan ayuda incondicional!
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
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 05:49.