Silphor
Machacateclados
Machacateclados

Busco una forma de crear páginas automaticamente de la siguiente manera:

subo una imagen por formulario a mi web,despues quiero que se compruebe si el archivo existe,si es asi,es decir que si el archivo existe,se crea una página automaticamente donde se encuentra el archivo dentro de una página.php.

La idea es al subir una imagen,se crea una página.php donde se encuentra nuevamente esa imagen con la posibilidad de descargarla o verla....etc.

A ver si me podeis ayudar con un script o orientendome un poco...Gracias!!!

Avatar Image
@man / @woman
@man / @woman
Escrito originalmente por Silphor

Busco una forma de crear páginas automaticamente de la siguiente manera:

subo una imagen por formulario a mi web,despues quiero que se compruebe si el archivo existe,si es asi,es decir que si el archivo existe,se crea una página automaticamente donde se encuentra el archivo dentro de una página.php.

Pues nada más subri la imagen por ese formulario, creas la página.

¿Que problema tienes? ¿consigues que se suba la imagen?

Silphor
Machacateclados
Machacateclados

No tengo problemas,lo que quiero es al subir una imagen,php comprueba si la imagen existe,si existe crea una página automaticamente,sin que yo aga nada, a partir de una plantilla.

Por ejemplo como en youtube,al subir un video te crea una página automaticamente con una plantilla y con tu video insertado.Yo quiero lo mismo pero con imagenes.

Saludos!

Avatar Image
@man / @woman
@man / @woman

Pero ¿ya has conseguido subir la imagen?

Silphor
Machacateclados
Machacateclados

Si ya he conseguido subir la imagen :)

Avatar Image
@man / @woman
@man / @woman

Perfecto. Pues ahora, cuadno la subes y en el mismo script vas a crear la página...

Para ello puedes hacer uso de una plantilla, un fichero donde ya tienes todo escrito salva algún dato, como la dirección de la foto que pondrás como {direccion_foto} y cosas así.

En el script de subir la foto, lees la plantilla con la función fread, y con str_replace buscas {direccion_foto} y pones la dirección de la foto y salvas el fichero con fwrite con otro nombre... y ya tienes la página creada.

Silphor
Machacateclados
Machacateclados

Ufffff,me esta costando....

Lo que tengo hasta ahora es esto:

$ruta_archivo="wallpaper/medplantilla.php"; //defino la variable con la ruta de la plantilla
$medruta='wallpaper/imagen/'.$mednombre; //esta es la ruta de la imagen que subo
$medfile=fopen("$ruta_archivo","a"); //defino una variable para abrir la plantilla
fread($medfile,100000000);  //leo la plantilla
$medreemplazo=str_replace("$ruta","$medruta","$ruta"); //defino variable para el reemplazo
fwrite($medfile,$medreemplazo); //reeemplazo $ruta,que esta vacia,por $medruta que es la ruta de la imagen
fclose($medfile); //cierro el archivo

No me aparece ningun error,pero la plantilla se queda igual,sin ningun cambio

¿que ago mal?

Gracias de nuevo por vuestra ayuda ! :)

Avatar Image
@man / @woman
@man / @woman

¿Quieres modificar la plantilla?... no, pues te tiene que servir para otra.

Lo que tienes que hacer es abrir la plantilla, fopen y fread y a la vez abrir un fichero nuevo, con su fopen y su fwrite, donde escribiras lo que has leido de la plantilla, con el cambio.

Respecto al cambio, yo en la plantilla pondría {ruta} y después cambiaria esto.

Pero, te doy la enhorabuena, has conseguido mucho y muy rápido.

Silphor
Machacateclados
Machacateclados

Ami lo de modificar la plantilla me da igual,ya que por ahora no consigo que cambie $ruta por $medruta.

Como me has dicho he cambiado $ruta por {ruta} pero me pone el siguiente error: unexpected '{'

El código completo que uso en la plantilla es este: <?php echo {ruta};?>

A lo mejor ahora si se cambia,pero no lo hace por el error o algo asi...

Código php al subir imagen:

$medreemplazo=str_replace("{ruta}","$medruta","{ruta}");
fwrite($medfile,$medreemplazo);
fclose($medfile);

Muchas gracias por tu ayuda,y sobretodo rápida respuesta!!! No me ha dado tiempo ni de recargar la página!!!!

Te quiero decir tambien que lo de escribir encima de la plantilla por ahora no me importa,solo quiero que me funcione el código de sustitución...despues ya me las apaño.

Gracias de nuevo

Silphor
Machacateclados
Machacateclados

