Foros del Web » Programando para Internet » PHP »

problemas para crear funcion

Estas en el tema de problemas para crear funcion en el foro de PHP en Foros del Web. buenas. tengo el siguiente codigo php que funciona a la perfeccion y lo que hace es: - Teniendo en un campo de texto una url ...
  #1 (permalink)  
Antiguo 13/02/2009, 09:32
 
Fecha de Ingreso: noviembre-2006
Mensajes: 51
Antigüedad: 17 años, 5 meses
Puntos: 0
Exclamación problemas para crear funcion

buenas. tengo el siguiente codigo php que funciona a la perfeccion y lo que hace es:
- Teniendo en un campo de texto una url de un archivo (imagen, texto, zip, rar, ...) me lo guarda en el servidor con el nombre que yo le digo y luego me construye la URL de mi dominio para subir la url a la bd, un ejemplo:

- Introduzco en un campo de texto la siguiente url:
http://www.dominioajeno.com/foto.jpg

El script me la guardaría en la carpeta predefinida, y la url quearía por ejemplo asi:
http://www.midominio.com/fotos/foto234.jpg

Pues bien, el caso es que tengo 8 campos para hacer eso y veo un poco inutir copiar el mismo codigo php 8 veces tan solo cambiando variables, pero no tengo mucha idea de como hacer una funcion, llamarla y tal:
los campos de texto serian: $urla, $urlb, $urlc,... y por ultimo $urlh (de la "a" a la "h")

este es el codigo php
Código:
$rutaarchivo="RUTA LOCAL DONDE IRÁ EL ARCHIVO";
$urlarchivo = "http://www.midominio.com/carpeta";
$explotado = explode("/",$urla);
$cuantos=count($explotado); # Esto te dice cuántos elementos contiene el array
$nombrearchivo=$explotado[($cuantos-1)]; #Esto te da el último elemento del array, si el array está numerado, en este caso el nombre completo del fichero
$newnombre = explode(".",$nombrearchivo); #Creamos un explode para delimitar las partes del fichero separadas por . (punto).
$cuantos2=count($newnombre); # Esto te dice cuántos elementos contiene el array
$extension = ".".$newnombre[$cuantos2+1];  #Esto te da el último elemento del array, si el array está numerado, en este caso la extension del fichero.
$descargaarchivo = $rutatorrent.$row[0].$extension;
system('wget -O '.$descargaarchivo.'  '.$urla); 
$urla = $urlimagen.$row[0].$extension;
el script esta siendo utilizado y funciona bien, pero quiero hacerlo con todos los campos.
ojala puedan ayudarme
un saludo y gracias.
  #2 (permalink)  
Antiguo 13/02/2009, 10:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: problemas para crear funcion

Manual de PHP.

Una función básica:
Código php:
Ver original
  1. function foo() {
  2.        echo "bar";
  3. }

Saludos
  #3 (permalink)  
Antiguo 15/02/2009, 07:37
 
Fecha de Ingreso: noviembre-2006
Mensajes: 51
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: problemas para crear funcion

muchas gracias, la funcion ya esta creada pero tengo un problema:
he presupuesto que todas las url iban ser normales tipo: http://domain/archivo.zip por ejemplo, pudienso asi conseguir la extension del fichero, pero acabo de darme cuenta de que mi funcion con las url del tipo: http://domain/getfile/12314 obviamente no funciona, ya que esa url redirecciona a la url que yo busco, como puedo extraer la extension de los archivos descargados con la url "dinamicas", porque la descarga la puedo hacer, pero ahora ese archivo tiene que tomar el nombre (nombre.extension) que yo le diga, y si no se con que nombre se ha descargado , no puedo renombrarlo.

Que me sugeris?
aqui dejo la funcion

Código:
function makeurl($laurl)
{
$rutat="/home/ruta1/ruta2/dir/";
$urldes = "http://www.midominio.com/carpetadescarga/";
$explotado = explode("/",$laurl);
$cuantos=count($explotado); # Esto te dice cuántos elementos contiene el array
$nombrearchivo=$explotado[($cuantos-1)]; #Esto te da el último elemento del array, si el array está numerado, en este caso el nombre completo del fichero
$newnombre = explode(".",$nombrearchivo); #Creamos un explode para delimitar las partes del fichero separadas por . (punto).
$cuantos2=count($newnombre); # Esto te dice cuántos elementos contiene el array
$extension = ".".$newnombre[$cuantos2-1];  #Esto te da el último elemento del array, si el array está numerado, en este caso la extension del fichero.
$fecha = time (); //indica la fecha a partir de la cual generaremos el nombre del archivo
$newnombre2 = date(hisjny, $fecha); // nombre del archivo a partir de la fecha
$descargaarchivo = $rutat.$newnombre2.$extension;
system('wget -O '.$descargaarchivo.'  '.$laurl); 
$newurl = $urldes.$newnombre2.$extension;
return $newurl;
}
saludos y gracias
  #4 (permalink)  
Antiguo 15/02/2009, 08:31
machoman112233
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problemas para crear funcion

Lo que puedes hacer es que en la base de datos guardas la el nombre y la extension por separado... despues haces una consulta para el nombre del archivo y sacas el nombre y la extension. Los ajuntas y agregas los demas datos para tener la url completa...
  #5 (permalink)  
Antiguo 15/02/2009, 08:49
 
Fecha de Ingreso: noviembre-2006
Mensajes: 51
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: problemas para crear funcion

a ver, ese no es el problema, el problema es el siguiente:
yo quiero descarga un archivo desde un servidor externo cuya direccion por ejemplo es:
http://dominioajeno.com/get/45454 que redirecciona a la url http://dominioajeno.com/archivo.zip , por ejemplo, pues bien, yo a mi script le doy la primera direccion y tendria que sacar la extension, pero no se como hacerlo, le puedo decir que lo guarde pero neceisot saber la extension.

se os ocurre algo?
saludos y gracias
  #6 (permalink)  
Antiguo 15/02/2009, 17:16
 
Fecha de Ingreso: noviembre-2006
Mensajes: 51
Antigüedad: 17 años, 5 meses
Puntos: 0
Pregunta

perfecto, lo he hecho mediante mime_content_type, seguimos avanzando, ahora tengo una serie de variables ($urla, $urlb, $urlc, $urld, $urle, $urlf, $urlg, $urlh) y quisiera meterlas en un for para que hag alo siguiente:

Código:
	
$cadena = substr ($urla, 0,1); // devuelve la primera letra de la url
	$cadena = strtolower($cadena); // pasa a minuscula si la letra es mayuscula
	if ($cadena=="h")
	{
	$urla = makeurl($urla);

	}

donde $urla, seria el valor del array claro, es decir, de urla, de urlb, ....

he visto y creo que mediante un bucle foreach quizás sea posible, pero no estoy seguro, y con for, lo he intentado y nada.

Saludos y gracias

Con el lio de los dominios se ha perdido un poco el post...
¿Alguien puede ayudarme?
saludos y nuevamente, gracias.

Última edición por GatorV; 24/02/2009 a las 17:10
  #7 (permalink)  
Antiguo 24/02/2009, 17:05
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problemas para crear funcion

estas como que intentando algo de magia.... eso no es posible, no asi...

dices que quieres adivinar la extension, de un archivo ajeno... con solo un ID numerico

dime tu que piensas.... ¿es posible, o no???





NOTA que dije.... "adivinar", eso es lo que intentas...
  #8 (permalink)  
Antiguo 24/02/2009, 17:27
 
Fecha de Ingreso: octubre-2003
Ubicación: Cerca de una wifi o 3G
Mensajes: 328
Antigüedad: 20 años, 5 meses
Puntos: 4
Respuesta: problemas para crear funcion

es posible pero yo lo veo bastante complicado por que muchos de estos sitios ocupan este tipo de url justamente para evitar que las copien :)

si fuera algo inevitable yo haria algo con curl, seguiria el link hasta dar con un header del tipo filename

no te sirve para nada mime_content_type eso es para archivos locales, incluso ni siquiera es efectivo para muchos archivos.

curl es potente si ocupas curl de seguro podras mejorar bastante lo que ya tienes
__________________
Ayuda!! firmar y compartir
No a la privatizacion de semillas http://www.thepetitionsite.com/1/no-...n-de-semillas/
Mas info: http://chilesintransgenicos.cl/
  #9 (permalink)  
Antiguo 25/02/2009, 01:43
 
Fecha de Ingreso: noviembre-2006
Mensajes: 51
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: problemas para crear funcion

pues lo he hecho con mime_content_type, y os dire la razon, solo pueden ser 3 tipos de archivos:
zip, rar y otro tipo el cual se escondería tras "application/octet-stream" es decir, hay solo 3 posibilidades, con lo cual esta funcion me viene como anillo al dedo.
Ahora lo que necesito es que a traves de un for, pase por todas las variables, no solo por $urla, sino tambien por $urlb, $urlc, $urld, $urle, $urlf, $urlg, $urlh:
la de $urla, la hice asi:
Código:
$cadena = substr ($urla, 0,1); // devuelve la primera letra de la url
	$cadena = strtolower($cadena); // pasa a minuscula si la letra es mayuscula
	if ($cadena=="h")
	{
	$urla = makeurl($urla);

	}
ahora lo que tengo que hacer es que ese codigo lo haga por todo esas variables
espero puedan ayudarme, porque lo intento con for pero no se por donde cogerlo.
un saludo y gracias.
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 02:56.