!!!!!!!!!

Le he puesto comillas a <?php echo "{ruta}"; ?> y ahora si funciona,pero lo extraño es que me pone la ruta $med ruta abajo de todo el código,dejabo de la etiqueta html,sin sustituir.

Avatar Image
@man / @woman
@man / @woman

No hace falta que pongas <?php echo... con poner solo {ruta} valdría.

La plantilla tiene que ser como la página que quieres que muestre ya finalizada.

Silphor
Machacateclados
Machacateclados

Sustitui <?php {ruta}..etc por solamente {ruta},pero el problema persiste:

problema

Come ves,yo lo que quiero es que wallpaper/imagen/imagen.jpg($medruta) este donde pone {ruta},pero el problema es que me lo pone al final de todo el código... sin motivo ninguno.... :(

He probado  cambiar ,"a" por r,r+,w,w+...etc.Pero sige sin desaparece el problema...

Gracias nosetup por aguantarme,y aver si encontramos solución!! :)

Avatar Image
@man / @woman
@man / @woman

Creo que no estas leyendo bien el archivo y haciendo correctamente la sustitución...

Copia el código actual de esta parte... recuerda que en str_replace tienes que hacerlo sobre la variable que contiene el archivo leido por fread.

Silphor
Machacateclados
Machacateclados

Bueno,todavía no he conseguido que reemplaze el {ruta},pero tengo otra duda:

¿como guardo el archivo con otro nombre?

Avatar Image
@man / @woman
@man / @woman

No conozco una instrucción tipo "copy_as", uso esto (ejemplo):

Spoiler:
<?php
$file='example.txt';
$newfile='example.txt.bak';
if(!copy($file,$newfile)){echo "failed to copy $file...\n";}
?>

Con respecto a la variable ruta, no me funciona {ruta}, en cambio:

<?php=$ruta?>

si funcionan

Silphor
Machacateclados
Machacateclados

Gracias NoSetup.org!!!!! Por fin he conseguido reemplazar {ruta} !!!!!!!!!!!!!

Ahora lo que me queda es como guardar el archivo con otro nombre,y ya esta!!!!!!!!!!!!!!

Silphor
Machacateclados
Machacateclados

Gracias GestionXls !!!!!!

Ahora tambien se dublica el archivo!!!! WOW!!!!

Lo que he aprendido hoy en php no lo he aprendido en meses!!! Gracias de nuevo ;-)

Avatar Image
@man / @woman
@man / @woman

GestionXls copy no es recomendable, además que suele estar deshabiltiada.

Silphor es la demostración que con cuatro indicaciones y trabajo se puede hacer cualquier cosa... pero se necesita trabajo y un poco de paciencia y tiempo.

Silphor
Machacateclados
Machacateclados

Anda,es verdad que el copy esta desabilitado,y eso que utilizo servidor por pago...

pero bueno,eso es lo de menos,cambiar el nombre me las arreglare con un loop o algo asi...no lo tengo pensado por ahora...ahora estoy con lo de crear páginas automaticamente y modificar diversas zonas!

Saludos!!!

Avatar Image
@man / @woman
@man / @woman

Yo tengo un server privado y copy también esta restringida.

Para cambiar el nombre, tienes funciones para ello... pero ¿para que quieres cambiar el nombre?... haz la página nueva con el nombre que quieras, en el fopen le pones el que quieras, basado, entiendo, en el nombre del fichero que has subido.

Silphor
Machacateclados
Machacateclados

Yo lo que quiero es que la página se cree con otro nombre...es decir:

la plantilla(medplantilla.php) se guarda con otro nombre sustituyendo el {ruta}.Y si subo otra imagen,se guarda el medplantilla.php sustituyendo de nuevo a {ruta} y con otro nombre distinto,de manera que nunca coincidan.

Con esto lo que pretendo es que mi página se actualize por si sola,lo único que tengo que hacer es subir la imagen por ftp,y lo demas se crea solo,ahorandome trabajo y tiempo.

Por lo tanto! el nombre nunca puede coincidir,para no sobreescribir y borrar lo anterior.

El código que tengo hasta ahora es este:

Spoiler:
$ruta_archivo="wallpaper/medplantilla.php";
$medruta='imagen/'."$mednombre";
$medfile=fopen("$ruta_archivo","a");
$medleido=fread($medfile,1000000);
fread($medfile,1000000);
$medreemplazo=str_replace("{ruta}","$medruta", file_get_contents("wallpaper/medplantilla.php"));
fwrite($medfile,$medreemplazo);
fclose($medfile);

A ver como podré guardar con otro nombre! Gracias a todos!

Avatar Image
@man / @woman
@man / @woman

Tienes varias opciones, tal y como lo estas haciendo o yo al menos entendi que buscabas hacerlo, se basa en hacer una página distinta por cada archivo.

Para ello, el problema de tu código es que haces fwrite sobre el fichero de la plantilla ¿por que? hazlo sobre otro fichero, que creas con fopen, pues te permite crear fichero, de esta manera con ese fopen le das un nombre distinto.

Con esto, pasarías a subir el archivo con el formulario, no con el ftp.

Por supuesto, también puedes hacer una página estándar donde pasaes el nombre de la imagen por parametro, mire a ver si existe y si existe la muestre.

Avatar Image
@man / @woman
@man / @woman

Estaba viendo que copy no figura entre las instrucciones deshabilitadas:

http://soporte.miarroba.com/17451/2[....]nciones-deshabilitadas-en-miarroba/

pero Uds. están hablando de otros servidores (y con copy deshabilitado) así que este comentario no sirve.

Probaré el copy cuando empiecen a funcionar las webs (aparentemente hubo otro deface).


Se me ocurre que podría cargar la nueva página desde un archivo 'plantilla' con fread a una variable, donde van los datos a reemplazar que -previamente- pongas (por ejemplo xxx) y utilizas estas 'marcas' para hacer el reemplazo con los parámetros de la imagen que suben, luego abres con fopen (con el nuevo nombre de archivo), cargas la variable y cierras el archivo. De esa forma te queda la plantilla inalterable para otros usos.


Saludos a ambos.
Silphor
Machacateclados
Machacateclados

Solucionado lo de crear un nuevo fichero por cada imagen!!!

Es muy sencillo: lo que he hecho es tomar el nombre de la imagen,y hacer fopen,es decir:

$mednombre = $HTTP_POST_FILES['medio']['name']; //obtengo el nombre del archivo que subo.

fopen("wallpaper/$mednombre.php","r+"); //Pongo el nombre en la dirección del archivo.php a abrir.

De esta forma,cada vez que subo una imagen con nombre diferente se crea una página php con nombre diferente tambien.

Lo que me gustaría hacer ahora es lo siguiente:

$HTTP_POST_FILES...[NAME] obtiene el nombre junto a la extención.Yo lo que quiero es que no la tenga,es decir en vez de obtener "imagen.jpg" obtenga "imagen" ¿es posible hacer eso?

Me gustaría obtener esto,por que ahora la dirección es por ejemplo: http://wallpapersplus.tk.../imagen.jpg.php

¡¡¡Gracias por toda vuestra ayuda,no lo hubiera hecho sin vosotros!!!:)

Avatar Image
@man / @woman
@man / @woman

Pues nada... haz una búsqueda en el nombre buscando el último punto y cortando hasta allí...

O con la función pathinfo...


Avatar Image
Come y duerme en el foro
Come y duerme en el foro

Utiliza $_FILES , en vez de $_HTTP_POST_FILES. En PHP 6 , te dara error.

Ejemplo para uploader de imagenes :

[code]if ($_FILES['userfile']['type']=="image/jpeg" || ($_FILES['userfile']['type']=="image/pjpeg") )[/code]

El code / code me mata...

Por que no utilizas la funcion substr() para cortar la extension?.

Silphor
Machacateclados
Machacateclados

Subir archivos y obtener nombre sin extension esta arreglado,tambien lo de crear páginas cada vez que subo una imagen,gracias a todos por vuestra ayuda :)

ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES,
te recomendamos abrir un nuevo tema en lugar de responder al actual
Opciones:
Ir al subforo:
Permisos:
TU NO PUEDES Escribir nuevos temas
TU NO PUEDES Responder a los temas
TU NO PUEDES Editar tus propios mensajes
TU NO PUEDES Borrar tus propios mensajes
Temas similares
TemaUsuariosRespuestasVisitasActividad
Por: , el 09/Jul/2008, 00:30
etemad edicrin User 390661 Alvaro_brub GestionXls54kDec/08
Por: , el 26/Feb/2011, 18:54
XabiXab GestionXls earagona andres100587 NoSetup.org277kMar/11
Por: , el 13/Dic/2009, 22:31
mezmerize7 NoSetup.org23kDec/09
Por: , el 09/Nov/2009, 13:39
Javier-ss NoSetup.org22kNov/09
Por: , el 22/Nov/2008, 19:31
River_mdp NoSetup.org33kNov/08